Betreiben Sie einen Webserver auf Ihrem Raspberry Pi Pico W
Dieses Projekt kann als das "Hello World!" des Pico W betrachtet werden. Es demonstriert, wie man eine Wi-Fi-Verbindung herstellt, wie man einen HTTP-Webserver auf dem Pico W betreibt und wie man die GPIO-Pins steuert.
Wenn du ein schnelles und einfaches Projekt suchst, um mit deinem Pico anzufangen, ist dies genau das Richtige für dich!
Schritte zum Blinken der LED über WiFi auf dem Pico W
Es gibt drei übergreifende Themen, um dies zu erreichen.
MicroPython einrichten
Zunächst müssen Sie MicroPython einrichten. Laden Sie die UF2-Datei hier herunter das speziell für den Pico W gedacht ist.
Halten Sie die BOOTSEL-Taste gedrückt und schließen Sie Ihren Pico W über USB an.
Sobald er gemountet ist, kopieren Sie die soeben heruntergeladene UF2-Datei auf den Pico.
Thonny zum Programmieren von Pico W verwenden
Thonny macht es einfach, den Pico W zu programmieren, und er ist auf dem Raspberry Pi OS vorinstalliert. Sie können auch Hier können Sie es für Windows, Mac und Linux herunterladen.
Stellen Sie sicher, dass Ihr Interpreter auf MicroPython (Raspberry Pi Pico) eingestellt ist.
Thonny verbindet sich mit dem Raspberry Pi Pico W und Sie können Befehle in der Shell (dem unteren Segment der Thonny IDE) ausführen.
Führen Sie einen Netzwerk-Scan durch, um sicherzustellen, dass der Pico W Wireless funktioniert.
In der Shell können Sie diesen Code ausführen, um zu testen, ob Ihr Funkchip funktioniert.
Verwenden Sie diesen Code, um alle verfügbaren drahtlosen Netzwerke in Ihrem Gebiet auszudrucken.
import network
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
print(wlan.scan())
Programmieren Sie den Webserver
Erstellen Sie ein Wörterbuch namens geheimnisse.py und verwenden Sie den folgenden Inhalt, wobei Sie die Werte für ssid und pw durch Ihr Netzwerk ersetzen.
secrets = {
'ssid': 'Replace-this-with-your-Wi-Fi-Name',
'pw': 'Replace-this-with-your-Wi-Fi-Password'
}
Dann erstellen Sie main.py die Ihren Hauptcode beherbergen wird. Da der Code viele Zeilen lang ist, Sie finden es hier in unserem Github.
Erstellen Sie die HTML-Seite, die ausgeliefert werden soll
Die folgende Datei wird die HTML-Datei sein, die angezeigt wird, wenn Sie die IP-Adresse des Pico W laden. Speichern Sie sie als index.html
Es ist eine einfache Seite mit zwei Tasten, mit denen Sie die LED des Pico W ein- und ausschalten können.
<!DOCTYPE html>
<html>
<head>
<title>Pico W</title>
</head>
<body>
<h1>Pico W</h1>
<p>Control the onboard LED</p>
<a href=\"?led=on\"><button>ON</button></a>
<a href=\"?led=off\"><button>OFF</button></a>
</body>
</html>
Zeit, alles zu erledigen
Klicken Sie in Thonny auf die Schaltfläche "Ausführen", die eine grüne Schaltfläche mit einem Spielsymbol ist.
Sie sehen die IP-Adresse des Pico W. Kopieren Sie diese in Ihren Webbrowser, der mit demselben drahtlosen Netzwerk verbunden ist.
Klicken Sie auf die Schaltflächen und Sie sollten die Änderung sehen.
Sie finden die Github repo hier, die alle Dateien hat.
Und wenn Sie auf der Suche nach weiteren Projekten sind, die Sie inspirieren, dann schauen Sie sich unsere Paragon Projects-Serie an hier.
Fehler gefunden, wenn ich es ausprobiere
%Run -c $EDITOR_CONTENT
Traceback (letzter Aufruf):
Datei "", Zeile 1, in
ImportError: kein Modul namens 'Netzwerk'
Hallo Pablo - vergewissern Sie sich, dass Sie die neueste UF2-Datei für den Pico W (nicht nur den Pico) verwenden - diese finden Sie hier. https://www.raspberrypi.com/documentation/microcontrollers/micropython.html
Das Netzwerkmodul ist serienmäßig dabei!
In Zeile 100 verwenden Sie die Funktion get_html(). Wenn ich Ihren Code ausführe, erhalte ich die Fehlermeldung "get_html" ist nicht definiert.
Die Suchfunktion gibt auch einen Wert zurück, wenn z.B. der Referrer den String 'led=xx' enthält. So erhalten led_on und led_off gleichzeitig einen positiven Wert und die LED wird wieder ausgeschaltet, obwohl sie eigentlich eingeschaltet werden sollte. Um dies zu umgehen, muss die if-Anweisung so erweitert werden, dass sie auf einen kleinen Indexwert prüft (ich habe 20 nur als Faustregel verwendet):
wenn (led_on > -1 und led_on -1 und led_off < 20):
Jetzt funktioniert es wie erwartet.
J'ai résolu le problème en ajoutant la ligne :
r = r[:50]
Avantgarde
led_on = r.find('?led=on')
led_off = r.find('?led=off')
Damit werden die überflüssigen Merkmale der Anfrage gelöscht.
Ich habe versucht zu kommentieren, aber irgendwie kommt der Kommentar nicht richtig raus...