Raspberry Pi Pico W (soldriven) fjärrstyrd väderstation
En mycket speciell funktion i Raspberry Pi Pico W är SoftAP-funktionen.
SoftAP står för software-enabled access point, vilket gör att du kan sända ut ett WiFi-nätverk direkt från Raspberry Pi Pico W.
Det är därför vi har valt att genomföra detta soldrivna projekt.
Hur ett soldrivet projekt korsas med SoftAP
Här är problemet.
Om du vill skapa ett projekt som mäter data utanför ditt hem, kommer du att upptäcka att du inte kan få dessa data trådlöst.
Du kan lika gärna använda den vanliga Pico i det här scenariot, eftersom du inte kommer att kunna använda dess trådlösa förmåga.
Ett soldrivet projekt är förmodligen ett av dem, med tanke på att du måste placera det i ett solbelyst område, vilket vanligtvis är utomhus.
Det är här SoftAP kommer in i bilden. Låt oss säga att du vill veta hur vädret är ute. Då ansluter du till den SoftAP som Raspberry Pi Pico W sänder ut och loggar sedan in på den IP-adress som visar data.
Det här är i stort sett det bästa tänkbara scenariot för hur vi kan utnyttja Raspberry Pi Pico W:s fördelar.
Jag menar, det är möjligt att köpa ett LTE-tillägg eller ett trådlöst tillägg med lång räckvidd, men då skulle det inte riktigt vara en Pico W-handledning, eftersom du bara kan använda dessa komponenter på den vanliga Pico.
Hur är det med Bluetooth på Raspberry Pi Pico W?
Det skulle vara bra om du kunde använda Bluetooth, men från och med publiceringsdatumet för denna handledning är Bluetooth inte aktiverat på Raspberry Pi Pico W.
Den 1 juli 2022 sa Raspberry Pi Engineer & Forum Moderator jamesh att, "Vi har redan börjat arbeta med programvaran för BT, inget schema jag kan erbjuda ännu. Programvaran måste skrivas testas och handledning skrivas."
Delar
- Raspberry Pi Pico W
- Solpanel 6V
- TP4056 USB-C laddningsmodul
- NR18650 Li-Ion-batteri 3,6V
- BME688 Breakout Board
- Batterihållare för typ 18650
- Schottky-diod
- Stifthuvuden för Pico W och BME688
- Brädbräda
Uppdatera din Raspberry Pi Pico W:s inbyggda programvara
Raspberry Pi Pico W:s firmware utvecklas fortfarande ständigt så det är bäst att använda den senaste firmware. Till exempel har den första offentliga MicroPython UF2 för Pico W vissa problem med säkerheten eftersom nätverk alltid är öppna.
Följ denna länk för att lära dig hur du uppdaterar den. Länken visar dig också en snabbstartsmetod för att sända ditt eget WiFi-nätverk.
Installation av solenergi
Solpanelen ska ge minst 6 volt och 150 mA.
Batteriet ska vara ett litiumbatteri i 18650-serien med en nominell spänning på 3,7 V.
TP4056-modulen skyddar batteriet och ger ström till Pico W.
Väderspårningsenhet
För detta projekt använder vi vår BME688 breakout-kort designat i huset.
Du kan använda vilken vädersensor som helst, t.ex. en DHT11 eller DHT22, men den här artikelns kod och kabeldragning är egentligen avsedd för en BME688.
Ledningar
Placera din Pico W och BME688 på en brödskiva.
Det finns fyra stift som du måste ansluta: 3,3V, GND, SCL och SDA på BME688.
Här är vad vi använde:
Pico W's GP1 ansluter till SCL;
GP0 ansluter till SDA;
GND ansluter till GND;
Dessa tre stift ska sitta i linje med varandra, bredvid mikro-USB-platsen.
3V3 ansluter till 3V3som är placerad på andra sidan brädet.
TP4056 USB-C laddningsmodul
Du måste löda fast kablar på TP4056.
Det är en bra idé att löda röda ledningar till positiva anslutningar och svarta till negativa.
Stiften bredvid USB-C-kontakten är avsedda för en extern strömanslutning, t.ex. vår solcellsmodul.
Anslut dessa stift till din solpanel.
På den andra sidan finns det stift som är avsedda för strömutmatningen. Stiften med beteckningarna B+ och B- måste anslutas till batteriet.
Vi bestämde oss för att använda klämmor för att ansluta vår batterihållare till TP4056 om vi skulle behöva ändra kretsen, men du kan löda batterihållaren direkt till TP4056 om du vill.
Schottky-diod
Anslut en Schottky-diod till VSYS-pinnen på Pico W.
Se till att den grå ringen på dioden är vänd mot Pico W och att den andra änden är ansluten till den positiva skenan på brödbrädan.
Eftersom vi strömförsörjer Pico med två strömingångar, USB och solsystemet, måste vi använda en Schottky-diod.
En Schottky-diod förhindrar back-powering och gör att du kan köra två spänningar. Läs mer här.
Anslut TP4056 till brödbrädan
Anslut den positiva utgången från TP4056 till den positiva skenan på brödbrädan, där Schottky-dioden är placerad.
Anslut sedan den negativa utgången från TP4056 till ett negativt stift på Raspberry Pi Pico W.
Kod för att köra Raspberry Pi Pico W väderstation
Vi har laddat upp all vår kod till vår Github repo här.
Här är en guide om hur du laddar upp filer till din Pico W.
Om du har anslutit komponenterna enligt ovan kommer du att kunna köra koden utan några ändringar.
Med det sagt, här är några saker som du kanske vill ändra på.
bme68x.py
Detta skript ändrar BME688:s utdata.
För att få korrekta temperatur- och höjdavläsningar måste du ändra dessa rader, som är markerade med fet stil:
# 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
Filen main.py startar en accesspunkt och kör även en server som levererar en HTML-fil till alla som ansluter.
HTML-filen är där du kan se avläsningarna från BME688.
När Pico W tar emot en anslutning (via sockets) skickar den filen index.html, men innan den skickas ersätter den några strängar med data från BME688 via detta kodblock:
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()
Som du kan se är raden där det står data = sensor.save_data('data.json') är där vi får sensorns data, och sedan ändrar koden HTML-filen med korrekta avläsningar för temperatur, tryck, höjd, luftfuktighet och gasledningsförmåga.
Det sker en automatisk uppdatering var tredje sekund.
Följande är det kodblock som krävs för att sända accesspunkten på Raspberry Pi Pico W:
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)
Obs: om du använder den ursprungliga firmware bör du uppdatera den, annars kommer du inte att kunna byta namn på SSID eller ha trådlös säkerhet. Vi testade det på den 15 juli 2022 nattliga byggnaden och det fungerade äntligen. Det finns några fler konstigheter och buggar så se till att läsa vår genomgång här.
KLICKA HÄR: Sänder ut ett WiFi-nätverk (SoftAP-åtkomstpunkt)
Ansluta till din Pico W-åtkomstpunkt
När sändningen av AP:n har lyckats blinkar din Pico W tre gånger med den kod som anges.
Anslut till din AP, som ska ha namnet Pico-W-Weather-Station.
Skriv in lösenordet #FreeThePicoW
Anslut till din Pico med hjälp av IP-adressen. Om du körde den från Thonny kommer du att se IP-adressen i skalet.
Annars kan du prova 192.168.4.1 eftersom detta oftast är IP-adressen för Pico W, och du bör se skärmdumpen till höger:
Du är klar
I det här projektet lärde du dig hur du sänder ett nätverk från Raspberry Pi Pico W:s SoftAP-funktion. Du lärde dig också hur du ansluter en solpanel och ett batteri till Pico W.
Om du vill lära dig mer om Pico W, varför inte läsa vår megaartikel här?
KLICKA HÄR: Allt du behöver veta om Raspberry Pi Pico W
Specifikationerna för TP4056 säger att man ska hålla spänningsingången i 5,5v eller 6V, solpanel på 6V kan ge 6V och förmodligen 7V + i vissa fall. Jag är ungefär förvirrad över detta slut. Kan du snälla klargöra?
Tack!
Jag har gjort det här projektet och haft några bra resultat mycket exakta avläsningar. Men har stött på ett problem som det bara körs i cirka 10 2 15 minuter och sedan stannar. Jag har upptäckt att om jag tar bort json-filen är det det enda sättet att få den att fungera igen
Finns det ett sätt att hindra den från att lagra dem och bara skicka data
Måste säga tho bra jobb fortsätt dem att komma plz👍
I filen bme68x.py fortsätter metoden save_data att lägga till rader i Jason-filen. Vid någon tidpunkt måste den bli för stor. Du kan ändra så att du bara behåller de sista x raderna i data_list innan du sparar filen. du måste räkna ut det ideala x. Du kan också bara behålla den aktuella mätningen. På så sätt kommer filen att förbli tillräckligt liten.
Efter 4.104 tecken fyller "data.json" minnet i den lilla pico .-/
Frågan är: Hur kan man begränsa detta för att få ovanstående projekt till ett funktionellt slut?
Ett exempel / kodtillägg (som en uppdatering) skulle vara mycket uppskattat!
TiA - och fortsätt det goda arbetet ... .
PS: en motsvarande fråga i GitHub Repo publicerades också.
Att använda TP 4056 för ett sådant projekt är inte en effektiv lösning, se:
https://www.best-microcontroller-projects.com/tp4056.html
Konstruktiv design kanske med hjälp av en MPTT-omkopplare, som Waveshare,
Beskrivning här:
https://www.waveshare.com/solar-power-manager.htm
Skål!
Bra projektidé! Har någon designat ett 3D-tryckt fodral för detta som de vill dela med sig av?
Hej,
Tack för manualen.
Enligt TP4056-specifikationer LED-Anzeige Rot: (Ladevorgang), LED-Anzeige Blau: (Standby, Ladevorgang avslutad)
I mitt fall har jag båda lysdioderna tända på TP4056 när solpanelen är placerad i direkt ljus. Är det meningen?
Är det möjligt att batteriet kan laddas från solenergi och kan leverera ström till Pico samtidigt?