Projekt je dostupný zadarmo na stiahnutie!
ESP32 UDP Command Code Packet Sender Scheme

Ovládanie ESP32 prostredníctvom Windows aplikácie zasielaním datagramov

  • Softvér navrhnutý pre jednoduché ovládanie výstupu na vyžiadanie používateľa
  • Rozhranie pre odosielanie príkazov je akýkoľvek UDP klient, ktorý vie zasielať UDP správu - datagram, napríklad Packet Sender na Windowse.
  • Packet Sender vyžaduje úpravu konfigurácie pre validné odosielanie UDP datagramov. Navolenie možnosti pre pridanie 500ms pauzy (tzv. mód pre pomalé zariadenia).
  • Packet Sender konfigurácia - pridanie pauzy pre pomalé zariadenia
  • Nastavenie Packet Sendera je jednoduché, vyžaduje sa zadanie IP adresy, na ktorú sa dáta odosielajú, vrátane portu. (IP adresa ESP32 - dostupná vo výpise Sériovej linky - UART-u)
  • Výpis sériového monitoru - obsahuje IP adresu ESP32 v LAN sieti Packet Sender - používateľské rozhranie, tabuľka prijatých a odoslaných datagramov
  • UDP negarantuje doručenie správ. Z toho dôvodu ESP32 po obdržaní správy (ZAP/VYP) odošle správu odosielateľovi o úspešnosti prenosu. (Odosielateľ však môže správu zahodiť, alebo ju nedostať)
  • Vo výsledku je možné na vyžiadanie ovládať výstup, či už v podobe diódy, alebo relé so spínaním výkonových spotrebičov.
  • Zaujímavosťou je použitie asynchrónnej knižnice pre ESP32, kedy funkcionalita beží na pozadí bez nutnosti používateľa programovať prenosové prvky systému.
  • Packet Sender je možné stiahnuť na adrese: https://packetsender.com/
  • Program ESP32 (Arduino Core)

    /*|----------------------------------------------------------------------------|*/
    /*|SKETCH PRE UDP OVLADANIE ESP32 PROSTREDNICTVOM PROGRAMU PACKET SENDER       |*/
    /*|VYHOTOVIL: MARTIN CHLEBOVEC                                                 |*/
    /*|PODPOR PROJEKT PRE VIAC VARIANT, SUPPORT: https://paypal.me/chlebovec       |*/
    /*|Doska: ESP32 DevkitC v4 / ESP32 Devkit v1                                   |*/
    /*|----------------------------------------------------------------------------|*/
    
    #include "WiFi.h"
    #include "AsyncUDP.h"
    const char* ssid = "WiFi_meno";
    const char* pass = "heslo_WiFi";
    const int rele = 23;
    AsyncUDP udp;
    
    void setup()
    {
      Serial.begin(115200);
      pinMode(rele, OUTPUT);
      WiFi.disconnect(true);
      WiFi.mode(WIFI_STA);
      WiFi.begin(ssid, pass);
      while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
      }
      if (udp.listen(1234)) {
        Serial.print("UDP Listening on IP: ");
        Serial.println(WiFi.localIP());
        udp.onPacket([](AsyncUDPPacket packet) {
          Serial.print("UDP Packet Type: ");
          Serial.print(packet.isBroadcast() ? "Broadcast" : packet.isMulticast() ? "Multicast" : "Unicast");
          Serial.print(", From: ");
          Serial.print(packet.remoteIP());
          Serial.print(":");
          Serial.print(packet.remotePort());
          Serial.print(", To: ");
          Serial.print(packet.localIP());
          Serial.print(":");
          Serial.print(packet.localPort());
          Serial.print(", Length: ");
          Serial.print(packet.length()); //dlzka packetu
          Serial.print(", Data: ");
          Serial.write(packet.data(), packet.length());
          Serial.println();
          String myString = (const char*)packet.data();
          if (myString == "ZAP") {
            Serial.println("Zapinam rele");
            digitalWrite(rele, LOW);
          } else if (myString == "VYP") {
            Serial.println("Vypinam rele");
            digitalWrite(rele, HIGH);
          }
          packet.printf("Got %u bytes of data", packet.length());
        });
      }
    }
    
    void loop()
    {
      delay(1000);
      udp.broadcast("Anyone here?");
    }
    
    

    Schéma zapojenia pre ESP32 s ovládaním UDP príkazmi

    UDP ovládanie ESP32 - schéma zapojenia