Ich probiere gerade mit der UIFlow-IDE ein kleines Programm zu erstellen, das mittels ESP-Now eine Verbindung herstellt und Daten austauscht.
Mein erster Versuch (Master):
- Zuerst wird ESP-Now initialisiert.
- Dann wird ein Name (SSID) für die Arbeitsgruppe festgelegt.
- Und schließlich die eigene MAC-Adresse geholt und angezeigt.
- In der folgenden Schleife wird nach einem Mitglied der Arbeitsgruppe gesucht und dessen MAC angezeigt.
- Das Mitglied wird dann in eine Liste eingetragen.
- Die MainLoop ist noch nicht getestet.
Das Programm auf dem Slave:
- Auch hier wird zuerst ESP-Now initialisiert.
- Dann wird der Arbeitsgruppennamen (SSID) festgelegt und bekanntgemacht.
- Schließlich wird die eigene MAC-Adresse geholt und angezeigt.
Mehr macht dieses Programm nicht. Das genügt aber, um vom Master erkannt zu werden!
Eine zuverlässige Datenübertragung hat aber nicht funktioniert.
Ein zweiter Anlauf
Also das Beispiel von MStack hat nicht funktioniert. Ich habe heute einen neuen Anlauf gemacht. Es funktionierte wieder nichts. Also habe ich einen ESP32 genommen und die Micropython Demo als Grundlage genommen. Das funktionierte in Thonny:
# ESPNow_test_001.py # import network import espnow sta = network.WLAN(network.STA_IF) # Or network.AP_IF sta.active(True) e = espnow.ESPNow() e.active(True) peer = b'\x94\xb9\x7e\x8d\x41\xdc' e.add_peer(peer)
Dieses kleine Programm hat einen ESP-Now Sender erzeugt. Mit
>>> e.send(peer, "Starting...") True
habe ich senden können. Das Programm RX_001.m5f hat diese Aussendungen empfangen. Es waren noch kleine Fehler drinn, deshalb hier die endgültige Fassung:
Wenn eine Message empfangen wird, so wird die MAC des Senders und die Nachricht für 1 Sekunde angezeigt, dann erscheinen wieder —.
Dann habe ich am Senderprogramm gearbeitet. Das automatische Suchen von Peers habe ich rausgeschmissen und die MAC des Peers (Empfänger) ins Programm geschrieben. Damit funktionierte dann auch der Sender. Hier das Programm TX_003.m5f:
Damit ist die Grundlage für eine einseitige Verbindung mittels ESP-Now geschaffen.
Das automatische finden des Peer hat prinzipiell funktioniert. Allerdings wurde eine Slave-MAC angezeigt, die um 1 höher war, als die vom Slave selbst angezeigte.
Nachgedanken
Es ist möglich, dass der Erste Versuch unbefriedigend verlief, weil ich den Kanal auf 0 eingestellt hatte. Kanal 0 bedeutet, das der eingestellte Kanal verwendet wird. Wenn sich aus irgendwelchen Gründen bei Sender und Empfänger unterschiedliche Kanäle einstellen finden sie sich nicht.
Das werde ich vielleicht später mal testen. Für eine vorgesehenen Reichweitentest ist das jetzt ausreichend.
Du musst eingeloggt sein um eine Antwort hinterlassen zu können.