Mundarija:
Video: ESP8266 to'g'ridan -to'g'ri ma'lumotlar bilan aloqa: 3 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:26
Kirish
Arduinos va nRF24l01 modullari bilan bir qancha loyihalarni amalga oshirganimda, uning o'rniga ESP8266 moduli yordamida bir oz kuch sarflay olamanmi, deb o'ylardim. ESP8266 modulining afzalligi shundaki, uning bortida mikro -kontroller bor, shuning uchun qo'shimcha Arduino kartasi kerak emas. Bundan tashqari, ESP8266 xotira hajmi ancha katta va ESP8266 Arduino 16 MGts o'rniga 160 MGts tezlikda ishlaydi. Albatta, ba'zi salbiy tomonlari bor.
ESP8266 faqat 3.3V kuchlanish bilan ishlaydi, pinlari kamroq va Arduino -da mavjud bo'lgan analog analoglari yo'q (u faqat bitta, lekin faqat 3,3V emas, balki 1,0 V uchun). Bundan tashqari, Arduino + nRF24l01 uchun boshqa ko'plab misollar mavjud, keyin ESP8266 uchun, ayniqsa to'g'ridan -to'g'ri ma'lumotlarni uzatish haqida.
Shunday qilib, loyihani nazarda tutgan holda, men barcha WWW va HTTP ma'lumotisiz ikkita ESP8266 o'rtasida tez va engil ma'lumotlarni uzatish mavzusini ko'rib chiqdim.
Internetda misollar qidirayotganda (quyida keltirilgan kodning ko'p qismi tarmoqdan har xil joylardan tanlangan), men qanday qilib "shunday qil" misollarisiz to'g'ridan -to'g'ri ma'lumotlarni uzatishni amalga oshirish haqida ko'plab savollarga duch keldim. Misol kodi bor edi, lekin asosan nima uchun ishlamayotganligi bilan bog'liq.
Biroz o'qib, tushunishga harakat qilgandan so'ng, men ikkita ESP8266 o'rtasida ma'lumotlarni tez va sodda uzatishga imkon beradigan quyidagi misollarni yaratdim.
1 -qadam: Chegaralar va fon (TCP va UDP)
U erga borish uchun nRF24l01 bilan solishtirganda ba'zi chegaralarni aniqlashtirish kerak.
ESP8266 -ni Arduino muhitida ishlatish uchun asosiy kutubxona - ESP8266WiFi.h. Turli xil bo'lishi mumkin, lekin ko'pchilik misollarda yuqorida aytilganlardan foydalaniladi. Buni ishlatganda, siz Wi -Fi tarmog'iga ulanishingiz kerak.
Shunday qilib, muloqot qilish uchun hech bo'lmaganda kirish nuqtasi / server va mijoz bo'lishi kerak. AP tarmoq nomi va IP manzillarini beradi va mijoz bu serverga ulanadi.
Shunday qilib, nRF24l01 solishtirildi, bu erda har ikki uchining kodi ham deyarli bir xil (uzatish kanallaridan tashqari), ESP8266 kodi tubdan farq qiladi, chunki biri AP sifatida, ikkinchisi mijoz sifatida tuzilgan.
Keyingi mavzu shundaki, nRF24l01 ga bir necha bayt yuborishning o'rniga, ESP8266 uzatish protokollariga rioya qilish kerak.
Umumiy ishlatiladigan ikkita protokol mavjud: TCP va UDP.
TCP (uzatishni boshqarish protokoli)-bu server va mijoz o'rtasida uzluksiz uzatishni ta'minlaydigan protokol. Protokolda "qo'l siqish" (ikki tomon o'rtasida yuborilgan ko'plab bayroqlar va tasdiqlar) va yo'qolgan paketlarni aniqlash va qayta yuborish uchun paketlarni raqamlash va aniqlash kiradi. Bundan tashqari, barcha qo'l siqishlardan foydalangan holda, protokol tarmoqdagi bir vaqtning o'zida ko'plab paketlar yuborilishi tufayli ma'lumotlarni yo'qotilishini oldini oladi. Ma'lumotlar to'plami ularni qabul qilishini kutadi.
UDP (Foydalanuvchi Datagram Protokoli) barcha qo'l siqish, paketlarni raqamlash va qayta uzatishga ega emas. Shuning uchun uning ustki qismi kichikroq va aloqani saqlab qolish uchun barcha qo'l siqishlarga hojat yo'q. UDP ba'zi asosiy xatolarni aniqlashni o'z ichiga oladi, lekin hech qanday tuzatish yo'q (buzilgan paket o'chiriladi). Ma'lumotlar, agar qabul qiluvchi tomon ma'lumotni olish huquqiga ega bo'lsa, bilmasdan yuboriladi. Shu bilan birga, bir nechta paketlar to'qnashishi mumkin, chunki har bir tomon kerakli vaqtda ma'lumotlarni yuboradi. Barcha qo'l siqishlarni o'tkazib yubormasdan, UDP -ning "multicast" va "translyatsiya" deb nomlangan yana bir yaxshi xususiyati bor. "Multicast" holatida ma'lumotlar paketlari oldindan belgilangan a'zolar guruhiga yuboriladi, "translyatsiya" holatida ma'lumotlar paketlari barcha ulangan a'zolarga yuboriladi. Bu oqimlar bir nechta a'zo tomonidan qabul qilinsa (masalan, bir nechta qabul qiluvchilarga video tasmasini yuborish yoki bir nechta ulangan qurilmalarga joriy vaqtni yuborish orqali) ma'lumotlarni uzatishni sezilarli darajada kamaytiradi.
Youtube -da buni yaxshiroq tushuntiradigan yaxshi videolar bor.
Shunday qilib, ma'lumotlarni yuborishda sizning ehtiyojlaringizni bilish juda muhim:
- buzilmagan ma'lumotlar, qo'l siqish orqali bir nechta tengdoshlarini boshqarish → TCP
- real vaqtda ma'lumotlar, tezkor ulanish → UDP
Men birinchi bo'lib TCP -ga asoslangan aloqani amalga oshirishdan boshladim (bitta server va bitta mijoz o'rtasida). Sinov paytida men uzatishda to'xtab qoladigan muammolarga duch keldim. Avvaliga ma'lumotlar tez almashildi, keyin esa tezlik keskin pasayib ketdi. Men bu TCP yondashuvining odatiy muammosi (bu noto'g'ri!), Degan xulosaga keldim, keyin UDPga asoslangan echimga o'tdim. Oxir -oqibat men ikkalamiz ham ishga yaqinlashdik. Shunday qilib, ikkala echim ham ta'minlanadi.
Quyidagi eskizlar TCP va UDP uchun umumiydir:
- har qanday mavjud Wi -Fi tarmog'idan mustaqil. Shunday qilib, u Internetdan va ulangan routerlardan uzoqda joylashgan joyda ishlaydi.
- ketma -ket monitor orqali chop etish uchun ASCII ma'lumotlarini yuborishadi.
- millis () funktsiyasidan olingan ma'lumotlarni uzatish tezligini tahlil qilish uchun yuboradi.
- bir nechta mijozlar uchun sinovdan o'tkazilmagan (hozirda tarmoqni sozlash uchun uskunalar mavjudligi sababli)
2 -qadam: Uskuna
Butun sozlamani sinab ko'rish uchun ikkita ESP8266 moduli ishlatilgan. Bitta modul-ESP-01 + USB-UART adapteri. Boshqa modul-bu USB ulanishi, kuchlanish regulyatori va kalitlar, LDR va ko'p rangli LED kabi qiziqarli narsalarni o'z ichiga olgan ESP-12 moduli.
ESP-01 uchun USB-UART modulini dasturchi sifatida ishlatish uchun biroz o'zgartirish kerak edi (yana Youtube tomonidan Csongor Varga).
Eskizlarni ishga tushirish uchun siz ESP8266 kutubxonalarini o'rnatishingiz kerak (Internetning ko'p joylarida tasvirlanganidek). Ikkala holatda ham (TCP va UDP) har biri server va mijoz eskiziga ega. Qaysi eskiz qaysi modulga yuklanganligi muhim emas.
Rahmatlar
Yuqorida aytib o'tilganidek, eskizlar Internetda topilgan ko'plab qismlarga asoslangan. Qayerdan nimani topganimni, asl kod nima ekanligini yoki nimani o'zgartirganimni eslay olmayman. Shunday qilib, men barcha ajoyib misollarni nashr etgani uchun katta jamoaga minnatdorchilik bildirmoqchiman.
3 -qadam: Eskizlar
Kod har biri ikkita eskizdan (tushuntirilgandek), har biri TCP va UDP uchun server eskizidan va mijoz eskizidan iborat.
Tavsiya:
Qayta aloqa regulyatori bilan ajoyib Blynk interfeysi bilan Esp8266 asosidagi Boost konvertori: 6 qadam
Qayta aloqa regulyatori bilan ajoyib Blynk interfeysi bilan Esp8266 asosidagi Boost konvertori: Ushbu loyihada men sizga shahar kuchlanishlarini kuchaytirishning samarali va keng tarqalgan usulini ko'rsataman. Men sizga Nodemcu yordamida kuchaytirgichni qurish qanchalik oson bo'lishini ko'rsataman. Keling, uni quraylik. Shuningdek, u ekrandagi voltmetrni va teskari aloqa ma'lumotlarini o'z ichiga oladi
Barbekyu Pi (ma'lumotlar vizualizatsiyasi bilan!): 4 qadam (rasmlar bilan)
Barbekyu Pi (Ma'lumotni vizualizatsiya qilish bilan!): Barbekyu bilan tanishish odatda sevimli go'shtingizni tayyorlash uchun bilvosita issiqlikni ishlatishning sekin jarayonini bildiradi. Ovqat pishirishning bu usuli juda mashhur bo'lsa -da, ayniqsa, AQShda - bu, ba'zilar uchun juda jiddiy, deb hisoblaydigan narsalarga ega
Vibratsiyali teskari aloqa bilan kengaytiriladigan tugmani qo'llash: 7 qadam (rasmlar bilan)
Vibratsiyali teskari aloqa bilan kengaytiriladigan tugmachani qo'llash: Bu darslikda biz birinchi navbatda kengaytirilgan tugma yordamida tebranish dvigatelini boshqarish uchun Arduino Uno -dan qanday foydalanishni ko'rsatamiz. Bosish tugmachalari bo'yicha qo'llanmalarning ko'pi jismoniy dastur panelidagi tugmachani o'z ichiga oladi, bu qo'llanmada esa tugma
Uzoq masofali, 1,8 km, Arduino-Arduino-HC-12 bilan simsiz aloqa: 6 qadam (rasmlar bilan)
Uzoq masofali, 1,8 km, Arduino-Arduino-HC-12 bilan simsiz aloqa. Bu yo'riqnomada siz Arduino bilan ochiq havoda 1,8 kmgacha uzoq masofada qanday muloqot qilishni o'rganasiz. HC-12-simsiz ketma-ket port. juda foydali, juda kuchli va ishlatish uchun qulay bo'lgan aloqa moduli. Avval siz yugurasiz
Solderdoodle Plus: Sensorli boshqaruvli lehimli dazmol, LED teskari aloqa, 3D bosma quti va USB bilan qayta zaryadlanuvchi: 5 qadam (rasmlar bilan)
Solderdoodle Plus: Sensorli boshqaruv, Led teskari aloqa, 3D bosma quti va USB bilan qayta zaryadlanuvchi lehimli dazmol: Solderdoodle Plus uchun Kickstarter loyiha sahifasiga tashrif buyuring, simsiz USB qayta zaryadlanuvchi issiq ko'p asbobli va ishlab chiqarish modeliga oldindan buyurtma bering! Https: //www.kickstarter.com/projects/249225636/solderdoodle-plus-cordless-usb-rechargeable-ho