Агуулгын хүснэгт:

ESP8266 Шууд мэдээллийн холбоо: 3 алхам
ESP8266 Шууд мэдээллийн холбоо: 3 алхам

Видео: ESP8266 Шууд мэдээллийн холбоо: 3 алхам

Видео: ESP8266 Шууд мэдээллийн холбоо: 3 алхам
Видео: ESP8266 ESP01 WI-FI-UART | Программирование LDmicro-Roboremo 2024, Долдугаар сарын
Anonim
ESP8266 Шууд мэдээллийн харилцаа холбоо
ESP8266 Шууд мэдээллийн харилцаа холбоо

Танилцуулга

Arduinos болон nRF24l01 модулиудтай зарим төслүүдийг хийж байхдаа ESP8266 модулийг ашигласнаар бага зэрэг хүчин чармайлтаа хэмнэх үү гэж бодож байсан. ESP8266 модулийн давуу тал нь самбар дээрх микро хянагчтай тул нэмэлт Arduino самбар шаардлагагүй болно. Нэмж дурдахад ESP8266 -ийн санах ойн хэмжээ илүү том бөгөөд хурдны хувьд ESP8266 нь Arduino -ийн 16 МГц -ийн оронд хамгийн ихдээ 160 МГц дээр ажилладаг. Мэдээж сөрөг талууд бас бий.

ESP8266 нь зөвхөн 3.3V дээр ажилладаг, цөөн тооны зүүтэй бөгөөд Arduino -д байдаг сайхан аналог оролт байхгүй байна (энэ нь нэг л байдаг, гэхдээ зөвхөн 3.3В биш 1.0В хүчдэлтэй). Нэмж дурдахад Arduino + nRF24l01 -ийн өөр олон кодын жишээ байдаг, ялангуяа ESP8266 -ийн хувьд шууд өгөгдөл дамжуулах тухай байдаг.

Төсөл хэрэгжүүлэхээр төлөвлөж байхдаа WWW болон HTTP -ийн бүх зүйлгүйгээр хоёр ESP8266 хооронд өгөгдөл дамжуулах хурдан, хөнгөн сэдвийг авч үзсэн.

Интернэтээс жишээ хайж байхдаа (доорх кодын ихэнх хэсгийг сүлжээнээс янз бүрийн газраас сонгож авсан) "Иймэрхүү байдлаар хий" гэсэн гоё жишээгүйгээр шууд өгөгдөл дамжуулах ажлыг хэрхэн яаж хийх вэ гэсэн олон асуулт гарч ирэв. Зарим жишээ код байсан боловч яагаад энэ нь ажиллахгүй байгаа талаар ихэвчлэн асуудаг.

Тиймээс уншиж, ойлгохыг хичээсний дараа би хоёр ESP8266 хооронд өгөгдлийг хурдан бөгөөд хялбар дамжуулах боломжийг олгодог доорх жишээг үүсгэв.

Алхам 1: Хил хязгаар ба суурь мэдээлэл (TCP ба UDP)

Тэнд хүрэхийн тулд nRF24l01 -тэй харьцуулахад зарим хил хязгаарыг тодруулах шаардлагатай болно.

ESP8266 -ийг Arduino орчинд ашиглахын тулд ашиглах үндсэн номын сан нь ESP8266WiFi.h юм. Эдгээр нь өөр байж болох ч ихэнх жишээ дээр дурдсан зүйлийг ашигладаг. Үүнийг ашиглахдаа та харилцаа холбоогоо WiFi түвшинд хүргэх хэрэгтэй.

Тиймээс харилцахын тулд дор хаяж хандалтын цэг (AP) / сервер ба үйлчлүүлэгч байх шаардлагатай. AP нь сүлжээний нэр, IP хаягийг өгдөг бөгөөд үйлчлүүлэгч энэ сервертэй холбогдох болно.

NRF24l01 -ийг харьцуулж үзэхэд хоёр төгсгөлийн код нь бараг ижил байдаг (дамжуулах сувгаас бусад), ESP8266 -ийн код нь үндсэндээ өөр бөгөөд нэг нь AP, нөгөө нь үйлчлүүлэгчээр тохируулагдсан байдаг.

Дараагийн сэдэв бол nRF24l01 рүү зарим байтыг илгээхийн оронд ESP8266 дамжуулах протоколыг ажиглах шаардлагатай байна.

TCP ба UDP гэсэн түгээмэл хэрэглэгддэг хоёр протокол байдаг.

TCP (дамжуулах хяналтын протокол) нь сервер болон үйлчлүүлэгч хооронд алдагдалгүй дамжуулах боломжийг олгодог протокол юм. Протокол нь алдагдсан пакетуудыг таних, дахин дамжуулахын тулд "гар барих" (хоёр тал хооронд илгээсэн олон туг, аккандол), пакетийн дугаарлалт, илрүүлэлтийг агуулдаг. Нэмж дурдахад эдгээр бүх гар барилтыг ашиглан протокол нь сүлжээнд олон пакет нэгэн зэрэг илгээгдсэний улмаас өгөгдөл алдагдахаас сэргийлдэг. Өгөгдлийн пакетууд хүлээн авах хүртэл хүлээнэ.

UDP (Хэрэглэгчийн мэдээллийн диаграммын протокол) -д гар барих, пакетийн дугаарлалт, дахин дамжуулалт байхгүй байна. Үүний зардал нь бага тул холболтыг хадгалахын тулд бүх гар барих шаардлагагүй болно. UDP нь зарим үндсэн алдааг илрүүлдэг боловч залруулга хийдэггүй (эвдэрсэн багцыг зүгээр л хаячихдаг). Хүлээн авагч тал өгөгдлийг хүлээн авах эрх чөлөөтэй байгаа бол мэдэлгүйгээр мэдээлэл илгээдэг. Үүний зэрэгцээ талууд шаардлагатай үед өгөгдлийг илгээдэг тул олон пакетууд мөргөлдөх боломжтой. Бүх гар барихыг орхисноор UDP -ийн "multicast" ба "цацах" гэсэн нэг нэмэлт онцлог бий. "Multicast" тохиолдолд өгөгдлийн пакетийг урьдчилан тодорхойлсон гишүүдэд илгээдэг бол "цацах" тохиолдолд бүх холбогдсон гишүүдэд өгөгдлийн пакет илгээдэг. Энэ нь дамжуулалтыг олон гишүүн хүлээн авах тохиолдолд өгөгдөл дамжуулалтыг мэдэгдэхүйц бууруулдаг (жишээлбэл, видео хүлээн авагч руу олон хүлээн авагч руу дамжуулах эсвэл одоогийн цагийг олон холбогдсон төхөөрөмж рүү илгээх гэх мэт).

Youtube дээр үүнээс ч илүү сайн тайлбарласан сайн видео бичлэгүүд байдаг.

Тиймээс өгөгдөл илгээхдээ өөрийн хэрэгцээг мэдэх нь чухал юм.

  • авлигагүй өгөгдөл, олон үе тэнгийнхний гар барих замаар удирдах → TCP
  • бодит цагийн мэдээлэл, хурдан холболт → UDP

Би анх TCP дээр суурилсан харилцаа холбоог (нэг сервер ба нэг үйлчлүүлэгчийн хооронд) хэрэгжүүлж эхэлсэн. Үүнийг туршиж үзэхэд дамжуулах явцад асуудалтай тулгарсан. Эхэндээ өгөгдлийг хурдан солилцдог байсан бол хэсэг хугацааны дараа хурд эрс буурсан. Энэ бол TCP хандлагын ердийн асуудал байсан гэж би дүгнэсэн (энэ нь буруу байсан), тэгээд UDP дээр суурилсан шийдэлд шилжсэн. Эцэст нь би хоёуланг нь ажиллуулахаар хандсан. Тиймээс шийдлийг хоёуланг нь өгөх болно.

Доорх тоймууд нь TCP ба UDP -ийн нийтлэг шинж чанартай байдаг:

  • одоо байгаа WiFi сүлжээнээс хараат бус байна. Тиймээс энэ нь интернет болон холбогдсон чиглүүлэгчээс хол байгаа хаана ч хамаагүй ажиллах болно.
  • ASCII өгөгдлийг цуваа дэлгэцээр хэвлэхээр илгээж байна.
  • millis () функцээс олж авсан өгөгдлийг дамжуулах хурдыг шинжлэх зорилгоор илгээдэг.
  • олон үйлчлүүлэгчид туршиж үзээгүй (сүлжээг яг одоо тохируулах тоног төхөөрөмжтэй тул)

Алхам 2: Техник хангамж

Техник хангамж
Техник хангамж
Техник хангамж
Техник хангамж
Техник хангамж
Техник хангамж
Техник хангамж
Техник хангамж

Бүх тохиргоог шалгахын тулд би хоёр ESP8266 модулийг ашигласан. Нэг модуль нь ESP-01 + USB-UART адаптер юм. Нөгөө модуль нь USB холболт, хүчдэлийн зохицуулагч, унтраалга, LDR, олон өнгийн LED гэх мэт хөгжилтэй зүйлсийг агуулсан ESP-12 дээр суурилсан модуль юм.

ESP-01-ийн USB-to-UART модулийг програмист болгон ашиглахын тулд бага зэрэг өөрчлөх шаардлагатай болсон (дахин Youtube-ээс Csongor Varga).

Ноорог ажиллуулахын тулд та ESP8266 номын санг суулгах хэрэгтэй (интернетийн олон газарт тайлбарласны дагуу). Аль ч тохиолдолд (TCP ба UDP) сервер, үйлчлүүлэгчийн ноорог тус бүр байдаг. Аль ноорог аль модуль дээр ачаалагдсан нь хамаагүй.

Талархал

Дээр дурдсанчлан ноорогууд нь вэб дээрээс олсон олон хэсгүүд дээр үндэслэсэн болно. Би хаанаас юу олж авснаа, анхны код гэж юу болохыг, юу өөрчилснөө дахин санахгүй байна. Тиймээс би бүх агуу жишээг нийтлүүлсэн том нийгэмлэгт талархал илэрхийлэхийг хүссэн юм.

Алхам 3: Ноорогууд

Код нь тус бүрдээ хоёр тайлбараас бүрдэнэ (тайлбарласны дагуу), серверийн ноорог ба үйлчлүүлэгчийн тойм, TCP ба UDP тус бүрт зориулагдсан болно.

Зөвлөмж болгож буй: