Stazione meteorologica remota Raspberry Pi Pico W (a energia solare)
Una caratteristica molto speciale del Raspberry Pi Pico W è la funzione SoftAP.
SoftAP è l'acronimo di software-enabled access point (punto di accesso abilitato al software), che consente di trasmettere una rete WiFi direttamente da Raspberry Pi Pico W.
Ecco perché abbiamo scelto di realizzare questo progetto a energia solare.
Come un progetto a energia solare si interseca con il SoftAP
Ecco il problema.
Se si volesse creare un progetto che misuri i dati lontano da casa, si scoprirebbe che non è possibile ottenere tali dati in modalità wireless.
In questo caso, tanto vale utilizzare il Pico normale, poiché non sarà possibile sfruttare la sua capacità wireless.
Un progetto a energia solare è probabilmente uno di questi, dato che è necessario collocarlo in un'area esposta al sole, che di solito è all'aperto.
È qui che entra in gioco SoftAP. Supponiamo di voler sapere che tempo fa fuori. Ci si collega al SoftAP che il Raspberry Pi Pico W sta trasmettendo e ci si collega all'indirizzo IP che visualizza i dati.
Questo è più o meno lo scenario migliore per sfruttare i vantaggi di Raspberry Pi Pico W.
È possibile acquistare un componente aggiuntivo LTE o un componente aggiuntivo wireless a lungo raggio, ma in tal caso non si tratterebbe di un tutorial Pico W, poiché si potrebbero utilizzare tali componenti sul Pico normale.
E il Bluetooth sul Raspberry Pi Pico W?
Sarebbe fantastico se si potesse usare il Bluetooth, ma alla data di pubblicazione di questa esercitazione, il Bluetooth non è abilitato su Raspberry Pi Pico W.
Il 1° luglio 2022, jamesh, ingegnere Raspberry Pi e moderatore del forum, ha dichiarato: "Abbiamo già iniziato a lavorare sul software per BT, ma non posso ancora offrire una tabella di marcia. Il software deve essere testato e devono essere scritti dei tutorial".
Parti di ricambio
- Raspberry Pi Pico W
- Pannello solare 6V
- TP4056 Modulo di ricarica USB-C
- NR18650 Batteria agli ioni di litio 3,6V
- Scheda di breakout BME688
- Portabatterie per tipo 18650
- Diodo Schottky
- Intestazioni per Pico W e BME688
- Lavagna per pane
Aggiornare il firmware del Raspberry Pi Pico W
Il firmware di Raspberry Pi Pico W è in continua evoluzione, quindi è meglio utilizzare il firmware più recente. Ad esempio, il primo MicroPython UF2 pubblico per Pico W presenta alcuni problemi di sicurezza in quanto le reti sono sempre aperte.
Seguite questo link per sapere come aggiornarlo. Il link mostra anche un metodo rapido per trasmettere la propria rete WiFi.
Impostazione solare
Il pannello solare deve erogare almeno 6 volt e 150 mA.
La batteria deve essere una batteria al litio della serie 18650 con una tensione nominale di 3,7V.
Il modulo TP4056 proteggerà la batteria e alimenterà il Pico W.
Dispositivo di rilevamento del tempo
Per questo progetto, utilizziamo il nostro Scheda breakout BME688 progettata in proprio.
È possibile utilizzare qualsiasi sensore meteo, come un DHT11 o un DHT22, ma il codice e il cablaggio di questo articolo sono pensati per un BME688.
Cablaggio
Posizionare il Pico W e il BME688 su una breadboard.
I pin da collegare sono quattro: 3,3 V, GND, SCL e SDA sul BME688.
Ecco cosa abbiamo usato:
Pico W's GP1 si collega a SCL;
GP0 si collega a SDA;
GND si collega a GND;
Questi tre pin devono essere in linea, accanto allo slot micro-USB.
3V3 si collega a 3V3che si trova sull'altro lato della scheda.
TP4056 Modulo di ricarica USB-C
È necessario saldare i fili sul TP4056.
È buona norma saldare i fili rossi ai collegamenti positivi e quelli neri ai negativi.
I pin accanto al connettore USB-C sono destinati a una connessione di alimentazione esterna, come il nostro modulo solare.
Collegare questi pin al pannello solare.
Sull'altro lato, ci sono i pin destinati all'uscita di potenza. I pin contrassegnati da B+ e B- devono essere collegati alla batteria.
Abbiamo deciso di usare dei morsetti per collegare il portabatterie al TP4056 nel caso in cui dovessimo modificare il circuito, ma se volete potete saldare il portabatterie direttamente al TP4056.
Diodo Schottky
Collegare un diodo Schottky al pin VSYS di Pico W.
Assicurarsi che l'anello grigio sul diodo sia rivolto verso il Pico W e che l'altra estremità sia collegata al binario positivo della breadboard.
Poiché alimentiamo il Pico con due ingressi di alimentazione, USB e sistema solare, dobbiamo utilizzare un diodo Schottky.
Un diodo Schottky impedisce il back-powering e consente di gestire due tensioni. Per saperne di più, cliccate qui.
Collegare TP4056 alla breadboard
Collegare l'uscita positiva del TP4056 al binario positivo della breadboard, dove si trova il diodo Schottky.
Quindi, collegare l'uscita negativa del TP4056 a un pin negativo del Raspberry Pi Pico W.
Codice per far funzionare la stazione meteorologica Raspberry Pi Pico W
Abbiamo caricato tutto il codice nel nostro sito Il repo Github è qui.
Ecco una guida su come caricare i file su Pico W.
Se avete collegato i componenti come scritto sopra, sarete in grado di eseguire il codice senza alcuna modifica.
Detto questo, ecco alcune cose che potreste voler cambiare.
bme68x.py
Questo script modifica l'output del BME688.
Per ottenere letture precise della temperatura e dell'altitudine, è necessario modificare queste linee, evidenziate in grassetto:
# 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
Il file main.py lancia un punto di accesso ed esegue anche un server che fornisce un file HTML a chiunque si connetta.
Il file HTML contiene le letture del BME688.
Quando riceve una connessione (tramite socket), il Pico W invia il file index.html, ma prima di inviarlo sostituisce alcune stringhe con i dati presi dal BME688, tramite questo blocco di codice:
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()
Come si può vedere, la riga in cui si dice dati = sensor.save_data('data.json') è il punto in cui si ottengono i dati del sensore e poi il codice modifica il file HTML con le letture corrette di temperatura, pressione, altitudine, umidità e conduttività del gas.
L'aggiornamento automatico avviene ogni tre secondi.
Di seguito è riportato il blocco di codice necessario per trasmettere il punto di accesso sul 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)
Nota: se si utilizza il firmware originale, è necessario aggiornarlo, altrimenti non sarà possibile rinominare l'SSID o avere la sicurezza wireless. L'abbiamo testato con la build notturna del 15 luglio 2022 e finalmente ha funzionato. Ci sono altre stranezze e bug, quindi assicuratevi di leggere la nostra guida qui.
CLICCA QUI: Trasmissione di una rete WiFi (punto di accesso SoftAP)
Collegamento al punto di accesso Pico W
Quando l'AP viene trasmesso con successo, il Pico W lampeggia tre volte con il codice fornito.
Collegatevi al vostro AP, che dovrebbe chiamarsi Stazione Pico-Meteo.
Digitare la password #FreeThePicoW
Collegarsi al Pico utilizzando l'indirizzo IP. Se è stato eseguito da Thonny, l'indirizzo IP verrà visualizzato nella shell.
Altrimenti, si può provare a 192.168.4.1 poiché questo è più comunemente l'indirizzo IP di Pico W e si dovrebbe vedere la schermata a destra:
Hai finito
In questo progetto, avete imparato a trasmettere una rete dalla funzione SoftAP del Raspberry Pi Pico W. Avete anche imparato a collegare un pannello solare e una batteria a Pico W.
Se volete saperne di più sulla Pico W, perché non leggere il nostro mega articolo qui?
CLICCA QUI: Tutto quello che c'è da sapere sul Raspberry Pi Pico W
Le specifiche del TP4056 dicono di mantenere la tensione di ingresso a 5,5 o 6 V, il pannello solare da 6 V può fornire 6 V e probabilmente 7 V+ in alcuni casi. Sono un po' confuso su questo punto. Potreste per favore chiarirmi le idee?
Grazie!
Ho realizzato questo progetto e ho ottenuto ottimi risultati con letture molto precise. Ma ho riscontrato un problema: funziona solo per circa 10 o 15 minuti e poi si ferma. Ho scoperto che se cancello il file json è l'unico modo per farlo funzionare di nuovo.
C'è un modo per evitare che li memorizzi e che invii solo i dati?
Devo dire però che è stato un ottimo lavoro, continuate così!
Nel file bme68x.py il metodo save_data continua ad aggiungere righe al file Jason. A un certo punto deve essere diventato troppo grande. Si può modificare in modo da mantenere solo le ultime x righe di data_list prima di salvare il file. In questo modo il file rimarrà abbastanza piccolo.
Dopo 4,104 caratteri il 'data.json' riempie la memoria del piccolo pico .-/
La domanda è: come limitare questo aspetto per portare a termine il progetto di cui sopra?
Un esempio / aggiunta di codice (come aggiornamento) sarebbe molto apprezzato!
TiA - e continua il tuo lavoro... .
PS: è stato pubblicato anche un problema corrispondente nel Repo di GitHub.
L'utilizzo del TP 4056 per questo tipo di progetto non è una soluzione efficace, vedi:
https://www.best-microcontroller-projects.com/tp4056.html
Il design costruttivo potrebbe utilizzare un interruttore di impostazione MPTT, come il Waveshare,
Descrizione qui:
https://www.waveshare.com/solar-power-manager.htm
Salute!
Grande idea di progetto! Qualcuno ha progettato una custodia stampata in 3D che vuole condividere?
Ciao,
grazie per il manuale.
Secondo le specifiche TP4056 LED-Anzeige Rot: (Ladevorgang), LED-Anzeige Blau: (Standby, Ladevorgang abgeschlossen)
Nel mio caso ho entrambi i LED accesi sul TP4056 quando il pannello solare è posto sotto la luce diretta. È una cosa voluta?
È possibile che la batteria possa essere caricata dall'energia solare e che possa fornire energia al Pico contemporaneamente?