Raspberry Pi Pico W als Webserver
Mit seiner WLAN-Unterstützung ist ein Raspberry Pi Pico W nicht nur als Client, sondern auch als Webserver in einem WLAN geeignet. Ein Webserver kann im Netzwerk auf Anfragen Daten zurücksenden. Und dabei hat ein Raspberry Pi Pico W einiges an Daten zu bieten. Beispielsweise die Zustände von GPIO-Eingängen und -Ausgängen, sowie digitale Werte an den ADC-Eingängen.
Bevor wir uns um den Programmcode für den Webserver kümmern, müssen wir noch die Entscheidung treffen, ob der Raspberry Pi Pico W als WLAN-Client in einem vorhandenen WLAN verbunden und erreichbar sein soll, oder ob er als eigenständiger WLAN Access Point betrieben werden soll.
Hinweis: Diese Webserver-Lösung ist kein vollständiger Webserver. Dafür ist der Programmcode nicht gemacht und auch nicht gedacht. Wer einen vollwertigen Webserver braucht, der sollte einen Mini-Computer, wie den Raspberry Pi mit Raspberry Pi OS, verwenden.
Raspberry Pi Pico W als WLAN-Client
Damit der Raspberry Pi Pico W als WLAN-Client dienen kann, muss er im Programmcode mit einem vorhandenen WLAN verbunden werden. Die Verbindung zum Webserver des Picos muss dann von einem anderen Client im selben Netzwerk erfolgen. Hierzu braucht man die IPv4-Adresse des Picos, die man in die Browser-Adresszeile eingeben muss.
Raspberry Pi Pico W als WLAN Access Point
Eine Alternative zum Betrieb als WLAN-Client ist der Betrieb als WLAN Access Point für ein eigenständiges WLAN. Der Nachteil hierbei ist, dass man sich mit einem anderen WLAN-Client zuerst mit dem Pico-WLAN verbinden und dann in der Browser-Adresszeile die IPv4-Adresse des Picos eingeben muss.
Programmcode für den Webserver
Der folgende Programmcode ist ohne Netzwerk-Verbindung nicht lauffähig. Da der Funk-Chip vom Mikrocontroller-Chip unabhängig ist, reicht es aber aus, vor diesem Programmcode einen Programmcode aufzurufen, der eine Verbindung zum WLAN herstellt oder einen WLAN-Access-Point erstellt.
# Bibliotheken laden import socket import utime as time # HTML html = """<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="shortcut icon" href="data:"><title>Raspberry Pi Pico</title></head><body><h1 align="center">Raspberry Pi Pico W</h1><p align="center">Verbindung mit %s</p></body></html>""" # HTTP-Server starten print('Server starten') addr = socket.getaddrinfo('0.0.0.0', 80)[0][-1] server = socket.socket() server.bind(addr) server.listen(1) print('Server hört auf', addr) print() print('Beenden mit STRG + C') print() # Auf eingehende Verbindungen hören while True: try: conn, addr = server.accept() print('HTTP-Request von Client', addr) request = conn.recv(1024) # HTTP-Request anzeigen print('Request:', request) # HTTP-Response senden response = html % str(addr) conn.send('HTTP/1.0 200 OK\r\nContent-type: text/html\r\n\r\n') conn.send(response) conn.close() print('HTTP-Response gesendet') print() except OSError as e: break except (KeyboardInterrupt): break try: conn.close() except NameError: pass server.close() print('Server beendet')
Hinweis: Diese Webserver-Lösung kann nur eine Webseite ausliefern. Es handelt sich dabei um ein Demo und nicht mehr. Für einen konkreten Anwendungsfall sind gegebenenfalls Anpassungen und Erweiterungen notwendig.
Troubleshooting
Folgende oder eine ähnliche Fehlermeldung erscheint in der Kommandozeile:
Traceback (most recent call last): File "<stdin>", line 57, in <module> OSError: [Errno 98] EADDRINUSE
Was ist das Problem? Wenn sich in der genannten Zeile (line) das Kommando „server.bind(addr)“ befindet, dann könnte das daran liegen, dass man vorher einen Programmcode ausgeführt hat, der irgendwie noch aktiv im Speicher ist und die Ausführung dieses Programmcodes blockiert.
Man kann das dadurch lösen, in dem man die WLAN-Verbindung trennt, neu herstellt und anschließend den Programmcode erneut ausführt.
Webserver prüfen
- Raspberry Pi Pico W als WLAN-Client: Ob der Webserver auf dem Pico läuft und erreichbar ist, erfährt man, wenn man die IPv4-Adresse des Picos, die er beim WLAN-Verbindungsaufbau bekommen hat, in die Browser-Adresszeile eingibt.
- Raspberry Pi Pico W als WAP: Zuerst muss man sich mit dem WLAN des Picos verbinden und danach die IPv4-Adresse 192.168.4.1 (Standard) in die Browser-Adresszeile eingeben.
Pro und Contra
Sollte man einen Raspberry Pi Pico W als Webserver verwenden? Und wenn ja, was sind die Vorteile oder Nachteile?
Nachteile
- Der hier implementierte Webserver ist natürlich kein richtiger Webserver, sondern nur eine extrem abgespeckte Minimal-Version. Selbst wenn man eine andere Implementierung wählen würde, würde das nichts daran ändern. Wer einen richtigen Webserver braucht, der sollte zumindest einen Mini-Computer mit einem Linux-Betriebssystem verwenden.
- Maßgeblich sind die Anforderungen im praktischen Einsatz. Nur weil es geht, heißt das nicht, dass es dann auch sinnvoll ist.
- Professionellen Ansprüchen obliegt diese Lösung mit diesem Programmcode nicht. Insbesondere aus Sicherheitsgründen sollte diese Lösung nur in unbedenklichen Umgebungen verwendet werden. Also in einem Demo-Netz oder in einem privaten WLAN, was keinem typischen Angriffsziel entspricht.
- Desweiteren verzichtet diese Lösung auf Sicherheitsmerkmale einer TLS-Verbindung (HTTPS). Einfach um die Komplexität zu reduzieren und weitere Fehlerquellen zu vermeiden.
Vorteile
- Wenn man von einem Raspberry Pi Pico Daten übers Netzwerk anfordern möchte (Zustände, Werte, etc.) dann besteht immer auch die Frage, welche Voraussetzungen zur Anforderung und Darstellung hat die Gegenstelle. Was fast immer vorhanden ist, ist ein Webbrowser. Egal ob Smartphone, Tablet oder Desktop-System. Das ist in jedem Betriebssystem integriert. Und das kann auch jeder bedienen.
- Da bietet es sich natürlich an, dass ein Pico auf der anderen Seite eine Webserver-Implementierung aufweist, die Daten an einen Webbrowser schicken kann.
- Die Implementierung eines Webservers auf einem Raspberry Pi Pico ist der kleinste Aufwand, um eine Kommunikation zwischen zwei oder auch mehr Geräten zu ermöglichen.
Darf es ein bisschen mehr sein?
Ja, jetzt ist Dein Raspberry Pi Pico W als Webserver in Deinem WLAN erreichbar. Aber was können wir damit machen? Wie wäre es, wenn wir über den Webserver auf dem Pico die Onboard-LED ein- und ausschalten?
Der Raspberry Pi Pico W als fernsteuerbare Stoppuhr mit TM1637-Anzeige.
Der Raspberry Pi Pico W als WLAN-Wetterstation mit einem DHT22.
Weitere verwandte Themen:
- Raspberry Pi Pico W und WH
- Raspberry Pi Pico W: Grundlagen zum WLAN
- Raspberry Pi Pico W als WLAN-Client
- Raspberry Pi Pico W als WLAN Access Point (WAP)
- Raspberry Pi Pico im Stand-alone-Betrieb
- Raspberry Pi Pico im Akku- und Batterie-Betrieb
Teilen:
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
Hardware-nahes 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.
Für Ihre Fragen zu unseren Online-Workshops mit dem Raspberry Pi Pico besuchen Sie unseren PicoTalk (Online-Meeting). (Headset empfohlen)
Elektronik-Set Pico Edition
Raspberry Pi Pico: Hardware-nahes Programmieren mit MicroPython
Leichter Einstieg mit All-in-one-Set zum sofort Loslegen, um eigene Steuerungen programmieren.
Elektronik-Set Pico WLAN Edition
Raspberry Pi Pico W: IoT und Smart Home mit WLAN und MQTT
Betreibe Deinen Raspberry Pi Pico W als drahtloser Sensor in Deinem WLAN, versende E-Mails mit Daten und kommuniziere per MQTT im Internet of Things oder Smart Home.
Elektronik-Set Sensor Edition
Erweiterung zu den Elektronik-Sets Pico Edition und Pico WLAN Edition
Elektronik-Set mit den beliebtesten Sensoren zum Messen von Temperatur, Helligkeit, Bewegung, Lautstärke und Entfernung.
Elektronik-Set Eingabe Ausgabe Edition
Erweiterung zu den Elektronik-Sets Pico Edition und Pico WLAN Edition
Damit kannst Du MP3-Dateien abspielen, eine Stoppuhr bauen, einen Servo-Motor mit Drehschalter oder Joystick steuern, Lichteffekte mit einem WS2812-LED-Lichtstreifen erzeugen, Schalten mit einem Relais und Signalisieren mit einem Vibrationsmotor.