Arduino GrowBox Controller

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.

Controller GrowBox installato

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

Elettronica di Arduino GrowBox Controller nella scatola elettrica

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!

HomePage di Arduino GrowBox Controller
Home Page di Arduino GrowBox Controller

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.

Dashboard EmonCMS creata per il GrowBox Controller
Dashboard EmonCMS per il GrowBox Controller

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!

Peperoncini in crescita nella growbox
Peperoncini in crescita…

Funzioni di Arduino GrowBox Controller

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

Pagina delle impostazioni del GrowBox Controller
Pagina delle impostazioni

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
piante di peperoncino in crescita

Arduino GrowBox Controller:
Componenti utilizzati

I componenti utilizzati per questo progetto sono questi:

Detto questo non resta che assemblare i componenti!

Circuito Stampato per Arduino GrowBox Controller

Circuito stampato per il controller Growbox

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.