ESP-NOW
von Edi · 06/05/2024
Das ESP-NOW Netzwerk
ESP-NOW ist ein von Espressif entwickeltes verbindungsloses Kommunikationsprotokoll, das eine kurze Paketübertragung ermöglicht und dafür das 2,4-GHz-Band verwendet. Mit diesem Protokoll können bis zu zwanzig ESP8266 oder ESP32, auf einfache Weise miteinander kommunizieren und Nachrichten von bis zu 250 Byte austauschen. Jedes Board kann mit ESP-NOW als Receiver, Transmitter oder Trans-receiver eingesetzt werden und es können Reichweiten mit Antennen von bis zu 400 Meter erreicht werden. Mit den eingebauten Antennen sollte die Kommunikation in einem mittelgrossen Haus problemlos Möglich sein.
Vor der Kommunikation zwischen den Geräten ist ein Pairing erforderlich. Nach dem Pairing ist die Verbindung sicher, ohne dass ein Handshake erforderlich ist. Wenn eines der Boards plötzlich den Strom verliert oder zurückgesetzt wird, verbindet es sich nach dem Neustart automatisch mit seinem Gegenstück, um die Kommunikation fortzusetzen.
Die Daten können unidirektional oder bidirektional sein, d. h. single-duplex oder full-duplex und die meisten Datentypen werden unterstützt.
Die Daten können verschlüsselt oder unverschlüsselt übertragen werden, und es ist keine externe Wi-Fi-Quelle oder ein Router erforderlich.
Der IC besteht aus einer Widerstandsreihe mit 99 temperaturkompensierte Widerstandselementen und einem Schleiferschaltnetz. Zwischen den einzelnen Elementen und an beiden Enden befinden sich Angriffspunkte, die für den Schleiferanschluss zugänglich sind. Die Position des Schleiferelements wird durch die Eingänge CS, U/D und INC gesteuert.
Die Position vom Schleifer kann in einem nichtflüchtigen Speicher abgelegt und bei einem späteren Einschaltvorgang wieder abgerufen werden.
Es gibt vier unterschiedliche Typen, die sich durch den Widerstandswert unterscheiden.
Anwendung findet das digitale Potenziometer zur Regelung von Spannungen, Einstellungen und Trimmen in verschiedenen Schaltkreisen.
ESP-NOW Netzwerk Modi
Wir haben die Möglichkeit das ESP-NOW Netzwerk in vielen Konfigurationen einzurichten und können darin ESP8266 und ESP32 mischen.
Jedes Gerät, dass an einem ESP-NOW Netzwerk teilnimmt, kann in einem von zwei Modi betrieben werden.
Initiator – dieses Gerät initiiert die Übertragung. Dazu benötigt es die MAC-Adresse des empfangenden Geräts.
Responder – dieses Gerät empfängt die Übertragung.
Im unidirektionalen (halb-duplex) Modus ist das sendende Gerät der Initiator und das empfangende Gerät der Responder.
In einem 2-Wege-Kommunikationsmodus (Vollduplex) ist jedes Gerät sowohl Initiator als auch Responder.
Lasst uns jetzt die möglichen Netzwerke genauer ansehen.
Einweg Kommunikation
Die einfachste Kommunikationstopologie ist eine einseitige, unidirektionale Kommunikation. Bei dieser Anordnung sendet der Initiator (Sender) Daten an den Responder (Empfänger).
Ein Sender und multiple Empfänger
Bei diesem Aufbau kann der Sender zu einem Empfänger direkt Daten senden oder eine Broadcast-Nachricht an alle Empfänger senden.
Ein Empfänger und multiple Sender
Bei diesem Netzwerk haben wir mehrere Sender wie zum Beispiel Sensoren, die Daten an einem Empfänger senden.
Zwei-Weg Netzwerk
In diesem bidirektionalen oder Voll-Duplex Netzwerk kann jedes Modul Daten senden und Empfangen.
Die MAC Adresse
Die MAC-Adresse, auch bekannt als Media Access Control-Adresse, ist eine eindeutige Kennung, die Netzwerkgeräten zugewiesen ist. Sie besteht aus einer 48-Bit-Zahl und wird normalerweise in 6-stelliger hexadezimalen Form dargestellt. Die MAC-Adresse wird auf der Hardwareebene eines Netzwerkgeräts festgelegt und identifiziert dieses Gerät eindeutig in einem Netzwerk. Die MAC-Adresse können wir aber auch auf der Software Seite einstellen.
Um die MAC-Adresse unsere Mikrocontroller auslesen zu können, wird dieser kurze Sketch verwendet, der die MAC-Adresse in den Serial Monitor schreibt.
#include // for ESP32 boards
//#include // for ESP8266 boards
void setup(){
Serial.begin(115200);
delay(1000);
Serial.print("MAC-Address: ");
Serial.println(WiFi.macAddress());
}
void loop(){}
Praxis Beispiel
Im ersten Beispiel senden wir mittels eines Arduino Nano ESP32 ein Signal, wenn der Taster gedrückt wird. Im zweiten ESP schalten wir dann die LED ein, solange der Taster gedrückt wird. Wird der Taster losgelassen, dann wird auch die LED wieder ausgeschalten. Zur Übertragung der Daten verwenden wir natürlich das ESP-NOW Protokoll.