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 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.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
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.

Webserver prüfen

  1. 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.
  2. 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:

Frag Elektronik-Kompendium.de

Elektronik-Set Pico WLAN Edition

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.

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