Progetto automatizzazione mini serra

Dimenticavo, con un semplice nano, ci puoi fare diversa automazione per una serra, tieni presente che a te' non serve lettura di sensori real-time o ad alta velocita' ( le piante per loro natura sono abbastanza lente :grin: ) ... anche se fai letture una volta ogni 5 o 10 minuti, sarebbero piu che sufficenti ... lo stesso per le temperature e la ventilazione, se la serra e' abbastanza ben costruita, tempi simili non influiscono piu di tanto.

Vediamo, cosi ad occhio ... tre pin se vuoi mettere un'encoder per gestire i menu (o tre, o anche cinque, se vuoi usare dei pulsanti), se vuoi usare un piccolo display OLED tipo gli 1.3 pollici, A4 ed A5 ti serviranno per l'I2C (SDA e SCL), ti rimangono potenzialmente 6 pin utilizzabili come ingressi analogici (4 che si potranno anche usare come GPIO, mentre 2 fanno solo da ingressi analogici), se usi l'USB per programmarlo e non hai nulla di collegato in SPI, hai realisticamente altri 11 GPIO digitali (13 se vuoi usare anche D0 e D1), mettiamo il caso peggiore, vuoi usare 5 pulsanti (su, giu, avanti, indietro, ok) invece di un'encoder, ti restano comunque almeno 6 uscite digitali (con l'encoder sarebbero due in piu), alcune delle quali con possibilita' di PWM (non ricordo piu quali sono i timer da modificare, ma si puo cambiarne la frequenza, a patto di non cambiare il timer che e' usato per gestire le varie temporizzazioni, millis, eccetera)

Oltre a quelli hai ancora i 6 pin "analogici", se non ci devi collegare 6 sensori diversi, (ed a patto di usare per primi A6 ed A7), anche i rimanenti pin analogici possono essere impostati come GPIO digitali ... un suggerimento, a te' non dovrebbe servire una libreria "grafica" per disegnare sul display (semplici righe di testo dovrebbero essere piu che sufficenti sia per i menu che per comunicare all'operatore i vari parametri), quindi non usare una libreria grafica (soprattutto non un "mattone" come quelle di adafruit), ma una semplice libreria di solo testo tipo la U8x8, occupa pochissimo spazio, il testo lo invii al display con semplici comandi, e semplifica il lavoro.

Poi ti suggerirei di passare tutto a tensione minore, eliminando le parti a 230V, non tanto per il regolamento (che e' comunque importante), ma perche' parliamo di una serra, ambiente con una certa umidita' e con possibile rischio di ossidazioni di contatti o spargimento di acqua, e' sempre meglio prevenire che curare (e comunque ci sono sempre possibili soluzioni "creative" utilizzabili :grin: )

Ad esempio, io tempo fa avevo bisogno di un sistema di riscaldamento per irradiazione in un ambito "a rischio", ma le soluzioni industriali erano troppo complesse e costose ... ho preso su ebay in offerta una decina di lampade R7S da 250W a 110V, e le ho alimentate con un vecchio trasformatore industriale da 48V che avevo inutilizzato, "rendono" circa 50W l'una, quindi circa 500W tutte quante (a bassa luminosita', quasi tutti infrarossi e calore), sistema a bassissima tensione, galvanicamente isolato dalla rete, e molto piu sicuro che usare un paio di lampade a 230V

Ciao a tutti, grazie per le spiegazioni, sono state utili per chiarirmi un po' le idee e capire meglio come orientarmi sulla scelta dei componenti:

  • Arduino Nano Every
    1 × Sensore SHT31
    1 × Modulo RTC DS3231 con batteria CR2032
    1 × Display OLED (SH1106) 4-SPI
    1 × Encoder rotativo KY-040 con pulsante
    1 × Ventola 5 V da 80 mm (Noctua NF-A8 5V)
    1 × Alimentatore switching 5 V 3 A
    1 x Fusibile ritardato 1A

(Ho cambiato le ventole Arctic da 12V con una Noctua da 5V, eliminando il problema del mosfet. Una ventola sola è sufficiente, e posso controllarne la velocita attraverso il pin D6 di Arduino.) Penso di collegarla direttamente ai 5V e GND sulla breadboard prima degli altri componenti per evitare disturbi.

Ho già tutti i componenti tranne la ventola, l'ho sostituita momentaneamente con un led per verificare il funzionamento e l'intensità.
Dopo qualche prova sono riuscito a far funzionare tutto (all'inizio non funzionava il display perché stavo usando un cablaggio per interfaccia I2C del SSD1306 che avevo intenzione di usare all'inizio, poi mi sono accorto della differenza).
Ho collegato i pin in questo modo:

Pin Componente ---> Pin Arduino

(+)(VCC) -- OLED, SHT31, RTC, Encoder, Ventola ---> + 5V
(-)(GND) -- OLED, SHT31, RTC, Encoder, Ventola ---> - GND
(SDA) -- SHT31/RTC ---> A4
(SCL) -- SHT31/RTC ---> A5
(CLK) -- Encoder ---> D2
(DT) -- Encoder ---> D3
(SW) -- Encoder ---> D4
(PWM) -- Ventola ---> D6
(RES) -- OLED ---> D8
(DC) -- OLED ---> D9
(CS) -- OLED ---> D10
(MOSI) -- OLED ---> D11
(CLK) -- OLED ---> D13

Questo è il LINK al codice principale del progetto.

In generale sono abbastanza soddisfatto del risultato, sono certo che si può migliorare ma è comunque il mio primo approccio a questo mondo.
Sono benvenute opinioni/critiche costruttive/commenti/migliorie e quant'altro.
Grazie per l'interessamento!

PS: la ventola arriverà lunedi, farò un test di prova per vedere se effettivamente funziona come vorrei e installerò momentaneamente il tutto per verificare che sia stabile, dopodichè procederò alla versione definitiva saldata.

Problema che non c'è con le ventole Artic che avevi scelto, in quanto sono entrambe 4 pin PWM.

Comunue, quando sei pronto a fare il test ventola se serve ho codice per il PWM sopra 10Khz che sta lavorando con due ventole 120x120 di un purificatore d'aria autocostruito.

Arduino Nano Every? no allora non ho codice. Devi cercare un libreria per PWM.

Ciao.

Hai ragione, non ci avevo pensato.

Per quanto riguarda il codice, per ora ho usato la funzione analogWrite(), farò la verifica con la ventola per vedere se fa rumore.
Mi pare di aver capito che posso usare un'altra funzione sul pin D5 per regolare il segnale a 25kHz, mi informerò.