Ich würde gerne in einem ESPNow-Netzwerk auch mit dem PC mitmachen. Vor allem, um einem Programm auf dem PC den Zugriff auf Geräte im ESPNow-Netzwerk zu ermöglichen. Deshalb habe ich mit einem M5ATOM lite ein entsprechendes Programm entworfen.

Hier ist der erste funktionsfähige Entwurf:

Der erste funktionsfähige Entwurf von E2S (ESPNowAdapter_001.m5f)

An diesem Entwurf gibt es noch viel zu tun. Die grundlegende Brückenfunktion zwischen ESPNow und PC funktionieren aber schon. Bisher können auf der ESPNow Seite aber nur Broadcast-Nachrichten benutzt werden. Später wird es erforderlich sein auch mit einzelnen Geräten direkt zu kommunizieren.

Die Variable serialmode wurde eingebaut, um ggf. den Echobetrieb, wie er standardmässig von Putty verwendet wird zu unterstützen. Sonst sieht man nicht was man schreibt. Das ist aber nur für Terminalbetrieb sinnvoll. Man kann natürlich auch im Terminalprogramm den Echomodus abschalten. Wenn ein Programm auf das ESPNow-Netzwerk zugreift, weiß es was es tut und benötigt die Rückmeldung nicht, es wird dadurch eher verwirrt.

Die serielle Schnittstelle (UART) ist mit den Pins 1 und 3 verbunden. Das ist der Anschluß des Seriell zu USB-Wandlers. Deshalb kann der PC einfach mit einem USB-Kabel angeschlossen werden. Über die entsprechende COM-Schnittstelle kann dann das ESPNow-Netzwerk erreicht werden.

Fortsetzung folgt …

2. Anlauf

Beim ersten Versuch habe ich als Hardware einen M5ATOM lite genommen. Nun wollte ich aber mehr Kontrolle über das Geschehen haben und auf einen M5Sick C+ zurückgegriffen, der gerade auf dem Arbeitsplatz herum lag. Die empfangenen Daten werden jetzt auf dem Display angezeigt.

So sieht das ganze Programm aus:

Das Zweite Programm für den M5Stick C+ (ESPNowAdapter_004.m5f)

Da die Einzelheiten darauf nur schlecht zu erkennen sind folgen jetzt die 3 Blöcke einzeln:

Das Hauptprogramm

Hauptprogramm

Display darstellen.

Diese Funktion stellt die Informationen auf dem Display dar. Allerdings nur halbherzig. Es gibt nur die seriell empfangenen Daten aus. Da es mir in diesem Programm nicht auf ein perfektes Design, sondern auf den Funktionalität ankommt, habe ich keine weitere Zeit inverstiert. Wird vielleicht später nachgeholt.

Funktion: refresh_screen

Die ESP Now Empfangsroutine

ESP Now arbeitet interruptgesteuert. Wenn eine Nachricht eintrifft, wird ein Inerrupt ausgelöst, das Hauptprogramm unterbrochen und die Interrupt Service Routine abgearbeitet. Also das was im nächsten Bild zu sehen ist. Anschließend wird das Hauptprogramm dort fortgesetzt wo es unterbrochen wurde.

Die Interrupt Service Routine für den ESP Now Empfang

Auf der seriellen Seite sieht es in einem Terminal u.B. so aus:

Terminalfesnster

Die letzte, die drittletzte und die fünftletzte Zeile wurden vom Terminal zum ESP Now Netz geschickt.