ESP Now – Erste Versuche

Heute ist es soweit. Ich werde meine ersten Versuche mit ESP Now unternehmen.

Das Sendeprogramm

Zuerst habe ich einen Sender erstellt. Dazu habe ich einen M5ATOM lite genommen. Dieser soll auf Knopfdruck eine Nachricht (Hallo #lfd.Nr.) senden. Diese Nachricht wird zur Kontrolle auch über ein UART und die USB-Schnittstelle an einen PC gesendet. Hier zeigt Putty die Nachricht an. Die RGB-LED des M5ATOM lite leuchtet normal gelb. Wenn die Nachricht erfolgreich versendet wurde leuchtet sie kurz blau und wenn sie an den PC übermittelt wurde kurz grün auf.

Mein erstes Sendeprogramm (ESPNowTX_003.m5f)

Im Bild oben ist eine Broadcast Aussendung, also eine Nachricht an alle aktiviert. Der deaktivierte Block sendet nur an eine Adresse aus der Adresstabelle, die am Anfang definiert ist.

Dieses Programm funktioniert wie es soll.

Das Empfangsprogramm

Für den Test des Empfangsprogrammes habe ich einen M5Stick C genommen, damit ich die Nachricht anzeigen kann. Und genau das tut es auch. Es zeigt in der Titelzeile die eigenen MAC-Adresse an. Darunter die MAC-Adresse des Senders und die Nachricht.

Mein erstes Empfangsprogramm (ESPNowRX_003.m5f)

Auch dieses Programm tut was es soll. Allerdings wurden beim ersten Versuch keine Nachrichten Empfangen. Der Austausch gegen einen anderen M5Stick C brachte aber Erfolg. Offenbar ist der zuerst verwendete M5Stick C defekt, ob wohl er sich über WLAN brennen ließ. Nachdem ich die Firmware und das Programm erneut aufgespielt hatte funktionierte dieser M5Stick C auch.

Ein Sende- und Empfangsprogramm

Da bisher alles sehr gut lief habe ich gleich noch ein Programm geschrieben, dass sowohl Senden, als auch Empfangen kann. Ich brauche es für die Entwicklung eines Konverters, der serielle Signale vom PC in das ESPNow-Netzwerk überträgt und umgekehrt.

Sende- und Empfangsprogramm (ESPNowTRX_001.m5f)

In dem Block „Taste A was Pressed“ sollte der Text für jedes Gerät individuell angepasst werden. Nach dem Text wird eine laufende Nummer ausgegeben.

Die Displayausgabe habe ich in eine Funktion getan, weil ich diese an 2 verschiedenen Stellen im Programm benötige.

Ganz unten im Display und ganz klein wird die Versorgungsspannung über die USB-Buchse und der aufgenommene Strom angezeigt. Wenn die Spannung > 4V ist in grün und < 4V in rot. Dann ist es Zeit die Powerbank zu wechseln!

Die Stromversorgungsdaten werden alle 10 Sekunden gemessen und ausgegeben.

Ein kleines Problem gibt es bei dem Sende- und Empfangsprogramm allerdings. Gelegentlich wird alles im Display ganz klein dargestellt. Beim nächsten Displayrefresh wird aber alles wieder so wie es sein soll. Also kein wirkliches Problem.

Leider funktionierte der Code nicht mehr, wenn er auf das Gerät downgeloaded wurde 🙁 Der ESPNow-Teil arbeitete nicht.

Schließlich fiel einer von den drei M5Stick C die ich im Einsatz hatte ganz aus. Nach dem Löschen im Brenner ging nichts mehr. Er wurde nicht mehr vom Brenner gefunden.

Ich habe die Reset-Taste 6 Sekunden gedrückt damit das Gerät sicher ausgeschaltet ist und erstmal bei Seite gelegt. Am nächsten Morgen habe ich es erneut an den PC angeschlossen. Nun hat der Brenner es erkannt und ich konnte es löschen und die Firmware darauf spielen. Nun läuft es wieder, als wäre nie etwas gewesen. Also immer etwas Geduld mit dem M5Stick C haben, nach einer Weile kommt er meist wieder zur Vernunft.

Weiterhin musste ich feststellen, dass die Kommunikation nicht auf Kanal 1, sondern auf Kanal 6 erfolgte, obwohl Kanal 1 im Programm eingestellt war! Und genau das war das Problem ! Ich habe es nicht gleich richtig eingeordnet. Nach dem ich auf meinem Tablet einen Netzwerkscanner gestartet hatte, konnte ich sehen, dass das Gerät mit dem auf ihm gespeicherten Programm tatsächlich auf Kanal 1 arbeitet und die anderen auf Kanal 6.

Also beim Testen im RAM läuft immer Kanal 6, beim echten Einsatz wird der im Programm vorgegebene Kanal benutzt!

Beim Übertragen des Programms per RUN wird dieser Block nicht ausgewertet! Ich habe es bei M5Stack gemeldet. Mal sehen wie lange es dauert bis dieser Bug behoben ist.

Erweiteres Sende-Programm für ATOM lite

Bisher hat das Sendeprogramm nur auf Knopfdruck Daten gesendet. Nun würde ich gerne eine automatische Aussendung implementieren. Dazu habe ich einen M5ATOM lite genommen und ESPNowTX_003.m5f erweitert. Ich habe einen Timer eingefügt, der durch einen kurzen Doppeldruck auf die Taste gestartet und durch einen langen Tastendruck (> 1 Sekunde) wieder gestoppt wird. Ein normaler Tastendruck löst wie bisher das Senden eines Datenpaketes aus. Außerdem habe ich die Sendeblöcke in ein Funktion „sende“ ausgegliedert, da diese nun an mehreren Stellen im Programm benötigt wird.

ESPNowTX_004.m5f für M5ATOM lite

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.