Raspberry Pi Pico W (op zonne-energie) Weerstation op afstand
Een heel speciale functie in de Raspberry Pi Pico W is de SoftAP-functie.
SoftAP staat voor software-enabled access point, waarmee je direct vanaf de Raspberry Pi Pico W een WiFi-netwerk kunt uitzenden.
Daarom hebben we gekozen voor dit project op zonne-energie.
Hoe een project op zonne-energie SoftAP kruist
Dit is het probleem.
Als je een project wilt maken dat gegevens buiten je huis meet, zul je merken dat je die gegevens niet draadloos kunt ontvangen.
Je kunt in dit scenario net zo goed de gewone Pico gebruiken, omdat je de draadloze mogelijkheden niet kunt gebruiken.
Een project op zonne-energie is daar waarschijnlijk één van, aangezien je het op een plek moet zetten waar de zon schijnt, wat meestal buiten is.
Dit is waar SoftAP om de hoek komt kijken. Stel dat je wilt weten wat voor weer het buiten is. Je maakt dan verbinding met de SoftAP die de Raspberry Pi Pico W uitzendt en logt in op het IP-adres dat de gegevens weergeeft.
Dit is zo'n beetje het beste scenario van hoe we de voordelen van de Raspberry Pi Pico W kunnen benutten.
Ik bedoel, het is mogelijk om een LTE-uitbreiding of een draadloze uitbreiding met groot bereik te kopen, maar dan zou het niet echt een Pico W-tutorial zijn, omdat je die onderdelen gewoon op de gewone Pico kunt gebruiken.
Hoe zit het met Bluetooth op de Raspberry Pi Pico W?
Het zou geweldig zijn als je Bluetooth kon gebruiken, maar op de publicatiedatum van deze tutorial is Bluetooth niet ingeschakeld op de Raspberry Pi Pico W.
Op 1 juli 2022 zei Raspberry Pi Engineer & Forum Moderator jamesh: "We zijn al begonnen aan de software voor BT, ik kan nog geen planning geven. Software moet worden geschreven, getest en tutorials geschreven."
Onderdelen
- Raspberry Pi Pico W
- Zonnepaneel 6V
- TP4056 USB-C oplaadmodule
- NR18650 Li-Ion batterij 3,6V
- BME688 Breakout Raad
- Batterijhouder voor type 18650
- Schottky diode
- Lezers voor de Pico W en BME688
- Breadboard
Werk de firmware van je Raspberry Pi Pico W bij
De firmware van de Raspberry Pi Pico W is nog steeds in ontwikkeling, dus je kunt het beste de nieuwste firmware gebruiken. De eerste publieke MicroPython UF2 voor de Pico W heeft bijvoorbeeld wat problemen met de beveiliging omdat netwerken altijd open zijn.
Volg deze link om te leren hoe je het kunt bijwerken. De link toont je ook een snelstartmethode om je eigen WiFi-netwerk uit te zenden.
Zonne-installatie
Het zonnepaneel moet minstens 6 volt en 150 mA leveren.
De batterij moet een lithiumbatterij uit de 18650-serie zijn met een nominale spanning van 3,7 V.
De TP4056 module beschermt de batterij en voorziet de Pico W van stroom.
Weer tracking apparaat
Voor dit project gebruiken we onze Zelf ontworpen BME688 breakout bord.
Je kunt elke weersensor gebruiken, zoals een DHT11 of DHT22, maar de code en bedrading in dit artikel is eigenlijk bedoeld voor een BME688.
Bedrading
Plaats je Pico W en BME688 op een breadboard.
Er zijn vier pinnen die je moet aansluiten: 3,3V, GND, SCL en SDA op de BME688.
Dit is wat we hebben gebruikt:
Pico W's GP1 maakt verbinding met SCL;
GP0 maakt verbinding met SDA;
GND maakt verbinding met GND;
Deze drie pinnen moeten in-line zitten, naast de micro-USB-sleuf.
3V3 maakt verbinding met 3V3die zich aan de andere kant van het bord bevindt.
TP4056 USB-C oplaadmodule
Je moet draden aan de TP4056 solderen.
Het is een goede gewoonte om roodgekleurde draden aan positieve aansluitingen te solderen en zwarte aan negatieve.
De pinnen naast de USB-C connector zijn voor een externe stroomaansluiting, zoals onze zonnemodule.
Sluit deze pinnen aan op je zonnepaneel.
Aan de andere kant zitten pinnen die bedoeld zijn voor de stroomuitgang. De pinnen met het label B+ en B- moeten worden aangesloten op de batterij.
We hebben besloten om klemmen te gebruiken om onze batterijhouder met de TP4056 te verbinden voor het geval we het circuit moeten veranderen, maar je kunt de batterijhouder ook rechtstreeks aan de TP4056 solderen als je dat wilt.
Schottky diode
Sluit een Schottky-diode aan op de VSYS-pin van de Pico W.
Zorg ervoor dat de grijze ring op de diode naar de Pico W is gericht en het andere uiteinde is verbonden met de positieve rail op het breadboard.
Omdat we de Pico voeden met twee ingangen, USB en het zonnesysteem, moeten we een Schottky-diode gebruiken.
Een Schottky-diode voorkomt terugvoeding en stelt je in staat om twee voltages te gebruiken. Lees hier meer.
Sluit TP4056 aan op breadboard
Sluit de positieve uitgang van de TP4056 aan op de positieve rail van het breadboard, waar de Schottky-diode zich bevindt.
Verbind vervolgens de negatieve uitgang van de TP4056 met een negatieve pin van de Raspberry Pi Pico W.
Code voor Raspberry Pi Pico W weerstation
We hebben al onze code geüpload naar onze Github repo hier.
Hier is een handleiding voor het uploaden van bestanden naar je Pico W.
Als je de componenten hebt aangesloten zoals hierboven beschreven, kun je de code zonder wijzigingen uitvoeren.
Dat gezegd hebbende, zijn hier een paar dingen die je misschien wilt veranderen.
bme68x.py
Dit script wijzigt de uitvoer van de BME688.
Om nauwkeurige temperatuur- en hoogtewaarden te krijgen, moet je deze vetgedrukte regels aanpassen:
# 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
Het bestand main.py start een toegangspunt en draait ook een server die een HTML-bestand aflevert aan iedereen die verbinding maakt.
In het HTML-bestand kun je de meetwaarden van de BME688 bekijken.
Bij het ontvangen van een verbinding (via sockets), zal de Pico W het bestand index.html versturen, maar voordat hij het verstuurt, zal hij een aantal strings vervangen door de gegevens van de BME688, via dit blok code:
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()
Zoals je kunt zien, is de regel waar staat gegevens = sensor.save_data('data.json') is waar we de gegevens van de sensor vandaan halen, waarna de code het HTML-bestand aanpast met de juiste waarden voor temperatuur, druk, hoogte, vochtigheid en gasgeleiding.
Er wordt elke drie seconden automatisch ververst.
Het volgende is het blok code dat nodig is om het toegangspunt op de Raspberry Pi Pico W uit te zenden:
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)
Opmerking: als je de originele firmware gebruikt, moet je deze updaten, anders kun je de SSID niet hernoemen of draadloze beveiliging gebruiken. We hebben het getest op de 15 juli 2022 nachtelijke build en het werkte eindelijk. Er zijn nog meer eigenaardigheden en bugs, dus lees zeker onze walkthrough hier.
KLIK HIER: Uitzenden van een WiFi netwerk (SoftAP toegangspunt)
Verbinding maken met uw Pico W toegangspunt
Na het succesvol uitzenden van het AP zal je Pico W drie keer knipperen met de opgegeven code.
Maak verbinding met je AP, dat de naam Pico-Weerstation.
Typ het wachtwoord in #FreeThePicoW
Maak verbinding met je Pico via het IP-adres. Als je het vanuit Thonny hebt uitgevoerd, zie je het IP-adres in de shell.
Anders kunt u het volgende proberen 192.168.4.1 aangezien dit meestal het IP-adres van de Pico W is en je de schermafbeelding rechts zou moeten zien:
Je bent klaar
In dit project heb je geleerd hoe je een netwerk kunt uitzenden met de SoftAP-functie van de Raspberry Pi Pico W. Je hebt ook geleerd hoe je een zonnepaneel en batterij op de Pico W kunt aansluiten. Je hebt ook geleerd hoe je een zonnepaneel en batterij op de Pico W aansluit.
Als je meer wilt weten over de Pico W, waarom lees je ons mega-artikel niet hier?
KLIK HIER: Alles wat je moet weten over de Raspberry Pi Pico W
In de specificaties van TP4056 staat dat de ingangsspanning 5,5V of 6V moet zijn, een zonnepaneel van 6V kan 6V en waarschijnlijk 7V+ geven in sommige gevallen. Ik ben hierover in de war. Kunt u dit alstublieft verduidelijken?
Bedankt!
Ik heb dit project uitgevoerd en ik heb geweldige resultaten geboekt, zeer nauwkeurige metingen. Maar ik ben op een probleem gestuit: het werkt maar ongeveer 10 tot 2 15 minuten en stopt dan. Ik heb ontdekt dat het verwijderen van het json-bestand de enige manier is om het weer aan de praat te krijgen.
Is er een manier om te voorkomen dat ze worden opgeslagen en alleen gegevens worden verzonden?
Ik moet zeggen dat het goed gedaan is, maar laat ze maar komen👍
In het bestand bme68x.py blijft de methode save_data regels toevoegen aan het bestand Jason. Op een gegeven moment moet het te groot worden. Je kunt de methode aanpassen zodat alleen de laatste x regels van data_list worden bewaard voordat het bestand wordt opgeslagen. je moet de ideale x uitvinden. je kunt ook alleen de huidige meting bewaren. Op deze manier blijft het bestand klein genoeg.
Na 4.104 tekens vult de 'data.json' het geheugen van de kleine pico .-/
Vraag is: Hoe kan ik dit beperken om het bovenstaande project functioneel af te ronden?
Een voorbeeld / code toevoeging (als update) zou zeer gewaardeerd worden!
TiA - en blijf zo doorgaan.. .
PS: er is ook een corresponderend Issue in de GitHub Repo gepubliceerd.
Het gebruik van de TP 4056 voor een dergelijk Project is geen effectieve oplossing, zie:
https://www.best-microcontroller-projects.com/tp4056.html
Constructief ontwerp met een MPTT-setschakelaar, zoals de Waveshare,
Beschrijving hier:
https://www.waveshare.com/solar-power-manager.htm
Proost!
Geweldig projectidee! Heeft iemand hier een 3D-geprinte behuizing voor ontworpen die hij wil delen?
Hoi,
Bedankt voor de handleiding.
Volgens TP4056 specs LED-Anzeige Rot: (Ladevorgang), LED-Anzeige Blau: (Standby, Ladevorgang abgeschlossen)
In mijn geval branden beide LED's op TP4056 wanneer het zonnepaneel onder direct licht staat. Is dat de bedoeling?
Is het mogelijk dat de batterij kan worden opgeladen met zonne-energie en tegelijkertijd stroom kan leveren aan de Pico?