Buon giorno, volevo rendervi partecipi di un mio progettino riguardante Arduino per fare una stazione meteo.
Cercherò di essere breve e dire solo le cose essenziali per la realizzazione di quel che ho fatto(a livello di elettronica e codice), poichè di strumentazione meteo ne so poco,e vorrei un vostro parere su quanto fatto.
Siamo chiari, ho fatto tutto ciò perchè mi piace giochicchiare con l'elettronica e per studiarmi il c# che è il linguaggio usato per programmare Arduino(anche se alla fine,C# non è), non mi posso assolutamente reputare un appassionato di meteo,ma penso cmq di aver costruito uno schermo solare "decente".
L'idea di fondo era quella di alimentare un Arduino con un pannello solare e una batteria, per trasmettere ogni tot minuti le misurazioni fatte con i sensori collegati.
Il pannello usato e la batteria sono ultradimensionati per il lavoro che ho fatto, li ho giusto recuperati dal camper dove erano ormai non + utilizzati.
Per dire esattamente quanto assorbe l'arduino(con i sensori attaccati) dovrei attaccarmi con un tester, ma ricordo di aver fatto(a suo tempo) i calcoli e sulla carta, nella peggiore delle ipotesi, non avrei mai dovuto sforare i 150 mA(a farla granda, poichè la shield sensor e relaviti sensori non arriveranno mai a succhiare + di 40mA). Con una batteria da 12Ah,se il circuito consuma 150mA avrei 12/0,15=80 ore di autonomia,chiaramente in condizioni di buio totale).
Seguendo questa comparazione, ( https://tlextrait.svbtle.com/arduino-power-consumption-compared ) ho optato chiaramente per il nano, che ho poi attaccato ad una shield sensor tipo questa (https://www.elabpeers.com/arduino-io-shield.html).
Per chi volesse fare il top, consiglierei vivamente di farsi uno standalone su una pcb fatta su misura, con tutti i componenti saldati.Uno standalone non è altro che un atmega328(arduino è semplicemente un microcontrollore programmabile) saldato sulla basetta con il minimo di componenti e pin necessari.
Passiamo ai sensori:
Uno dei migliori sensori per la temperatura è il Si7051 della Silicon Labs, ha una precisione di ±0.1 °C (max) e funziona con un bus I²C, ed è uno dei pochi sensori di temperatura calibrato in fabbrica.
Avendone testati 2, vi posso assicurare che parliamo di qualche centesimo di gradi di differenza l'uno dall'altro).
Ci sono sensori anche + precisi(sulla carta), tipo l' LMT70A ±0.05°C ma è analogico e non digitale, non calibrato in fabbrica.
Il TSYS01 ±0.1°C 24bit è un'altro sensore iper preciso(probabilemente migliore del Si7051).
Il TSYS01 fornisce informazioni sulla temperatura calibrate in fabbrica che includono un chip di rilevamento della temperatura e un delta-ADC a 24 bit memorizzato in una PROM del sensore. Il valore di temperatura digitale a 24 bit e i valori di calibrazione interni impostati in fabbrica portano a informazioni di temperatura estremamente accurate accompagnate da un'alta risoluzione di misurazione.Digitale in I²C.
Umidità:
Poco da fare, per quel che ho visto in giro, nessun sensore batte il Sensirion SHT-75 in precisione.
Questa comparazione può darvi un idea della bontà di alcuni sensori(occhio che qui c'e'l 'SHT-71)
http://www.kandrsmith.org/RJS/Misc/Hygrometers/calib_many.html
Un'altro bel sensore per umidità è l' SHT35-D che misura umidità e temp con +/- 1.5%RH e +/- 0.1°C.
Il suo fratellino SHT31-D è 1 po' meno preciso, ma sempre iper valido(quello che ho provato non usciva mai oltre i 2 decimi di grado dal si7051(per quasi tutto il tempo era entro il decimo, in umidità era praticametne incollato all'sht35).
Pressione:
Non ricordo di aver trovato molto, ma solo questa: http://electronics-from-t.blogspot....-vs-bmp180.html per cui sono andato di Ms5611.
Se qualcuno ha altre info vi prego di postarmele
Luce:
Non ho guardato molto, e sono andato di OPT3002 e OPT3001 (luce/luce ambientale).
Io ho montato l'si7051,sht-35,l'ms5611 e l'OPT3002(l'opt3001 non l'ho collegato perchè alla fine l'ho reputato inutile).
Questi sensori funzionano tutti a 3,3v (da datasheet, l'ms5611 tiene anche i 5v, ma ho preferito cmq i 3,3v anche per lui),e funzionano tutti in I2c.
L'arduino,di base, ha le uscite della i2c a 5 volt, significa che se collegate questi sensori direttamente all'arduino non leggerete mai nessun valore.
Per far leggere correttamente i valori, dovrete collegare le uscite scl e clk(della i2c) a 3v3, e per fare questo dovrete utilizzare un convertitore logico bidirezionale tipo questo(https://www.sparkfun.com/products/12009).
Attenzione che non fa da abbassatore di tensione, da una parte dovete dare 5v,dall'altra 3,3v(dovete fornire entrambe tensioni,non è che ingresso do 5v e in uscita pesco 3,3v).
Per la trasmissione dati, ho usato due moduli nrf24l01+ e qui, sono stati dolori.
Se dovesse saltarvi in testa di farvi una stazione meteo tipo questa, evitate questi moduli come la peste.
Questi modulini succhiano la bellezza di ~900nA quando "dormono" e ~15mA quando trasmettono e danno qualche problema,ricordate sempre di saldare un condensatorino da 10µF tra Vcc e GND perchè altrimenti potreste avere malfunzionamenti.Con qualche piccola modifica e dopo aver letto il datasheet da zero, sono riuscito a farli funzionare bene, nel senso che allo stato attuale mi perdono neanche un pacchetto,tutte le misurazioni arrivano a destinazione nel 100% dei casi.
Funziona a 3,3v e non a 5, collegatelo ai 5 volt e lo friggerete all'istante.
Ci sono moduli + performanti e affidabili tipo 433Mhz HC-12 SI4463 che consumano di +, ma bucano anche i muri di un condominio dal piano terra al piano 10, e tirano 1km se non ci sono ostacoli in mezzo senza problemi
Sono entrambi moduli Wireless,e non wifii,non possono essere connessi direttamente ad un router.
Se volete connetterli direttamente al router dovete prendere moduli ESP8266 o simili, e so che funzionano molto bene.
Ovviamente il tutto dovrà essere collegato alla rete(a meno che non vogliate prendervi un touchscreen da x pollici e visualizzare tutto da là), e per fare ciò serve un'Ethernet shield tipo questa(https://store.arduino.cc/arduino-ethernet-shield-2) che ha pure uno slot per la SD,dove andremo a salvare le nostre misurazioni.
Essendo chiaramente connessa alla rete,avremo di conseguenza date e ora iper precisi, che ci eviterà di prendere moduli RCT oltretutto poco precisi.
Riassumendo, avremo un'unità esterna chiamanta Rx(slave) e un unità interna chiamata Tx(master) cosi composte:
Rx:
Arduino nano
Sensor shiled---> convertitore logico
Si7051
Ms5611
OPT3002
SHT35-D
modulo NRF24L01
Tx
Arduino Mega
Ethernet Shield
modulo NRF24L01
In questa foto potete vedere sia l'rx,sia il tx funzionanti.
Per quanto riguarda lo schermo solare, mi sono letto un po' di guide e alla fine ho realizzato questo:
https://imgur.com/uls5YLO
https://imgur.com/riHNNF5
https://imgur.com/LhAoHxF
sono 11 sottovasi verniciati di bianco con un tubo da 80mm che ha una ventola all'estremità per aspirare l'aria calda(ventola da 80mm che si attiva dopo i 25 gradi tramite un relè a 5v comandata da un uscita dell'arduino).
I vasi sono separati da dei tappi di sughero e fissati con 4 barre filettate da 4 mm se non ricordo male.
I sensori all'interno sono il si7051 e l'sht35 dentro a due scatoline tipo queste ( https://www.amazon.it/gp/product/B0...0?ie=UTF8&psc=1) con un po' di fori.
https://imgur.com/mJ22jDN
Il sensore della pressione è qui dentro (https://www.amazon.it/SCATOLA-STAGNA-IP44-DIAMETRO-60/dp/B0118K5ZEQ/ref=sr_1_37?s=electronics&ie=UTF8&qid=1521289076&sr=1-37&keywords=scatola+di+derivazione) chiaramente forata ed esterna allo schermo solare, piazzata sotto al blocco che contiene l'unità Tx.