Forum: Mikrocontroller und Digitale Elektronik Raspberry Pi Pico W mit Micropython reagiert nicht auf UDP-Pakete


von Christian S. (somerhimson)


Lesenswert?

Ich habe diverse Pi Pico mit und ohne W seit Jahren im Einsatz, alle 
programmiert mit Thonny. Firmware 1.19 bis 1.24.
Bin eigentlich ganz glücklich, nur habe ich mein komplexestes Projekt 
(ein Anzeigegerät mit LEDs, I2C-7-Segment-LEDs, I2C-LCD, einen Piezo und 
ein IRQ-Taster) noch ein bißchen aufgebohrt, um einige weitere Daten 
anzeigen zu können. Eigentlich nichts tiefgreifendes, allerdings 
passiert es seit einiger Zeit, dass der Pi Pico W, der mit einer älteren 
Software-Version einwandfrei läuft, plötzlich nicht mehr auf UDP-Pakete 
reagiert. Ich kann mit Sicherheit sagen, am kompletten WLAN-Teil ist 
nichts geändert worden und die Pakete werden gesendet (Sophos-WLAN, wo 
ich mit einer UTM alles tracken kann). Auch ist es nach einem Neustart 
per Reset-Befehl meist so, dass er sich zwar ins WLAN einbucht, 
UDP-Pakete auch versenden kann (vollkommen unbeschädigt und auch 
performant), aber eben einfach nicht reagiert.
Erst wenn ich den Strom trenne und nach 15 Sekunden oder so wieder 
anstecke, funktioniert der Empfang wieder einige Zeit.
Ich kann ausschließen, dass es etwas mit der Stromversorgung oder der 
jeweiligen Hardware zu tun hat, denn das Verhalten zeigen mit der 
erweiterten Software leider alle von mir getesteten Pico W.

Die Empfangsschleife ist die hier:

netzwerkEmpfang = socket(AF_INET, SOCK_DGRAM)
netzwerkEmpfang.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)
netzwerkEmpfang.bind((wlan_ip,udpPort)) #binding the port
poller = poll()
poller.register(netzwerkEmpfang, POLLIN)

...

while keineNachricht:
    res = poller.poll(10000)
    if not res:
        kNzaehler += 1
        if debugMode:
            print("Keine Nachricht seit "+str(10*kNzaehler)+" s; 
WLAN-Status: "+str(wlan.status()))
    else:
        keineNachricht = False
        nachrichtUdp,senderUdp = netzwerkEmpfang.recvfrom(1024)
    if not wlan.isconnected():
        wlanFehler()
    elif kNzaehler > 20:
        netzwerkFehler()

Also eigentlich ganz einfach und wie gesagt, genauso habe ich seit 
Jahren diverse Geräte hier laufen.
Ich dachte es könne vielleicht ein Bug in der Micropython-Version sein 
und habe verschiedene getestet, aber von 1.24 bis runter zu 1.21  immer 
dasselbe Verhalten.

Meine Frage nun, was muß man machen, um das WLAN-Modul oder dessen 
Treiber so anschmieren zu lassen, dass auch ein Software-Reset per 
"reset()" es nicht mehr nutzbar bekommt.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.