Arduino GrowBox Controller è finalmente disponibile su GitHub. Ho deciso di condividere, sotto licenza GPL3, il firmware che ho sviluppato e migliorato in questi anni per la mia GrowBox basata su Arduino Mega 2560 Rev.3
Se mi segui già da tempo, avrai visto che in questa sezione ho già pubblicato alcuni articoli riguardanti la costruzione della GrowBox. Questo include la costruzione della struttura in legno e i vari miglioramenti apportati. Inoltre potete vedere le varie fasi della crescita delle piante all’interno.

Panoramica
Grazie ad Arduino Mega 2560 Rev.3 questo firmware Open Source per GrowBox riesce ad offrire un piccolo webserver per la configurazione, l’invio dei dati registrati ad un’instanza di EmonCMS e il salvataggio dei dati in csv su SD Card. Questi log csv sono scaricabili dalla pagina web del GrowBox Controller

Arduino GrowBox Controller utilizza sensori DHT22 per valori di Temperatura ed Umidità interni ed esterni. I DS18B20 sono invece utilizzati per la temperatura del terreno e del vaso campione.
Lo shield Ethernet consente una configurazione da remoto, oltre alla visualizzazione e al download dei dati registrati. Questo rende dunque il display LCD 20×4 opzionale!

L’integrazione di Arduino GrowBox Controller con EmonCMS ci permette di visualizzare lo storico dei dati e lo stato delle utenze da remoto. Se stai già utilizzando EmonCMS invece, puoi integrarlo nella tua applicazione.

Dallo scorso anno, oltre ai peperoncini, ho fatto germinare e crescere con successo pomodori, zucche, zucchine, peperoni, melanzane, cocomeri e meloni. Questo per velocizzare i tempi dato che qui a Carnago il periodo buono per gli ortaggi estivi non è molto. Raccogliere e mangiare i primi pomodori dell’orto a fine Giugno è stato fantastico!

Funzioni di Arduino GrowBox Controller
Diamo un’occhiata alle funzioni del Controller per GrowBox basato su Arduino Mega!

Controllo Parametri Ambientali
Controllo Temperatura GrowBox
E’ possibile impostare le soglie di attivazione del riscaldamento:
- Min Temperature: Temperatura al di sotto della quale il controller andrà ad attivare il riscaldamento
- Max Temperature: Temperatura al di sopra della quale il controller andrà a disattivare il riscaldamento
Controllo Umidità GrowBox
E’ possibile impostare le soglie di attivazione dell’umidificatore:
- Min Humidity: %RH al di sotto della quale il controller andrà ad attivare l’umidificatore
- Max Humidity: %RH al di sopra della quale il controller andrà a disattivare l’umidificatore
Temperatura Fondo/Sabbia
- Min Ground Temp: temperatura al di sotto della quale il controller sarà libero di attivare il riscaldamento (se la temperatura interna lo richiede)
- Max Ground Temp: temperatura al di sopra della quale il controller disattiverà il riscaldamento in ogni caso, per prevenire danni alle radici ed eccessiva evaporazione dell’acqua nei vasi
Controllo Illuminazione di Arduino GrowBox Controller
- Start Hour: ora alla quale controller attiverà l’illuminazione
- Start Minute: minuti ai quali il controller attiverà l’illuminazione
- Stop Hour: ora alla quale il controller disattiverà l’illuminazione
- Stop Minute: minuti ai quali il controller disattiverà l’illuminazione
Se vogliamo accendere le luci alle 6:30 e spegnerle alle 22:30 andremo ad impostare:
- Start Hour: 6
- Start Minute: 30
- Stop Hour: 22
- Stop Minute: 30
Network
Qui potremo impostare i parametri della nostra rete locale
- IP Address: l’indirizzo IP Statico che andremo ad associare al nostro controller
- Subnet Mask: la Subnet Mask della nostra rete locale
- Gateway: l’indirizzo IP del nostro gateway
- DHCP: è possibile scegliere se utilizzare il DHCP o meno, e quindi utilizzare i parametri impostati nelle caselle sopra.
Ventilazione
Molte lampade scaldano molto, per questo è possibile differenziare la ventilazione in caso di illuminazione accesa o spenta.
Fans – Light ON
- Duration: durata in minuti della ventilazione
- Interval: intervallo tra le attivazioni delle ventole in ore
Fans – Light OFF
- Duration: durata in minuti della ventilazione
- Interval: intervallo tra le attivazioni delle ventole in ore
Real Time Clock
Qui possiamo impostare data e ora per regolare l’orologio interno di Arduino GrowBox Controller, per consentire di riprendere il programma in caso di interruzioni di corrente elettrica e per salvare correttamente data e ora nei file di log dei parametri registrati.
I dati necessari sono Giorno, Mese, Anno, Ora, Minuti, Secondi.
Frequenza di acquisizione e frequenza di log
Il motivo percui ho scelto di mantenere separate queste due frequenze è semplice: il controller può elaborare dati a velocità relativamente elevate, quindi, può reagire in fretta ed azionare luci, ventole, riscaldamento ed umidificatore in tempi rapidi. I nostri log, con questa mole di dati, sarebbero ridondanti, e, oltre a sprecare spazio sulla SD Card, andrebbero ad effettuare tante richieste HTTP per la trasmissione dei dati ad EmonCMS.
- Sample Rate: secondi di intervallo tra un campionamento dei sensori ed il successivo
- Transmission and Log Rate: minuti di intervallo tra un salvataggio (ed invio ad EmonCMS) e il successivo

Arduino GrowBox Controller:
Componenti utilizzati
I componenti utilizzati per questo progetto sono questi:
- Arduino Mega 2560 Rev. 3
- Ethernet Shield 2 (W5500)
- 2 x DHT22 (o DHT44 se preferite)
- 2 x DS18B20
- Scheda Relay 4CH
- RTC DS3232
- Display 20×4 con I2C
- Jumper Cables
- Scatole per elettronica
- Alimentatore per Arduino
Detto questo non resta che assemblare i componenti!
Circuito Stampato per Arduino GrowBox Controller

Ho iniziato anche lo sviluppo di un circuito stampato dedicato a questo controller, realizzato come “shield”. Arduino Mega e l’Ethernet Shield continueranno ad essere utilizzati, mentre questo pcb ci faciliterà la vita esponendo le connessioni dedicate a relay, sensori (con jumper per le resistenze di pull-up), RTC, display e qualche output pensato per future espansioni. I sorgenti Eagle sono disponibili sempre su GitHub.
Futuri sviluppi
Anche se questo è il terzo anno che le mie piante crescono grazie all’aiuto di questo controller per GrowBox, ho in mente alcune migliorie da apportargli:
- Controllo PID per il riscaldamento, aggiungendo un relay a stato solido per il controllo dell’elemento riscaldante e migliorare l’efficienza energetica e la stabilità della temperatura
- MQTT, per integrare il dispositivo in sistemi di domotica o piattaforme IoT complesse come ThingsBoard.io
- NTP per impostare il Real Time Clock periodicamente ed eliminare eventuali errori
- Preheating: accendere il riscaldamento poco prima di spegnere le luci, per evitare eventuali sbalzi termici quando necessario
- Gestione irrigazione con sonda umidità in un vaso campione
E tante altre che probabilmente verranno in corso d’opera.