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.
- Raspberry Pi Pico W: Grundlagen zum WLAN
- Raspberry Pi Pico W: Troubleshooting WLAN - Fehler, Probleme und Lösungen
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:
- Raspberry Pi Pico W: Grundlagen zum WLAN
- Raspberry Pi Pico W: Troubleshooting WLAN - Fehler, Probleme und Lösungen
- Raspberry Pi Pico W und WH
- Raspberry Pi Pico: CircuitPython
Frag Elektronik-Kompendium.de
Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython
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: 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.