blogy logo
login PRIHLÁS SA
BLOG deadawp
ČLÁNKY
DISKUSIE
3
SLEDUJETE BLOG
Programátor
deadawp



Ovládanie ESP32 prostredníctvom UDP datagramov
pridal deadawp 30.8. 2019 o 23:42 (naposledy upravené 23.12. 2024 o 15:26)



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/

Čekol som aj v roku 2024 s najnovším Arduino Core 3.0.X a pôvodný sketch z roku 2019 je stále plne kompatibilný a nevyžaduje žiadnu zmenu v programovej implementácii. Trochu sa zmenilo rozhranie Packet Sendera v časti kde sa odosielajú dáta treba prestaviť protokol, keďže predvolený je TCP. V pôvodnom článku som to nespomínal, ale zaujímavosť nastane, ak si v Packet Senderi nastavíte port UDP servera na 1234 a do programu ESP32 pred alebo za delay doplníte udp.broadcast("Anyone here?");.

Na tomto porte 1234 bude vysielať ESP32 broadcastový datagram v 1 sekundovej perióde, ktorý príjmu všetky zariadenia s počúvaním na tomto porte. Obsah datagramu je textový reťazec Anyone here? To môže nájsť využitie pri rôznych mesh UDP aplikáciách, kedy je možné určiť root node pre prenos do cieľovej destinácie / internetu a podobne.



Prístupov 14022
Kvalita článku
hlasov 0

PRÍSPEVKY
SLEDOVAŤ
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
Metódy nastavenia času pre RTC
[ 27.1.2025] (príspevkov 0)
Kamencové jazero - monitorovanie hladiny...
[ 19.1.2025] (príspevkov 0)
Úpravy QR skenera - Instascan HTML5
[ 14.1.2025] (príspevkov 0)
Tester vstrekovačov s IRF520
[ 9.1.2025] (príspevkov 0)
ESPlan - PHY Ethernet termostat
[ 31.12.2024] (príspevkov 0)
ESPlan od Laskakitu pre Watmonitor
[ 28.12.2024] (príspevkov 0)
Ako získať ESP32-C5 ešte pred CES 2025?
[ 27.12.2024] (príspevkov 0)
RFID DOMINATOR 2.0 - XLoader, DEMO firmw...
[ 25.12.2024] (príspevkov 0)
Zaujímavé použitie NFC tagov
[ 23.12.2024] (príspevkov 0)
Dymový generátor do 20€
[ 18.12.2024] (príspevkov 0)