blogy logo
login PRIHLÁS SA
BLOG deadawp
ČLÁNKY
DISKUSIE
2
SLEDOVAŤ BLOG
Programátor
deadawp



Ovládanie ESP32 prostredníctvom UDP datagramov
pridal deadawp 30.8. 2019 o 23:42



Dnes by som rád poukázal na možnosť ovládať vývojovú dosku ESP32 zasielaním UDP správ pre jednoduché ovládanie ZAP/VYP. Je to jedna z najjednoduchších metód, ako odosielať dáta, spracovať ich a na základe prijatej informácie vykonať akciu (callback). ESP32 je platformou, ktorá sa vo väčšine prípadov v súvislosti s WiFi konektivitou využíva ako webserver, alebo webclient, ktorý sa pripája na vzdialený server a POST, GET metódou, prípadne s integráciou MQTT protokolu odosiela dáta vzdialenému serveru / hostovi.

Knižnice pre ESP32 písané v C++, tzv. Arduino core (framework) umožňujú využiť aj asynchrónne UDP knižnice pre odosielanie a prijímanie dát v sieti. Zaujímavosťou je asynchrónnosť, keďže fungujú na "pozadí" a používateľ nemusí programovať zložité funkcie pre prijatie pripojenia, spracovanie informácie a pod. Aby sme dáta dokázali do mikrokontroléra ESP32 odoslať, musíme využiť nejaký typ klienta. Jedným z najrozšírenejších je Packet Sender, ktorý má podporu pre Windows, MacOS a Unix systémy.

Tento univerzálny klient podporuje rôzne typy komunikácie, napr. UDP, podporuje aj TCP spojenia, vrátane možnostii integrácie SSL, je teda možné vykonať požiadavku aj na zabezpečenom porte s využitím certifikátu certifikačnej autority, klientského certifikátu, serverového certifikátu (ak Packet Sender prijíma dáta ako server). Packet Sender pre našu implementáciu vyžaduje v nastaveniach zapnúť mód pre pomalé zariadenia. Pri testovaní ESP32 nestihlo spracovať datagram prichádzajúci z Packet Sendera, ak nebola možnosť s pridaním pauzy 500ms zvolená.

Packet Sender má jednoduché rozhranie, ktoré dovoľuje špecifikovať protokol prenosu, umožňuje vložiť cieľovú IP adresu zariadenia (ESP32), prenosový port a v poslednom rade aj odosielanú informáciu (text). UDP negarantuje doručenie správ. Neobsahuje CRC - kontrólny súčin odosielaných dát. Z toho dôvodu sa ESP32 snaží samostatnou UDP správou odpovedať na IP adresu a port odosielateľa, pre potvrdenie prijatia správy.

Avšak aj tu platí, že správa nemusí doputovať do Packet Sendera (doručenie nie je garantované ako u TCP). V logu je možné vidieť odosielané dáta a zároveň prijaté dáta. Odozva na odoslanú informáciu je pomerne malá, cca 70ms. Počas tejto doby ESP32 stihne spracovať datagram, aplikovať daný stav na výstupný vývod (ovláda diódu, relé) a odoslať spätný datagram na IP adresu a port odosielateľa. V tomto prípade ESP32 z IP adresy 192.168.1.9 a portu 1234 na cieľovú IP adresu Packet Sendera 192.168.1.5 a port 51282.

ESP32 informuje používateľa o prijatých dátach a nastavení stavu GPIO aj prostredníctvom Sériovej linky (UART-u). Výpis informuje aj o type datagramu (Unicast, Multicast, Broadcast), zdrojovej IP adrese vrátane portu, cieľovej IP adrese vrátane portu, prijatú správu (ZAP / VYP pre aplikáciu stavu GPIO) spolu s jej dĺžkou v bajtoch.

Schéma zapojenia:

Viac zaujímavých projektov a zdrojový kód pre ESP32 k tomuto projektu je možné nájsť na adrese:
http://arduino.clanweb.eu/udp-control-esp32.php
Packet Sender je možné stiahnuť z adresy: https://packetsender.com/



Prístupov 12377
Kvalita článku
hlasov 0

PRÍSPEVKY
SLEDUJETE
Prosím prihláste sa pre možnosť pridania komentáru.
Prihláste sa, alebo použite facebook login facebook login
ĎALŠIE ČLÁNKY V BLOGU
Oplatí sa teplovodivá pasta z Aliexpress...
[ 4.4.2024] (príspevkov 0)
Recenzia 3D podznačky BEZ KOMPRESE
[ 4.4.2024] (príspevkov 0)
GTA IV fix spustenia na Windowse 10 N
[ 24.3.2024] (príspevkov 0)
RFID DOMINATOR licencia na predaj
[ 4.1.2024] (príspevkov 0)
ATtiny85 Digispark - programovanie, použ...
[ 28.12.2023] (príspevkov 0)
Prečo by som si už nekúpil ESPD-35 2.0 /...
[ 26.12.2023] (príspevkov 0)
ATtiny85 - programovanie Arduino as ISP
[ 19.12.2023] (príspevkov 0)
MasterTherm - webscraper ESP32
[ 25.11.2023] (príspevkov 0)
RFID DOMINATOR 2.0 - rozdiely s 1.0
[ 15.11.2023] (príspevkov 0)
Rozšírená realita (AR) - IoT dashboard
[ 29.10.2023] (príspevkov 0)