Mit dem Raspberry Pi Pico W lassen sich erstaunlich vielseitige Projekte realisieren – und das trotz seiner geringen Größe und des günstigen Preises. In diesem Beitrag zeige ich dir, wie du den Mikrocontroller in einen eigenen WLAN-Hotspot verwandelst, über den sich andere Geräte verbinden können. Sobald ein Gerät mit dem Netzwerk verbunden ist, wird es in einer übersichtlichen Weboberfläche angezeigt.
Das Ganze wird komplett in MicroPython programmiert und kommt ohne zusätzliche Module oder Libraries aus – ideal also für Einsteiger und Bastler, die einen einfachen Einstieg in Netzwerkanwendungen mit dem Pico W suchen.
Hinweis aus der Community: Die Idee zu diesem Projekt stammt aus einem Kommentar von JoKa – vielen Dank an dieser Stelle für den spannenden Impuls!
Ich freue mich jederzeit über Feedback, Ideen oder Anregungen zu meinen Projekten. Du kannst mir gern einen Kommentar hinterlassen oder direkt ein Support-Ticket über Support-Anfragen & Rückmeldung erstellen – ich nehme Vorschläge gerne auf und lasse sie in zukünftige Beiträge einfließen.
Inhaltsverzeichnis
- Ziel des Projekts
- Technische Daten des Raspberry Pi Pico W
- Benötigte Bauteile
- Firmware-Update des Raspberry Pi Pico W
- Access Point mit dem Pico W einrichten
- Geräte automatisch identifizieren per HTTP-Header
- Fertiger Code: Pico W als WLAN-Hotspot mit Geräteliste
Ziel des Projekts
In diesem Beitrag verwandle ich den Raspberry Pi Pico W in einen einfachen WLAN-Hotspot (Access Point) mit einer integrierten Weboberfläche, auf der du sehen kannst, welche Geräte sich mit dem Netzwerk verbunden haben.

Das Projekt eignet sich ideal als Grundlage für eigene Anwendungen – zum Beispiel zur Konfiguration von Geräten im lokalen Netz oder zur Visualisierung von Statusinformationen. Die Umsetzung erfolgt komplett in MicroPython, sodass du den Code leicht anpassen oder erweitern kannst.
Was ist ein Access Point?
Ein Access Point (AP) ist ein Gerät, das ein eigenes WLAN-Netzwerk bereitstellt, mit dem sich andere Geräte verbinden können – ähnlich wie ein Router, nur ohne Internetverbindung. In unserem Fall übernimmt der Pico W diese Rolle und ermöglicht es z. B. einem Smartphone oder einer ESP32-CAM, sich direkt mit ihm zu verbinden.
Was ist ein Webserver?
Ein Webserver stellt Inhalte – meist HTML-Seiten – über das Netzwerk zur Verfügung. In diesem Projekt zeigt der Pico W eine einfache Webseite an, sobald ein Gerät im Browser seine IP-Adresse aufruft. Diese Seite listet z. B. die IP-Adressen aller verbundenen Geräte auf.
Grenzen des Projekts
Auch wenn der Pico W erstaunlich viel kann, gibt es technische Einschränkungen, die man kennen sollte:
- WLAN-Reichweite: Die integrierte Antenne des Pico W reicht in der Praxis nur für kurze Distanzen. Für größere Reichweiten ist ein WLAN-Router oder ein ESP32-Modul mit externer Antenne besser geeignet.
- Datenübertragung: Der Pico W eignet sich nicht für große Datenmengen, er reicht aber für kleine Geräte wie einer ESP32-CAM.
- Mehrere Verbindungen: Der Pico W kann nur eine begrenzte Anzahl an gleichzeitigen Clients verarbeiten – perfekt für kleine DIY-Projekte, aber nicht für ein ganzes Smarthome-Netzwerk.
Technische Daten des Raspberry Pi Pico W
Der Raspberry Pi Pico W basiert auf dem bewährten RP2040-Chip und ist dank integrierter WLAN-Funktion ideal für einfache IoT- und Netzwerkprojekte geeignet. Hier ein Überblick über die wichtigsten technischen Merkmale:
- Mikrocontroller: RP2040 (Dual-Core ARM Cortex-M0+ @ 133 MHz)
- RAM: 264 KB SRAM
- Flash-Speicher: 2 MB
- WLAN: 2,4 GHz WiFi (802.11n), integriert über CYW43439
- GPIOs: 26 nutzbare Pins
- Spannungsversorgung: 1,8–5,5 V über USB oder VSYS
- Schnittstellen: I²C, SPI, UART, PWM, ADC, USB (Device)






Der Pico W eignet sich hervorragend für MicroPython-Projekte, bei denen WLAN eine Rolle spielt – z. B. als Access Point mit Weboberfläche, wie in diesem Beitrag gezeigt.
Hinweis zum RP2350
Die Raspberry Pi Foundation hat mit dem RP2350 einen Nachfolger des RP2040 vorgestellt. Erste Boards mit integriertem WiFi und dem neuen Chip sind inzwischen erhältlich.
Da sich der RP2350 in mehreren Punkten vom RP2040 unterscheidet, werde ich in einem separaten Beitrag ausführlich auf die technischen Unterschiede, Vorteile und Einsatzmöglichkeiten eingehen.
Benötigte Bauteile
Für dieses Projekt ist die Materialliste angenehm kurz, denn der Raspberry Pi Pico W bringt bereits alles mit, was wir brauchen – inklusive WLAN-Chip.
Du benötigst lediglich:
- 1× Raspberry Pi Pico W*
- 1× USB-Datenkabel* (USB-A auf Micro-USB) – wichtig: kein reines Ladekabel!
- Die Entwicklungsumgebung Thonny zur Programmierung mit MicroPython
Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!
Die Einrichtung von Thonny sowie die ersten Schritte mit dem Raspberry Pi Pico habe ich bereits in einem separaten Beitrag beschrieben: 👉 Raspberry Pi Pico (1): Vorstellung und erste Schritte
Damit bist du bestens vorbereitet, um mit dem Projekt zu starten!
Firmware-Update des Raspberry Pi Pico W
Da ich meinen Pico W längere Zeit nicht verwendet habe, aktualisiere ich zunächst die MicroPython-Firmware – von Version 1.20.0 auf 1.25.0.
Ein Firmware-Update kann nicht nur neue Features mitbringen, sondern auch wichtige Bugfixes enthalten – daher ist es sinnvoll, vor Beginn eines neuen Projekts zu prüfen, ob eine aktuellere Version verfügbar ist.

Die aktuelle MicroPython-Firmware für den Raspberry Pi Pico W findest du hier:
👉 https://micropython.org/download/rp2-pico-w/ am einfachsten ist es jedoch wenn du die Thonny IDE verwendest, hier sind es nur wenige klicks.
Wichtiger Hinweis: Beim Flashen der Firmware wird der komplette Speicher des Boards gelöscht. Alle Programme, Dateien und Einstellungen auf dem Pico W gehen dabei verloren!
Stelle also sicher, dass du wichtige Skripte vorher gesichert hast.

Hinweis zur Firmware-Version (Stand: 25.06.2025)
Beim Test mit der Firmware v1.25.0 trat auf meinem Raspberry Pi Pico W der folgende Fehler auf:
[CYW43] Failed to start CYW43
In diesem Fall konnte der WLAN-Chip nicht korrekt initialisiert werden, wodurch sich der Access Point nicht starten ließ.
Nach einem Wechsel auf die Vorgängerversion v1.24.1 funktionierte alles problemlos, und der AP wurde wie erwartet erstellt.
👉 Mein Tipp: Wenn du diesen Fehler ebenfalls bekommst, probiere es mit der Firmware v1.24.1, die du ebenfalls auf der offiziellen MicroPython-Seite findest: https://micropython.org/download/rp2-pico-w/
Ich beobachte das Verhalten weiter und aktualisiere diesen Beitrag, sobald es dazu neue Erkenntnisse oder eine Lösung gibt.
Access Point mit dem Pico W einrichten
Nachdem alle Vorbereitungen abgeschlossen sind und die Firmware auf dem aktuellen Stand ist, können wir mit der eigentlichen Programmierung beginnen. Im ersten Schritt richten wir den Raspberry Pi Pico W als WLAN-Access Point (AP) ein. Dadurch erzeugt der Mikrocontroller ein eigenes WLAN, mit dem sich beispielsweise ein Smartphone oder ein anderes WLAN-fähiges Gerät verbinden kann.
Beispielcode: AP mit SSID „PicoAP“ und einfachem Passwort
import network import time # Access Point konfigurieren ap = network.WLAN(network.AP_IF) # SSID = PicoAP # Passwort = 12345678 (muss min. 8 Zeichen enthalten!) ap.config(essid='PicoAP', password='12345678') ap.active(True) # Warten bis aktiv while not ap.active(): print(".", end="") time.sleep(1) print("Access Point aktiv!") print("IP-Adresse:", ap.ifconfig()[0])
Wenn das kleine Script gestartet wird, wird ein AP mit dem Namen (SSID) PicoAP aufgebaut und man kann sich mit einem Handy, Table oder PC mit diesem verbinden.

Webserver mit Liste der IP-Adressen
Der folgende Code richtet einen einfachen Webserver im Access-Point-Modus ein. Er listet alle Geräte auf, die sich zumindest einmal mit dem WLAN verbunden und die IP-Adresse 192.168.4.1
im Browser aufgerufen haben.
Denn genau dann sendet das Gerät einen HTTP-Request
an den Pico W – und dieser wird vom Server erfasst.

import network import socket import time # Access Point einrichten ap = network.WLAN(network.AP_IF) ap.config(essid='PicoAP', password='12345678') # Passwort muss min. 8 Zeichen sein ap.active(True) while not ap.active(): time.sleep(1) print("Access Point aktiv. IP:", ap.ifconfig()[0]) # Set zur Speicherung der bekannten IP-Adressen clients = set() # Webserver starten addr = socket.getaddrinfo('0.0.0.0', 80)[0][-1] s = socket.socket() s.bind(addr) s.listen(1) print("Webserver läuft auf Port 80...") while True: conn, addr = s.accept() client_ip = addr[0] print("Verbindung von:", client_ip) clients.add(client_ip) # HTML-Inhalt generieren html = """<!DOCTYPE html> <html> <head><title>Pico W Access Point</title></head> <body> <h1>Willkommen beim PicoAP</h1> <p><strong>Deine IP-Adresse:</strong> {}</p> <h2>Bekannte Geräte:</h2> <ul> """.format(client_ip) for ip in clients: html += " <li>{}</li>\n".format(ip) html += """ </ul> </body> </html> """ # Antwort senden response = 'HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n' + html conn.send(response.encode('utf-8')) conn.close()
Geräte automatisch identifizieren per HTTP-Header
Wenn du Zugriff auf den Code eines Geräts hast – etwa bei einer ESP32-CAM, die sich mit dem Pico-WLAN verbindet – kannst du direkt nach der Verbindung automatisch einen HTTP-Request mit einem benutzerdefinierten Header absenden. Dieser Header enthält z. B. den Gerätenamen, den der Pico W auswerten und anzeigen kann.
Das hat den Vorteil, dass du auf dem Pico nicht nur die IP-Adresse des Geräts speichern kannst, sondern auch direkt einen zugeordneten Namen. So entsteht eine übersichtliche Geräteliste im Format:

Beispielcode für die ESP32-CAM in der Arduino IDE
Damit das funktioniert, musst du im Code der ESP32-CAM die Library HTTPClient
einbinden und am Ende der setup()
-Funktion einmalig einen HTTP-Request an den Pico W senden:
#include <HTTPClient.h> void sendDeviceHeader() { HTTPClient http; // IP des Pico W http.begin("http://192.168.4.1/"); // Gerätekennung http.addHeader("X-Device-Name", "ESP32-CAM"); // Senden des Requests int httpCode = http.GET(); // Verbindung schließen http.end(); } void setup() { ... // Direkt nach erfolgreicher Verbindung aufrufen sendDeviceHeader(); }
Auswertung im MicroPython-Code
Da du auf dem Webserver des Pico W ebenfalls den Code selbst kontrollierst, kannst du den Header sehr einfach im Request auslesen und zuordnen. In deinem Webserver prüfst du dazu jede eingehende Verbindung nach dem Header X-Device-Name
:
for line in request.split("\r\n"): if line.startswith("X-Device-Name:"): device_name = line.split(":", 1)[1].strip()
Damit ordnest du der IP-Adresse zuverlässig den Gerätenamen zu – ideal für Projekte mit mehreren bekannten Teilnehmern wie Sensoren, Kameras oder Aktoren.
Fertiger Code: Pico W als WLAN-Hotspot mit Geräteliste
Im folgenden Abschnitt findest du den vollständig lauffähigen MicroPython-Code für dieses Projekt. Er verwandelt deinen Raspberry Pi Pico W in einen eigenen WLAN-Hotspot und stellt eine einfache Weboberfläche bereit.

Sobald sich ein Gerät mit dem WLAN verbindet und einen HTTP-Request an http://192.168.4.1
sendet (z. B. automatisch durch einen Mikrocontroller oder manuell im Browser), wird dessen IP-Adresse zusammen mit einem benutzerdefinierten Gerätenamen angezeigt. Der Gerätename wird dabei über den HTTP-Header X-Device-Name
übermittelt.
# ------------------------------------------------------------ # Titel: Raspberry Pi Pico W – WLAN-Hotspot mit Weboberfläche # Beschreibung: # Dieser Code verwandelt den Raspberry Pi Pico W in einen Access Point (AP), # der eine einfache Webseite ausliefert. Alle Geräte, die sich mit dem WLAN # verbinden und einen HTTP-Request senden, werden mit ihrer IP-Adresse # und einem benutzerdefinierten Gerätenamen (per HTTP-Header) geloggt # und auf der Webseite angezeigt. # # Autor: Stefan Draeger # Blogbeitrag: # https://draeger-it.blog/raspberry-pi-pico-w-als-wlan-hotspot-mit-weboberflaeche-geraete-im-netzwerk-anzeigen/ # ------------------------------------------------------------ import network import socket import time # WLAN Access Point konfigurieren ap = network.WLAN(network.AP_IF) # AP_IF = Access Point Interface ap.config(essid='PicoAP', password='12345678') # WLAN-Name und Passwort (mind. 8 Zeichen) ap.active(True) # AP aktivieren # Warten, bis der Access Point aktiv ist while not ap.active(): time.sleep(1) print("Access Point aktiv. IP:", ap.ifconfig()[0]) # Dictionary zur Speicherung von verbundenen Clients # Format: { "IP-Adresse": "Gerätename" } clients = {} # Webserver einrichten addr = socket.getaddrinfo('0.0.0.0', 80)[0][-1] # IPv4-Adresse, Port 80 s = socket.socket() s.bind(addr) s.listen(1) # Max. 1 gleichzeitige Verbindung (ausreichend für einfache Anzeige) print("Webserver läuft...") # Endlosschleife zur Verarbeitung eingehender Verbindungen while True: conn, addr = s.accept() # Verbindung akzeptieren request = conn.recv(1024).decode() # HTTP-Request empfangen ip = addr[0] # IP-Adresse des Clients device_name = "Unbekannt" # Standardwert # HTTP-Header nach dem benutzerdefinierten Feld "X-Device-Name" durchsuchen for line in request.split("\r\n"): if line.startswith("X-Device-Name:"): device_name = line.split(":", 1)[1].strip() break # Nur ersten passenden Header verarbeiten # IP-Adresse und Gerätename im Dictionary speichern oder aktualisieren clients[ip] = device_name print("Verbindung von {} – Name: {}".format(ip, device_name)) # Dynamisches HTML für die Antwort generieren html = """<!DOCTYPE html> <html> <head><title>Pico W Access Point</title></head> <body> <h1>Geräteliste</h1> <ul> """ # Alle bekannten Clients auflisten for ip, name in clients.items(): html += " <li>{}-{}<br></li>\n".format(ip, name) html += """ </ul> </body> </html> """ # HTTP-Antwort senden (Statuscode 200 OK) response = 'HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n' + html conn.send(response.encode('utf-8')) # Antwort übertragen conn.close() # Verbindung schließen