Wenn man ein Projekt mit Elektronik umsetzen muss, dann muss man nicht immer einen grossen Raspberry Pi 4 oder 5 einsetzen. So ein Gerät ist dann oft einfach zu gross oder zu Energiefressend. Meistens reicht es dann auch dass man einfach so ein kleines Pico einsetzt und davon gibt es ja 2 Versionen – einmal mit und einmal ohne Wlan Chip.
Heute zeige ich euch wie ihr auf einem Raspberry Pico W mit Micropython euch einen kleinen Webserver programmieren könnt und wie ihr da auch 2 Unterseiten einbauen könnt.
Mit diesem Server habt ihr jetzt die Möglichkeit dass ihr Geräte / Sensoren die an euer Pico W angeschlossen sind, direkt zu steuern.
Eine sehr praktische Sache also für Menus und Sensordaten Ausgaben.
Video
Micropython / Python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | import network import usocket as socket import utime as time WLAN_SSID = "XXX" WLAN_PASSWORD = "YYYYY" # WLAN-Verbindung einrichten wlan = network.WLAN(network.STA_IF) wlan.active(True) wlan.connect(WLAN_SSID, WLAN_PASSWORD) # Warten, bis die Verbindung hergestellt ist while not wlan.isconnected(): pass # IP-Adresse des Raspberry Pi Pico anzeigen print("Verbunden mit WLAN. IP-Adresse:", wlan.ifconfig()[0]) # HTML-Inhalte für die verschiedenen Seiten html = { "/": """ <h1>Willkommen auf der Startseite!</h1> <a href="/page1">Seite 1</a><br> <a href="/page2">Seite 2</a> """, "/page1": """ <h1>Dies ist Seite 1</h1> <a href="/">Zurück zur Startseite</a><br> <a href="/page2">Seite 2</a> """, "/page2": """ <h1>Dies ist Seite 2</h1> <a href="/">Zurück zur Startseite</a><br> <a href="/page1">Seite 1</a> """ } # Funktion zum Senden von HTTP-Antworten def send_response(conn, content): response = "HTTP/1.0 200 OK\r\nContent-Type: text/html; charset=utf-8\r\n\r\n" + content conn.send(response) # Funktion zum Verarbeiten eingehender Verbindungen def handle_connection(conn): start_time = time.ticks_ms() # Startzeit für die Verarbeitung der Anfrage request = conn.recv(1024).decode() print("Request:", request) # Extrahieren des Pfads aus der Anforderung path = request.split()[1] # Senden der entsprechenden Seite, falls vorhanden, sonst 404 if path in html: send_response(conn, html[path]) else: send_response(conn, "<h1>404 Not Found</h1>") conn.close() end_time = time.ticks_ms() # Endzeit nachdem die Antwort gesendet wurde processing_time = time.ticks_diff(end_time, start_time) # Gesamtverarbeitungszeit berechnen print("Request processed in:", processing_time, "ms") # Webserver starten server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.bind(('', 80)) server.listen(5) print("Webserver gestartet.") # Auf eingehende Verbindungen warten und diese bearbeiten while True: conn, addr = server.accept() print("Verbunden mit", addr) handle_connection(conn) |
0 Kommentare