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 zu dazugehörige Passwort zur Authentifizierung.

Zur Herstellen der WLAN-Verbindung reichen im einfachsten Fall schon insgesamt nur 4 Zeilen Programmcode aus.

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.

  1. Die erste Zeile lädt die Bibliothek für die Netzwerk-Funktionen.
  2. Hier wird die Betriebsart definiert. STA_IF bedeutet so viel wie Station, also der Client-Betrieb.
  3. Jetzt wird das WLAN-Interface aktiviert.
  4. 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

# 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 utime as 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 utime as time

# 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?

  1. 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.
  2. Die Funktion prüft, ob schon eine WLAN-Verbindung besteht.
  3. Ausgabe zusätzlicher Informationen auf der Kommandozeile über die Netzwerk-Verbindung (IPv4-Konfiguration).
  4. 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 rp2
import utime as time

# WLAN-Konfiguration
wlanSSID = 'WLAN_NAME'
wlanPW = 'WLAN_PASSWORD'
rp2.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')
        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()

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.

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:

Teilen:

Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython

Elektronik-Set Pico Edition

Das "Elektronik-Set Pico Edition" ist ein Bauteile-Sortiment mit Anleitung zum Experimentieren und Programmieren mit MicroPython.

  • LED: Einschalten, ausschalten, blinken und Helligkeit steuern
  • Taster: Entprellen und Zustände anzeigen
  • LED mit Taster einschalten und ausschalten
  • Ampel- und Lauflicht-Steuerung
  • Elektronischer Würfel
  • Eigene Steuerungen programmieren

Online-Workshop Mehr Informationen Elektronik-Set jetzt bestellen

Programmieren mit dem Raspberry Pi Pico
Online-Workshop

Programmieren mit dem Raspberry Pi Pico

Online-Workshop mit einer Einführung ins Physical Computing mit Leuchtdioden, Taster und Temperatursensor.

  • Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython ohne Vorkenntnisse
  • Optimaler Einstieg, um eigene Ideen zu verwirklichen und Steuerungen zu programmieren
  • Inklusive Elektronik-Set mit einem Raspberry Pi Pico, Zubehör und elektronischen Bauteilen

Für Ihre Fragen zu unseren Online-Workshops mit dem Raspberry Pi Pico besuchen Sie unseren PicoTalk (Online-Meeting). (Headset empfohlen)

Zum PicoTalk Mehr Informationen Am Online-Workshop teilnehmen

Elektronik-Set Pico Edition
Elektronik-Set Pico Edition

Hardware-nahes Programmieren mit dem Raspberry Pi Pico

Das "Elektronik-Set Pico Edition" ist ein Bauteile-Sortiment mit Anleitung zum Experimentieren und Programmieren mit MicroPython.

  • LED: Einschalten, ausschalten, blinken und Helligkeit steuern
  • Taster: Entprellen und Zustände anzeigen
  • LED mit Taster einschalten und ausschalten
  • Ampel- und Lauflicht-Steuerung
  • Elektronischer Würfel
  • Eigene Steuerungen programmieren

Online-Workshop Mehr Informationen Elektronik-Set jetzt bestellen