Raspberry Pi Pico W als WLAN-Client (mit CircuitPython)

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.

In den folgenden Programmcodes geht es um die Programmierung eines Raspberry Pi Pico als WLAN-Client mit CircuitPython. Alternativ kann man den Raspberry Pi Pico auch mit MicroPython 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 CircuitPython-Programmcode gibt auf der Kommandozeile der Thonny Python IDE eine Liste mit WLANs aus, die der WLAN-Chip in diesem Augenblick empfangen kann.

# Bibliotheken laden
import wifi

# WLAN-Scan durchführen
networks = []
for network in wifi.radio.start_scanning_networks():
    networks.append(network)
wifi.radio.stop_scanning_networks()

# Sortieren nach Signalstärke (RSSI)
networks = sorted(networks, key=lambda net: net.rssi, reverse=True)

# WLANs ausgeben
for network in networks:
    print('SSID:', network.ssid, ' / RSSI:', network.rssi)

Das WLAN, mit dem sich der Raspberry Pi Pico W verbinden soll, muss in dieser Liste vorhanden sein. Zusätzlich wird noch die Signalstärke angezeigt.

CircuitPython: Programmcode zum Verbinden

Zum manuellen Herstellen der WLAN-Verbindung reichen bei CircuitPython im einfachsten Fall schon zwei Zeilen Programmcode aus.

import wifi
wifi.radio.connect('Dein WLAN-Name', 'Dein WLAN-Passwort')

CircuitPython: Status der WLAN-Verbindung

Woher will man wissen, ob die Verbindung zum WLAN hergestellt wurde?

import wifi
print(wifi.radio.connected)

Die Ausgabe von „True“ bedeutet, dass die Verbindung hergestellt ist und „False“ bedeutet, dass keine Verbindung zu einem WLAN besteht.

CircuitPython: Erweiterter Programmcode zum Verbinden

Für die WLAN-Verbindung kann man in der Konfigurationsdatei „settings.toml“ die Umgebungsvariablen CIRCUITPY_WIFI_SSID und CIRCUITPY_WIFI_PASSWORD eintragen und dort den WLAN-Namen und das WLAN-Passwort hinterlegen.
Die Verwendung dieser Variablen ist optional. Man kann die WLAN-Zugangsdaten auch direkt in den Programmcode eintragen.

# Zugangsdaten für das eigene WLAN
CIRCUITPY_WIFI_SSID="SSID"
CIRCUITPY_WIFI_PASSWORD="PASSWORT"

Der folgende Programmcode dient zum Verbinden mit einem WLAN und es erfolgt zusätzlich die Ausgabe der IPv4-Konfiguration.

# Bibliotheken laden
import os
import wifi

# WLAN-Konfiguration aus settings.toml
WLAN_NAME = os.getenv('CIRCUITPY_WIFI_SSID')
WLAN_PW   = os.getenv('CIRCUITPY_WIFI_PASSWORD')

# WLAN-Verbindung herstellen
if wifi.radio.connected is False:
    print('Mit WLAN verbinden:', WLAN_NAME)
    wifi.radio.connect(WLAN_NAME, WLAN_PW)

print('WLAN-Verbindung hergestellt')
print()
print('   MAC-Adresse:', [hex(i) for i in wifi.radio.mac_address])
print('      Hostname:', wifi.radio.hostname)
print('  IPv4-Adresse:', wifi.radio.ipv4_address)
print('  Subnetzmaske:', wifi.radio.ipv4_subnet)
print('Router/Gateway:', wifi.radio.ipv4_gateway)
print('    DNS-Server:', wifi.radio.ipv4_dns)

CircuitPython: Erweiterter Programmcode zum Verbinden mit Fehlerbehandlung

Der folgende Programmcode dient zum Verbinden mit einem WLAN und kümmert sich auch um die Fehlerbehandlung. Das hat den Vorteil, dass der Programmcode bei einer fehlerhaften Verbindung nicht mit einer Fehlermeldung abbricht, sondern weitergeführt werden kann.

# Bibliotheken laden
import os
import wifi

# WLAN-Konfiguration aus settings.toml
WLAN_NAME = os.getenv('CIRCUITPY_WIFI_SSID')
WLAN_PW   = os.getenv('CIRCUITPY_WIFI_PASSWORD')

# WLAN-Verbindung herstellen
try:
    print('Mit WLAN verbinden:', WLAN_NAME)
    wifi.radio.connect(WLAN_NAME, WLAN_PW)
except Exception as e:
    print('Fehler:', str(e))

if wifi.radio.connected is False:
    print('Keine WLAN-Verbindung')
else:
    print('WLAN-Verbindung hergestellt')

Weitere verwandte Themen:

Frag Elektronik-Kompendium.de

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

Elektronik-Set jetzt bestellen Online-Workshop buchen

Online-Workshop: Programmieren mit dem Raspberry Pi Pico

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.

Online-Workshop buchen

Besuchen Sie unser fast monatlich stattfindendes Online-Meeting PicoTalk und lernen Sie uns kennen. Die Teilnahme ist kostenfrei.

Termine und Newsletter-Anmeldung

 

Elektronik-Sets für das Hardware-nahe Programmieren