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



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 11652
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
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)
Solárne napájanie ESP32 - WiFi / LoRaWAN
[ 15.9.2023] (príspevkov 0)
BLE Beacon na ESP32 - vysielanie vlastný...
[ 22.8.2023] (príspevkov 0)
Node Mold - detektor plesne od eLOC8
[ 19.7.2023] (príspevkov 0)
Český Kickstarter ESP32 projekt a čo ma ...
[ 10.3.2023] (príspevkov 0)
Senzorový uzol pre hladinomer - ESP32 s ...
[ 25.12.2022] (príspevkov 0)
ESP-IDF v simulátore Wokwi - ESP32
[ 26.9.2022] (príspevkov 0)
Senzory pre záznam výšky hladiny vody
[ 2.9.2022] (príspevkov 0)