Wie bekomme ich Wi-Fi, Internet auf Raspberry Pi Pico

[ad_1]
Das Himbeer-Pi-Pico ist ein wunderbares Teil des Kits, aber es fehlt eine wichtige Funktion, Wi-Fi! Wir sind zuerst auf die Idee gestoßen, dem Raspberry Pi Pico Wi-Fi hinzuzufügen, während wir das überprüft haben Cytron Maker Pi Pico, die eine ESP-01-Schnittstelle für eine ESP8266-Variantenkarte bereitstellte. Dies war jedoch eher begrenzt.
Nachdem der leitende Entwickler von CircuitPython, Scott Shawcroft, in The Pi Cast, unserer wöchentlichen Pi-Show, aufgetreten war, erfuhren wir, dass Adafruit über ein ESP32-basiertes Add-On-Board verfügt, das grundlegende Wi-Fi-Konnektivität bietet. Nach einem Tag des Bastelns haben wir dieses Tutorial erstellt zeigt, wie Sie Ihren Raspberry Pi Pico online stellen können.
Um WLAN auf Raspberry Pi Pico zu erhalten, benötigen Sie:
- Ein Himbeer-Pi-Pico
- Adafruit Airlift WiFi Featherwing Co-Prozessor
- 8 x Überbrückungsdrähte von Stecker zu Stecker
- Steckbrett
Ziel dieses Tutorials ist es, unseren Raspberry Pi Pico über WLAN mit dem Internet zu verbinden, auf die OpenWeather-Service-API zuzugreifen und das Wetter für den von uns ausgewählten Standort zu ermitteln. Diese Rohdaten werden an die Python-Shell gesendet, können jedoch problemlos an einen OLED-Bildschirm oder ein LCD gesendet oder zum Auslösen einer Folge von Ereignissen verwendet werden.
Verkabelung des Raspberry Pi Pico für Wi-Fi
Für dieses Tutorial benötigen wir Header-Pins, die mit dem Raspberry Pi Pico und der Featherwing Airlift verlötet sind. Da wir beide Boards in einem Steckbrett verwenden, reichen die mitgelieferten männlichen Header aus. Wenn Sie den Featherwing mit einem Adafruit Feather-Board wie dem Feather RP2040 verwenden möchten, müssen Sie weibliche Header an der Oberseite des Mikrocontrollers anlöten. Bitte beachten Sie, dass im Diagramm die Positionen von MISO, MOSI und SCK auf dem Federflügel korrekt sind. Stellen Sie sicher, dass Sie diese Stifte identifizieren und sich nicht darauf verlassen, die Stifte zu zählen, da sich auf der realen Platine ein zusätzlicher GPIO-Stift am Federflügel befindet.
Pin-Mapping
Himbeer-Pi-Pico | Adafruit Airlift WiFi Featherwing Co-Prozessor |
VSYS | USB |
GND | Beliebiger GND-Pin |
GPIO 10 | SCK |
GPIO 11 | MOSI |
GPIO 12 | MISO |
GPIO 13 | ESPCS |
GPIO 14 | ESPBUSY |
GPIO 15 | ESPRST |
Installieren von CircuitPython auf Raspberry Pi Pico
Das Flashen von CircuitPython auf den Raspberry Pi Pico ist einfach.
- Laden Sie die neueste Version herunter von CircuitPython für den Pico.
- Halten Sie die BOOTSEL-Taste gedrückt am Pico und stecken Sie ein USB-Kabel in den Pico und Ihren Computer.
- Kopieren Sie die CircuitPython UF2-Datei in das RPI-RP2 Fahrt. Das Laufwerk wird ausgeblendet und verschwindet, während der Code geflasht wird. Ein neues Laufwerk CIRCUITPY wird angezeigt, das bestätigt, dass der Flash erfolgreich war.
- Laden Sie das Bibliotheksarchiv herunter für die Version von CircuitPython, die Sie heruntergeladen haben. In unserem Fall haben wir 6.2.0 heruntergeladen, daher müssen wir Bundle Version 6 herunterladen.
- Extrahieren Sie den Inhalt des Downloads in einen Ordner.
- Kopieren Sie die folgenden Dateien / Ordner in den lib-Ordner auf dem CIRCUITPY-Laufwerk.
adafruit_bus_device
adafruit_minimqtt
adafruit_io
adafruit_esp32_spi
Adafruit_requests
Erstellen eines OpenWeather-Kontos
In diesem Tutorial verwenden wir die OpenWeather-API, um die Wetterdaten für jeden Ort auf der ganzen Welt abzurufen. Um die API nutzen zu können, müssen wir uns für ein kostenloses Konto anmelden.
- Erstellen Sie ein Konto auf der OpenWeather Seite? ˅ und einloggen.
- Navigieren Sie zu Meine APi-Schlüssel, finden Sie im Dropdown-Menü für Ihren Benutzernamen.
- Geben Sie unter Schlüssel erstellen TomsHardware ein und klicken Sie auf GENERIEREN.
- Halten Sie diese Seite offen da wird der API-Schlüssel später benötigt.
Schreiben von CircuitPython-Code
CircuitPython hat die gleiche Syntax und Haptik wie Python und MicroPython, aber wir haben die Wahl zwischen verschiedenen Editoren, im Gegensatz zu MicroPython, das uns auf Thonny beschränkt. Mit CircuitPython können wir Thonny, Mu oder für fortgeschrittene Benutzer Visual Studio Code verwenden. Für diesen Teil des Tutorials haben wir Visual Studio Code verwendet, aber das spielt keine Rolle, da wir nur eine Textdatei bearbeiten.
1. Öffnen Sie code.py, in CIRCUITPY gefunden, löschen Sie jeden Text in der Datei.
2. Importieren Sie eine Reihe von CircuitPython-Bibliotheken notwendig, damit dieses Projekt funktioniert. Die Board-, Busio- und Digitalio-Bibliotheken übernehmen die Kommunikation mit dem GPIO, beispielsweise der SPI-Schnittstelle. Anfragen, Sockets und esp32spi verarbeiten die Netzwerkkonnektivität über den ESP32. Die letzte Bibliothek, Geheimnisse, existiert noch nicht. Wir werden das später schaffen.
import board
import busio
from digitalio import DigitalInOut
import adafruit_requests as requests
import adafruit_esp32spi.adafruit_esp32spi_socket as socket
from adafruit_esp32spi import adafruit_esp32spi
from secrets import secrets
3. Fügen Sie eine Zeile hinzu, um eine Nachricht zu drucken In der Python-Shell wird lediglich angegeben, was das Projekt tun wird.
print("Raspberry Pi Pico WiFi Weather Station")
4. Erstellen Sie ein neues Objekt, JSON_URL. Dieses Objekt speichert eine URL, die den Speicherort enthält, nach dem wir suchen möchten, und einen OpenWeather-API-Schlüssel, den wir zuvor generiert haben. Ersetzen Sie den STANDORT durch die Stadt und den API-SCHLÜSSEL durch Ihren OpenWeather-API-Schlüssel.
JSON_URL = "http://api.openweathermap.org/data/2.5/weather?q=LOCATION&appid=API KEY&units=metric"
5. Erstellen Sie drei Objekte, wird für die ESP32-Konnektivität über die SPI-Schnittstelle verwendet. Chip Select (CS), Ready und Reset werden verwendet, um den Bereitschaftszustand des ESP32-Co-Prozessors zu aktivieren und zu lesen.
esp32_cs = DigitalInOut(board.GP13)
esp32_ready = DigitalInOut(board.GP14)
esp32_reset = DigitalInOut(board.GP15)
6. Erstellen Sie ein Objekt, spi, Hier erfahren Sie, wo sich die SPI-Schnittstelle auf dem Pico befindet.
spi = busio.SPI(board.GP10, board.GP11, board.GP12)
7. Erstellen Sie das Objekt, insb. Mit diesem Code teilen wir unserem Code mit, wo sich der ESP32 auf dem SPI und die zur Steuerung des ESP32 erforderlichen Pins befinden.
esp = adafruit_esp32spi.ESP_SPIcontrol(spi, esp32_cs, esp32_ready, esp32_reset)
8. Richten Sie den Code für die Verwendung von Sockets einDies ist ein Mittel, um zwei Geräte in einem Netzwerk zu verbinden, in unserem Fall, um den Raspberry Pi Pico mit dem Airlift WiFi Featherwing zu verbinden.
requests.set_socket(socket, esp)
9. Erstellen Sie eine Schleife zum Verbinden zu Wi-Fi. Die nächsten sechs Zeilen behandeln die Verbindung zu unserem WiFi-AP. Die Schleife überprüft den ESP32 auf eine Verbindung. Solange keine Verbindung besteht, wird die Schleife so lange wiederholt, bis eine Verbindung hergestellt ist. In dieser Schleife befindet sich ein Ausnahmebehandler, der versucht, mithilfe der SSID und des Kennworts in der Geheimbibliothek eine Verbindung zu unserem WLAN herzustellen. Diese werden wir später erstellen. Wenn keine Verbindung hergestellt wird, wird ein Fehler angezeigt.
while not esp.is_connected:
try:
esp.connect_AP(secrets["ssid"], secrets["password"])
except RuntimeError as e:
print("could not connect to AP, retrying: ", e)
continue
10. Fügen Sie drei Zeilen hinzu. Die erste druckt eine Nachricht, die uns darüber informiert, dass der Code die Wetterdaten abruft, die zweite Zeile erstellt ein Objekt r, das die vom OpenWeather-API-Aufruf zurückgegebenen Daten speichert, und die dritte Zeile druckt den HTTP-Statuscode für Debugzwecke. Ein 200-Code bedeutet, dass alles funktioniert, aber ein Code im 400-Bereich bedeutet, dass ein Problem mit der API vorliegt.
print("Fetching weather data")
r = requests.get(JSON_URL)
print(r.status_code)
11. Fügen Sie eine Zeile hinzu, um das Minuszeichen zu drucken, -, vierzig Mal, Erstellen eines Trennzeichens für die Python-Ausgabe.
print("-" * 40)
12. Verwenden Sie eine Druckfunktion, um die Temperaturdaten zu drucken im zurückgegebenen JSON-Objekt gefunden. Mit r.json () können wir in den Daten nach zwei Schlüsselwörtern suchen, ‘main’ und ‘temp_max’, und diese direkt in die Druckfunktion einfügen. Am Ende der Zeile fügen wir das ‘C’ hinzu, da die zurückgegebenen Temperaturdaten in Celsius angegeben sind.
print("The current temperature is",r.json()['main']['temp_max'],"C")
13. Fügen Sie diese letzten beiden Zeilen hinzu um eine weitere Trennzeile zu drucken, bevor das Anforderungsobjekt geschlossen wird.
print("-" * 40)
r.close()
14. Speichern Sie den Code als code.py an die Wurzel des CIRCUITPY-Laufwerks.
Vollständiger Code für Wi-Fi auf Raspberry Pi Pico
import board
import busio
from digitalio import DigitalInOut
import adafruit_requests as requests
import adafruit_esp32spi.adafruit_esp32spi_socket as socket
from adafruit_esp32spi import adafruit_esp32spi
from secrets import secrets
print("Raspberry Pi Pico WiFi Weather Station")
JSON_URL = "http://api.openweathermap.org/data/2.5/weather?q=LOCATIONl&appid=APIKEY&units=metric"
esp32_cs = DigitalInOut(board.GP13)
esp32_ready = DigitalInOut(board.GP14)
esp32_reset = DigitalInOut(board.GP15)
spi = busio.SPI(board.GP10, board.GP11, board.GP12)
esp = adafruit_esp32spi.ESP_SPIcontrol(spi, esp32_cs, esp32_ready, esp32_reset)
requests.set_socket(socket, esp)
while not esp.is_connected:
try:
esp.connect_AP(secrets["ssid"], secrets["password"])
except RuntimeError as e:
print("could not connect to AP, retrying: ", e)
continue
print("Fetching weather data")
r = requests.get(JSON_URL)
print(r.status_code)
print("-" * 40)
print("The current temperature is",r.json()['main']['temp_max'],"C")
print("-" * 40)
r.close()
Erstellen einer Secrets-Datei für die Wi-Fi-Anmeldung
In der Datei secret.py können wir unsere Wi-Fi-SSID, unseren Benutzernamen und unser Passwort speichern. In unserem Hauptcode verhält es sich wie eine Python-Bibliothek, da wir die Bibliothek importieren und dann das Wörterbuch aufrufen, das die SSID und das Kennwort enthält. Bevor dies geschehen kann, müssen wir die Datei secret.py erstellen.
1. Erstellen Sie eine neue Datei in Ihrem Texteditor.
2. Erstellen Sie ein Wörterbuch, Geheimnisse, das Ihre SSID und Ihr Passwort für Ihren Router enthält. Stellen Sie die Zeitzone so ein, dass sie Ihrem Standort entspricht.
secrets = {
'ssid' : 'YOUR WIFI AP',
'password' : 'YOUR PASSWORD',
'timezone' : 'Europe/London', # http://worldtimeapi.org/timezones
}
3. Speichern Sie die Datei unter Secrets.py am selben Ort wie code.py.
Ausführen des Codes für Wi-Fi auf Raspberry Pi Pico
Der Code wird automatisch ausgeführt, aber die Ausgabe wird nur angezeigt, wenn eine Verbindung zur Python-Shell besteht. Der einfachste Weg, dies zu erreichen, ist die Verwendung eines Terminalemulators wie PuTTY.
1. Laden Sie PuTTY herunter und installieren.
2. Verbinden Sie Ihren Pico an den Computer (falls noch nicht verbunden).
3. Suchen Sie die COM-Portnummer für deinen Pico. In Windows öffnen Sie dazu den Geräte-Manager, suchen nach Anschlüssen, klicken auf das Dropdown-Menü und suchen den Eintrag für Ihren Pico (er ist nicht eindeutig gekennzeichnet, sodass Sie möglicherweise ein- und ausstecken müssen, um zu sehen, welcher verschwindet). Unsere war auf COM4.
4. Öffnen Sie PuTTYKlicken Sie auf Seriell und stellen Sie die serielle Leitung so ein, dass sie mit dem im Geräte-Manager gefundenen COM-Anschluss übereinstimmt. Stellen Sie die Geschwindigkeit auf 115200 ein und klicken Sie dann auf Öffnen.
PuTTY stellt eine Verbindung her und zeigt die Python-Shell
5. Drücken Sie STRG + D, um die Shell neu zu starten und führen Sie den Code aus. Nach einigen Sekunden wird das aktuelle Wetter für Ihren Standort angezeigt.
[ad_2]
#Wie #bekomme #ich #WiFi #Internet #auf #Raspberry #Pico
Cricut-Projekte für Anfänger und größere Kinder