Raspberry Pi Pico W (Solarbetriebene) Ferngesteuerte Wetterstation
Ein ganz besonderes Merkmal des Raspberry Pi Pico W ist die SoftAP-Funktion.
SoftAP steht für Software-enabled Access Point, mit dem Sie ein WiFi-Netzwerk direkt vom Raspberry Pi Pico W aus senden können.
Aus diesem Grund haben wir uns für dieses solarbetriebene Projekt entschieden.
Wie sich ein solarbetriebenes Projekt mit SoftAP überschneidet
Hier ist das Problem.
Wenn Sie ein Projekt erstellen möchten, das Daten außerhalb Ihres Hauses misst, werden Sie feststellen, dass Sie diese Daten nicht drahtlos erhalten können.
In diesem Szenario können Sie auch den normalen Pico verwenden, da Sie seine drahtlose Fähigkeit nicht nutzen können.
Ein solarbetriebenes Projekt ist wahrscheinlich eines davon, da man es an einem sonnenbeschienenen Ort aufstellen muss, der sich normalerweise im Freien befindet.
Hier kommt SoftAP ins Spiel. Nehmen wir an, Sie möchten wissen, wie das Wetter draußen ist. Dann verbinden Sie sich mit der SoftAP, die der Raspberry Pi Pico W sendet, und loggen sich dann in die IP-Adresse ein, die die Daten anzeigt.
Dies ist so ziemlich das beste Szenario, wie wir die Vorteile des Raspberry Pi Pico W nutzen können.
Ich meine, es ist möglich, einen LTE-Zusatz oder einen drahtlosen Langstrecken-Zusatz zu kaufen, aber dann wäre es nicht wirklich ein Pico W-Tutorial, da man diese Komponenten einfach auf dem normalen Pico verwenden könnte.
Was ist mit Bluetooth auf dem Raspberry Pi Pico W?
Es wäre toll, wenn Sie Bluetooth verwenden könnten, aber zum Zeitpunkt der Veröffentlichung dieses Tutorials ist Bluetooth auf dem Raspberry Pi Pico W nicht aktiviert.
Am 1. Juli 2022 sagte Raspberry Pi Engineer & Forum Moderator jamesh: "Wir haben bereits mit der Arbeit an der Software für BT begonnen, einen Zeitplan kann ich noch nicht anbieten. Die Software muss getestet und Anleitungen geschrieben werden."
Teile
- Raspberry Pi Pico W
- Solarmodul 6V
- TP4056 USB-C-Lademodul
- NR18650 Li-Ion-Akku 3,6 V
- BME688 Breakout Board
- Batteriehalter für Typ 18650
- Schottky-Diode
- Stiftleisten für den Pico W und BME688
- Brettchen
Aktualisieren Sie die Firmware Ihres Raspberry Pi Pico W
Die Firmware des Raspberry Pi Pico W wird ständig weiterentwickelt, so dass es am besten wäre, die neueste Firmware zu verwenden. Zum Beispiel hat die erste öffentliche MicroPython UF2 für den Pico W einige Probleme mit der Sicherheit, da Netzwerke immer offen sind.
Folgen Sie diesem Link, um zu erfahren, wie Sie sie aktualisieren können. Der Link zeigt Ihnen auch eine Schnellstartmethode für die Übertragung Ihres eigenen WiFi-Netzwerks.
Solaranlage einrichten
Das Solarmodul sollte mindestens 6 Volt und 150 mA liefern.
Die Batterie sollte eine Lithium-Batterie der Serie 18650 mit einer Nennspannung von 3,7 V sein.
Das TP4056-Modul schützt die Batterie und versorgt den Pico W.
Wetterbeobachtungsgerät
Für dieses Projekt verwenden wir unser BME688-Breakout-Platine im eigenen Haus entwickelt.
Sie können jeden beliebigen Wettersensor wie z. B. einen DHT11 oder DHT22 verwenden, aber der Code und die Verdrahtung in diesem Artikel sind eigentlich für einen BME688 gedacht.
Verkabelung
Legen Sie den Pico W und den BME688 auf ein Breadboard.
Es gibt vier Pins, die Sie anschließen müssen: 3,3V, GND, SCL und SDA am BME688.
Das haben wir verwendet:
Pico W's GP1 verbindet sich mit SCL;
GP0 verbindet sich mit SDA;
GND verbindet sich mit GND;
Diese drei Pins sollten in einer Reihe neben dem Micro-USB-Steckplatz liegen.
3V3 verbindet sich mit 3V3die sich auf der anderen Seite der Tafel befindet.
TP4056 USB-C-Lademodul
Sie müssen Drähte an den TP4056 anlöten.
Es hat sich bewährt, rote Drähte an die positiven und schwarze an die negativen Anschlüsse zu löten.
Die Pins neben dem USB-C-Anschluss sind für einen externen Stromanschluss, wie unser Solarmodul.
Verbinden Sie diese Stifte mit Ihrem Solarmodul.
Auf der anderen Seite befinden sich die Pins, die für die Stromabgabe gedacht sind. Die mit B+ und B- gekennzeichneten Stifte müssen mit der Batterie verbunden werden.
Wir haben uns entschieden, Klemmen zu verwenden, um unseren Batteriehalter mit dem TP4056 zu verbinden, für den Fall, dass wir die Schaltung ändern müssen, aber Sie können den Batteriehalter auch direkt an den TP4056 löten, wenn Sie möchten.
Schottky-Diode
Schließen Sie eine Schottky-Diode an den VSYS-Pin des Pico W an.
Vergewissern Sie sich, dass der graue Ring an der Diode dem Pico W zugewandt ist und das andere Ende mit der positiven Schiene auf dem Breadboard verbunden ist.
Da wir den Pico über zwei Eingänge mit Strom versorgen, nämlich über USB und die Solaranlage, müssen wir eine Schottky-Diode verwenden.
Eine Schottky-Diode verhindert Rückspeisung und ermöglicht den Betrieb von zwei Spannungen. Erfahren Sie hier mehr.
TP4056 an die Lochrasterplatine anschließen
Verbinden Sie den positiven Ausgang des TP4056 mit der positiven Schiene des Breadboards, wo sich die Schottky-Diode befindet.
Verbinden Sie dann den negativen Ausgang des TP4056 mit einem negativen Pin des Raspberry Pi Pico W.
Code zum Betrieb einer Raspberry Pi Pico W Wetterstation
Wir haben unseren gesamten Code auf unsere Website hochgeladen. Github Repo hier.
Hier ist eine Anleitung zum Hochladen von Dateien auf Ihren Pico W.
Wenn Sie die Komponenten wie oben beschrieben verbunden haben, können Sie den Code ohne Änderungen ausführen.
Dennoch gibt es einige Dinge, die Sie vielleicht ändern sollten.
bme68x.py
Dieses Skript modifiziert die Ausgabe des BME688.
Um genaue Temperatur- und Höhenmessungen zu erhalten, müssen Sie diese fett gedruckten Zeilen ändern:
# change this to match the location's pressure (hPa) at sea level
# bme68x.sea_level_pressure = 1013.25
<strong> self.bme68x.sea_level_pressure = 1013</strong>
# You will usually have to add an offset to account for the temperature of
# the sensor. This is usually around 5 degrees but varies by use. Use a
# separate temperature sensor to calibrate this one.
<strong>self.temperature_offset = -9</strong>
main.py
Die Datei main.py startet einen Zugangspunkt und führt auch einen Server aus, der eine HTML-Datei an jeden liefert, der eine Verbindung herstellt.
In der HTML-Datei können Sie die Messwerte des BME688 sehen.
Wenn der Pico W eine Verbindung (über Sockets) empfängt, sendet er die Datei index.html, aber bevor er sie sendet, ersetzt er mit Hilfe dieses Codeblocks einige Zeichenfolgen durch die vom BME688 übernommenen Daten:
data = {
'T': 0,
'P': 0,
'A': 0,
'H': 0,
'G': 0,
}
...
def get_html(html_name):
with open(html_name, 'r') as file:
html = file.read()
return html
...
sensor = bme68x.BME68X()
...
response = get_html('index.html')
data = sensor.save_data('data.json')
blink_onboard_led(1, 0.2)
response = response.replace('id_temp', str(data['T']))
response = response.replace('id_pres', str(data['P']))
response = response.replace('id_alti', str(data['A']))
response = response.replace('id_humi', str(data['H']))
response = response.replace('id_gas', str(data['G']))
print_data(data)
conn.send(response)
conn.close()
Wie Sie sehen können, ist die Zeile, in der es heißt Daten = sensor.save_data('data.json') erhalten wir die Sensordaten, und dann ändert der Code die HTML-Datei mit den korrekten Messwerten für Temperatur, Druck, Höhe, Feuchtigkeit und Gasleitfähigkeit.
Alle drei Sekunden erfolgt eine automatische Aktualisierung.
Der folgende Codeblock ist erforderlich, um den Access Point auf dem Raspberry Pi Pico W zu übertragen:
essid = 'Pico-W-Weather-Station'
password = '#FreeThePicoW'
ap = network.WLAN(network.AP_IF)
ap.active(True)
ap.config(essid=essid, password=password)
while ap.active() == False:
pass
print('Connection successfull')
print(ap.ifconfig())
# Create sensor object
sensor = bme68x.BME68X()
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('', 80))
s.listen(3)
blink_onboard_led(3, 0.2)
Hinweis: Wenn Sie die Original-Firmware verwenden, sollten Sie sie aktualisieren, da Sie sonst die SSID nicht umbenennen können und keine WLAN-Sicherheit haben. Wir haben es mit dem Nightly Build vom 15. Juli 2022 getestet und es hat endlich funktioniert. Es gibt noch einige weitere Macken und Bugs, also lest euch unbedingt unsere Komplettlösung hier durch.
HIER KLICKEN: Übertragung eines WiFi-Netzwerks (SoftAP-Zugangspunkt)
Verbinden mit Ihrem Pico W-Zugangspunkt
Nach erfolgreicher Übertragung des AP blinkt Ihr Pico W dreimal mit dem angegebenen Code.
Verbinden Sie sich mit Ihrem AP, der folgendermaßen heißen sollte Pico-W-Wetter-Station.
Geben Sie das Passwort ein #FreeThePicoW
Verbinden Sie sich mit Ihrem Pico über die IP-Adresse. Wenn Sie es von Thonny aus gestartet haben, sehen Sie die IP-Adresse in der Shell.
Andernfalls könnten Sie versuchen 192.168.4.1 da dies in der Regel die IP-Adresse des Pico W ist, und Sie sollten den Screenshot rechts sehen:
Sie sind fertig
In diesem Projekt haben Sie gelernt, wie man mit der SoftAP-Funktion des Raspberry Pi Pico W ein Netzwerk sendet. Sie haben auch gelernt, wie man ein Solarpanel und eine Batterie an den Pico W anschließt.
Wenn Sie mehr über den Pico W erfahren möchten, Warum lesen Sie nicht unseren großen Artikel hier?
HIER KLICKEN: Alles, was Sie über den Raspberry Pi Pico W wissen müssen
Specs von TP4056 sagt, um den Spannungseingang in 5,5V oder 6V zu halten, Solarpanel von 6V kann 6V und wahrscheinlich 7V + en einigen Fällen geben. Ich bin über verwirrt über dieses Ende. Könnten Sie bitte klären?
Danke!
Ich habe dieses Projekt getan und hatte einige tolle Ergebnisse sehr genaue Messwerte. Aber haben ein Problem getroffen es läuft nur für etwa 10 2 15 Minuten dann stoppt. Ich habe festgestellt, dass, wenn ich die json-Datei zu löschen, ist es der einzige Weg, um es wieder arbeiten wieder zu bekommen
Kann man verhindern, dass sie gespeichert werden und nur Daten gesendet werden?
Ich muss sagen, gute Arbeit, macht weiter so👍
In der Datei bme68x.py fügt die Methode save_data immer wieder Zeilen zur Jason-Datei hinzu. Irgendwann muss die Datei zu groß werden. Sie können die Methode so ändern, dass nur die letzten x Zeilen von data_list gespeichert werden, bevor die Datei gespeichert wird. Sie müssen das ideale x herausfinden. Sie könnten auch nur die aktuelle Messung speichern. Auf diese Weise wird die Datei klein genug bleiben.
Nach 4.104 Zeichen füllt die 'data.json' den Speicher des winzigen pico .-/
Die Frage ist: Wie kann man dies einschränken, um das oben genannte Projekt zu einem funktionalen Abschluss zu bringen?
Ein Beispiel/Codezusatz (als Update) wäre sehr willkommen!
TiA - und weiterhin gute Arbeit...
PS: ein entsprechendes Issue im GitHub Repo wurde ebenfalls veröffentlicht.
Die Verwendung des TP 4056 für ein solches Projekt ist keine effektive Lösung, siehe:
https://www.best-microcontroller-projects.com/tp4056.html
Konstruktives Design vielleicht mit einem MPTT Set Switch, wie dem Waveshare,
Beschreibung hier:
https://www.waveshare.com/solar-power-manager.htm
Zum Wohl!
Tolle Projektidee! Hat jemand ein 3D-gedrucktes Gehäuse dafür entworfen, das er teilen möchte?
Hallo,
Vielen Dank für das Handbuch.
Gemäß TP4056-Spezifikationen LED-Anzeige Rot: (Ladevorgang), LED-Anzeige Blau: (Standby, Ladevorgang abgeschlossen)
In meinem Fall habe ich beide LEDs am TP4056 eingeschaltet, wenn das Solarpanel unter direktem Licht steht. Ist das beabsichtigt?
Ist es möglich, dass die Batterie von der Solaranlage geladen werden kann und gleichzeitig den Pico mit Strom versorgt?