Raspberry Pi Pico W als WLAN-Client
Der Raspberry Pi Pico W hat auf seiner Platine einen Funk-Chip mit WLAN-Unterstützung. Da ist es natürlich naheliegend den Pico mit einem vorhandenen WLAN-Netzwerk zu verbinden. Alles was man braucht ist den Namen (SSID) des betreffenden WLANs und das dazugehörige Passwort zur Authentifizierung.
- Raspberry Pi Pico W: Grundlagen zum WLAN
- Raspberry Pi Pico W: Troubleshooting WLAN - Fehler, Probleme und Lösungen
Zur Herstellen der WLAN-Verbindung mit MicroPython reichen im einfachsten Fall nur 4 Zeilen Programmcode aus.
Alternativ kann man den Raspberry Pi Pico auch mit CircuitPython programmieren.
Programmcode zur Anzeige anderer WLANs (WLAN-Scan)
Damit eine Verbindung zu einem WLAN möglich ist, muss das natürlich empfangbar sein. Der folgende Programmcode gibt auf der Kommandozeile eine Liste mit WLANs aus, die der WLAN-Chip in diesem Augenblick empfangen kann.
# Bibliotheken laden import network # Client-Betrieb wlan = network.WLAN(network.STA_IF) # WLAN-Interface aktivieren wlan.active(True) # WLANs ausgeben print(wlan.scan())
Das WLAN, mit dem der Raspberry Pi Pico W sich verbinden soll, muss in dieser Liste vorhanden sein.
Programmcode zum Verbinden mit einem WLAN
Zum Verbinden mit einem existierenden WLAN reichen schon 4 Zeilen Programmcode aus. Damit der Verbindungsaufbau zu Deinem WLAN funktioniert, musst Du den WLAN-Name und das WLAN-Passwort korrekt im Programmcode eintragen.
- Die erste Zeile lädt die Bibliothek für die Netzwerk-Funktionen.
- Hier wird die Betriebsart definiert. STA_IF bedeutet so viel wie Station, also der Client-Betrieb.
- Jetzt wird das WLAN-Interface aktiviert.
- Die Verbindung wird mit dem WLAN-Namen (SSID) und dem Passwort (PASSWORD) hergestellt.
Die nachfolgenden 4 Zeilen haben mit dem Verbindungsaufbau nichts zu tun. Sie sind eine sinnvolle Ergänzung. Hier wird geprüft, ob die Verbindung erfolgreich war.
# Bibliotheken laden import network # Ländereinstellung network.country('DE') # Client-Betrieb wlan = network.WLAN(network.STA_IF) # WLAN-Interface aktivieren wlan.active(True) # WLAN-Verbindung herstellen wlan.connect('WLAN_NAME', 'WLAN_PASSWORD') # WLAN-Verbindungsstatus prüfen import time print('Warten auf WLAN-Verbindung') while not wlan.isconnected() and wlan.status() >= 0: time.sleep(1) print('WLAN-Verbindung hergestellt / Status:', wlan.status())
Nach der Meldung „WLAN-Verbindung hergestellt“ wird das Programm beendet. Die WLAN-Verbindung des Picos bleibt dabei bestehen. Der WLAN-Chip auf dem Pico-Board hält die WLAN-Verbindung unabhängig welches Programm auf dem Pico ausgeführt wird. Das heißt, man kann jetzt ein Programm starten, dass diese WLAN-Verbindung zur Kommunikation nutzt.
Programmcode zum Beenden der WLAN-Verbindung
Um die WLAN-Verbindung zu trennen bzw. zu beenden, sollte man den Pico niemals stromlos machen, sondern die Verbindung geordnet durch den WLAN-Chip beenden. Ansonsten kann es sein, dass der Pico keine erneute Verbindung zum WLAN aufbauen kann.
Wenn man einen Programmcode zum Verbinden mit einem WLAN noch einmal ausprobieren möchte, solltest Du zuerst den folgenden Programmcode auszuführen, um die WLAN-Verbindung zu beenden.
# Bibliotheken laden import network import time # Ländereinstellung network.country('DE') # Client-Betrieb wlan = network.WLAN(network.STA_IF) # WLAN-Verbindung beenden if wlan.isconnected(): wlan.disconnect() time.sleep(2) print('WLAN-Verbindung beendet') # WLAN-Verbindungsstatus print('WLAN-Status:', wlan.status())
In der Regel wird man einen WLAN-Status von „0“ oder „-2“ bekommen, was bedeutet, dass die WLAN-Verbindung beendet ist.
Erweiterter Programmcode zum Verbinden mit einem WLAN
Was macht der folgende Programmcode besser?
- Das Herstellen der WLAN-Verbindung befindet sich in einer Funktion. Die Funktion kann in einen eigenen Programmcode übernommen werden und mit einem Kommando aufgerufen werden.
- Die Funktion prüft, ob schon eine WLAN-Verbindung besteht.
- Ausgabe zusätzlicher Informationen auf der Kommandozeile über die Netzwerk-Verbindung (IPv4-Konfiguration).
- Onboard-LED als Status-Anzeige: Wenn sie blinkt, dann wird die WLAN-Verbindung hergestellt. Leuchtet die LED, dann besteht die Verbindung zum WLAN.
# Bibliotheken laden import machine import network import time # WLAN-Konfiguration wlanSSID = 'WLAN_NAME' wlanPW = 'WLAN_PASSWORD' network.country('DE') # Status-LED led_onboard = machine.Pin('LED', machine.Pin.OUT, value=0) # Funktion: WLAN-Verbindung def wlanConnect(): wlan = network.WLAN(network.STA_IF) if not wlan.isconnected(): print('WLAN-Verbindung herstellen:', wlanSSID) wlan.active(True) wlan.connect(wlanSSID, wlanPW) for i in range(10): if wlan.status() < 0 or wlan.status() >= 3: break led_onboard.toggle() print('.', wlan.status()) time.sleep(1) if wlan.isconnected(): print('WLAN-Verbindung hergestellt') led_onboard.on() print('WLAN-Status:', wlan.status()) netConfig = wlan.ifconfig() print('IPv4-Adresse:', netConfig[0], '/', netConfig[1]) print('Standard-Gateway:', netConfig[2]) print('DNS-Server:', netConfig[3]) else: print('Keine WLAN-Verbindung') led_onboard.off() print('WLAN-Status:', wlan.status()) # WLAN-Verbindung herstellen wlanConnect()
Stromsparmodus abschalten
Standardmäßig schaltet sich der Funk-Chip automatisch in den Stromsparmodus, wenn er nichts zu tun hat (Idle). Im reinen Client-Betrieb ist das in Ordnung. Er kann dann aber keine eingehenden Verbindungen annehmen, was als Server aber notwendig wäre. Wenn der Pico als Server im WLAN nicht erreichbar ist, dann sollte man den Stromsparmodus abschalten.
Der Programmcode sollte bei der WLAN-Konfiguration noch folgende Angabe haben
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.config(pm = 0xa11140)
Hinweis: Wenn der Stromsparmodus ausgeschaltet ist, dann sollte dabei berücksichtigt werden, dass der Stromverbrauch über die Zeit erheblich größer sein wird. Unter Umständen schließt das einen Batterie-Betrieb aus.
Troubleshooting: WLAN
Wenn es mit dem Programmcode Probleme gibt, dann betrifft das hauptsächlich die WLAN-Verbindung. Der Umgang mit Funkverbindungen ist immer etwas schwierig, weil man nicht „sieht“ was passiert. Man ist dann auf Status-Meldungen vom Programmcode angewiesen. Von der Status-Meldung lässt sich aber nur selten auf eine Problemlösung schließen. Hier muss man etwas genauer hinschauen, um den Fehler zu finden, der sich nicht im Programmcode befinden muss.
Darf es ein bisschen mehr sein?
Wenn man den Raspberry Pi Pico W als WLAN-Client programmiert und eine Verbindung zum Internet braucht, dann will man vielleicht prüfen, ob eine Verbindung ins Internet möglich ist.
Für bestimmte Anwendungen ist eine feste IPv4-Adresse gefordert. Hierfür muss man im Programmcode eine vollständige IPv4-Konfiguration hinzufügen.
Damit ein Raspberry Pi Pico W im lokalen Netzwerk einen individuellen Hostnamen erhält, gibt es einen Parameter in der Netzwerk-Konfiguration von MicroPython.
Oder möchtest Du Deinen Raspberry Pi Pico W als WLAN Access Point verwenden?
Wir nutzen hier einen Raspberry Pi Pico W als schnurlosen bzw. drahtlosen Taster, der damit ein Aktor in Deinem Smart Home werden kann.
Weitere verwandte Themen:
- Raspberry Pi Pico W und WH
- Raspberry Pi Pico W: Grundlagen zum WLAN
- Raspberry Pi Pico W: Onboard-LED einschalten und ausschalten
- Raspberry Pi Pico W als Webserver
- Raspberry Pi Pico im Stand-alone-Betrieb
- Raspberry Pi Pico im Akku- und Batterie-Betrieb
Frag Elektronik-Kompendium.de
Elektronik-Set Pico WLAN Edition
Hardware-nahes Programmieren mit dem Mikrocontroller Raspberry Pi Pico W und MicroPython.
- Raspberry Pi Pico W mit gelöteten Stiftleisten
- Spezielles Steckbrett mit GPIO-Beschriftung
- Einführung ins Hardware-nahe Programmieren
- Schwerpunkte: WLAN, MQTT und Internet
- Deutschsprachige Anleitung als PDF-Datei zum Download
In unseren Online-Workshops bieten wir intensiven Erfahrungsaustausch in kleinen Gruppen und Unterstützung bei individuellen Problemen.
Online-Workshop: Programmieren mit dem Raspberry Pi Pico
Gemeinsam mit anderen und unter Anleitung experimentieren? Wir bieten unterschiedliche Online-Workshops zum Raspberry Pi Pico und MicroPython an. Einführung in die Programmierung, Sensoren programmieren und kalibrieren, sowie Internet of Things und Smart Home über WLAN und MQTT.
Besuchen Sie unser fast monatlich stattfindendes Online-Meeting PicoTalk und lernen Sie uns kennen. Die Teilnahme ist kostenfrei.