Centralina irrigazione arduino con LCD

Il progetto di realizzare una centralina irrigazione arduino continua e siccome in molti mi hanno chiesto di poter avere un display LCD sulla centralina ho deciso di riprendere alcuni progetti e fonderli insieme.

Centralina irrigazione arduino

Aggiungere un display LCD 16×2 ed i pulsanti puoi utilizzare la Keypad LCD ed eseguire le regolazioni dell’ora oltre alle fasce di irrigazione.

Purtroppo la keypad LCD è incompatibile con la Relay Shield scelta in precedenza per il progetto in quanto la utilizzano entrambe i pin 5,6,7,8 per controlli differenti, la relè li usa per:

relay shield

e la Keypad LCD utilizza gli stessi pin per controllare il display 16×2.

Una controindicazione è data dal fatto che in entrambe le shield non puoi cambiare i pin a cui i circuiti sono connessi e questo ti porta a dover scegliere quale sostituire, ho preferito sostituire la keypad LCD con il display ACM1602B già utilizzato in questo articolo e 5 pulsanti collegati some la Keypad LCD.

Dedicherò alla connessione dei pulsanti un articolo specifico.

Centralina irrigazione arduino con LCD ACM1602B

il display ACM1602B è stato oggetto di alcuni articoli sia come semplice display sia collegato alla RTC Shield per visualizzare data ed ora, trovi tutta la descrizione in questo articolo.

Prima di usarlo nel progetto della centralina irrigazione arduino è necessario che tu modifichi le connessioni e lo sketch utilizzato, per cui partendo dall’articolo in cui il display già convive con la RTC Shield esegui le modifiche per consentire al display di convivere anche con la Relay Shield della centralina irrigazione arduino.

Collegamenti della centralina irrigazione arduino con l’ACM1602B

Il display ACM1602B presenta come collegamenti i seguenti:

centralina irrigazione Arduino

  • Enable
  • RS
  • D4
  • D5
  • D6
  • D7
  • Contrasto
  • BLACKLIGHT

tutti questi pin devono essere collegati ad Arduino come mostrato in figura:

centralina irrigazione Arduino connessioni

in pratica sposterai i pin D4-D7 dai pin 7, 6, 5, 4 di Arduino ai pin 10, 11, 12, 13 lasciando liberi i pin 5,6,7 utilizzati dalla Relay Shield.

Sposta anche i pin RS ed EN rispettivamente da 12 e 11 ai pin 4 e 3 di arduino.

Il pin 3 era usato per gestire il contrasto del display, puoi utilizzare il pin 9 che resta libero dopo lo spostamento.

Lo sketch di test per centralina irrigazione arduino LCD

lo sketch che leggi di seguito parte dallo sketch dell’orologio arduino realizzato con la RTC Shield ed il display ACM1602B a cui dovrai applicare le modifiche per farlo funzionare con le nuove connessioni.

Lo scopo di questo sketch è consentirti di verificare che tutte le shield del progetto possano funzionare anche con il display LCD 16×2 appenna cablato.

/*
 * RTC & LCD
 *
 * Autore: Mauro Alfieri
 * Tw: @mauroalfieri
 *
 * Web: https://www.mauroalfieri.it
 */

#include <Wire.h>
#include <RTClib.h>
#include <LiquidCrystal.h>

#define BACKLIGHT 2
#define CONTRAST  9

char buffer[10];

RTC_DS1307 RTC;
LiquidCrystal lcd(4, 3, 10, 11, 12, 13);

void setup () {
    pinMode( BACKLIGHT, OUTPUT );
    pinMode( CONTRAST, OUTPUT );
    digitalWrite( BACKLIGHT, HIGH );
    analogWrite( CONTRAST, 40 );

    Wire.begin();
    RTC.begin();
    lcd.begin(16, 2);

    RTC.sqw(1);
    if (! RTC.isrunning()) {
      RTC.adjust(DateTime(__DATE__, __TIME__));
    }
}

void loop () {

    DateTime now = RTC.now();
    lcd.clear();

    sprintf(buffer,  "%02d/%02d/%d", now.day(), now.month(), now.year());
    lcd.setCursor(0,0);
    lcd.print( buffer );

    char buffer[10] = "";

    sprintf(buffer,  "%02d:%02d:%02d", now.hour(), now.minute(), now.second());
    lcd.setCursor(0,1);
    lcd.print( buffer );

    delay(1000);
}

le linee in cui devi eseguire le modifiche sono la linea 15 che cambia da:

#define CONTRAST  3

a

#define CONTRAST  9

e la linea 20 che devi cambiare da:

LiquidCrystal lcd(12, 11, 7, 6, 5, 4);

a

LiquidCrystal lcd(4, 3, 10, 11, 12, 13);

Il resto dello sketch puoi lasciarlo invariato.

Eseguendo l’upload dello sketch sulla centralina irrigazione arduino con LCD visualizzerai correttamente la data e l’ora impostata nella RTC Shield è la dimostrazione che il tutto funziona in modo corretto e non ci sono conflitti tra i pin utilizzati dalle shield del progetto.

Al prossimo articolo in cui aggiungeremo i pulsanti alla centralina irrigazione arduino.

  • Questo sito ed i suoi contenuti è fornito "così com'è" e Mauro Alfieri non rilascia alcuna dichiarazione o garanzia di alcun tipo, esplicita o implicita, riguardo alla completezza, accuratezza, affidabilità, idoneità o disponibilità del sito o delle informazioni, prodotti, servizi o grafiche correlate contenute sul sito per qualsiasi scopo.
  • Ti chiedo di leggere e rispettare il regolamento del sito prima di utilizzarlo
  • Ti chiedo di leggere i Termini e Condizioni d'uso del sito prima di utilizzarlo
  • In qualità di Affiliato Amazon io ricevo un guadagno dagli acquisti idonei qualora siano presenti link al suddetto sito.

Permalink link a questo articolo: https://www.mauroalfieri.it/elettronica/centralina-irrigazione-arduino-lcd.html

20 commenti

2 ping

Vai al modulo dei commenti

  1. buongiorno,
    bel progetto,è un’ottima partenza per me, in quanto ora la mia idea sarebbe ampliare il tuo progetto:
    vorrei inserire nel progetto un dht11 per il rilevamento temperatura-umidità, uno o più ventilatori legati al dht11 per il controllo temperatura: al raggiungimento della temperatura desiderata stacca la stufa, parte la ventola- come scende al di sotto della temperatura esempio 22 gradi di minima stacca la ventola e riparte la stufa ecc..
    lo stesso discorso è legato ad un umidificatore che anch’esso attacca e stacca al raggiungimento di determinati tassi di rh si stacca o attacca.
    il tutto gestito da relay separati all’impianto idrico!
    La gestione delle luci a led di potenza da 3 w con spettro blu- rosso- ir- uv- che sono spettri di luce effettivamente assorbiti dalle piante.la gestione luci è data da un controller alba tramonto quindi non ha a che fare con arduino.
    La domanda è:
    mi puoi aiutare nella espansione della tua scheda con quel che sopra ho citato??
    a dire il vero con arduino ho iniziato da un mese, quindi come avrai ben capito sono parecchio asino in materia, progetti non ce ne sono in rete – per quel che serve a me-
    io ho comprato arduino 2560mega, dht11, scheda due relay 5v per arduino, ora mi servirebbe il tuo aiuto a realizzare il progetto!!
    Ti ho scritto stamani su facebuk, ribadisco il fatto che se vuoi posso pagarti per lo sbattimento, è importante che io raggiunga lo scopo, perchè se voglio iniziare a coltivare gli -ariocarpus- mi serve un controllo minuzioso del terrario, altriomanti nemmeno iniziare, sono parecchio difficili da da far nascere, in quanto sono cactus, quindi devo avere un ‘ambiente desertico se voglio farli nascere -crescere!!!
    per ora ti ringrazzio, spero che ti prenda bene il progetto,potresti inserirlo nei tuoi tanti che hai pubblicato, specialmente questo dell’irrigazione, sarebbe un’automatizzazione quasi completa!!

    ciao grazie diego

    1. Ciao Diego,
      posso realizzare per te un progetto, ti invio in posta nei prossimi giorni una scheda di progetto da compilare con il maggior numero di dettagli possibili sulla base della quale ti formulerò un preventivo di massima.
      Ti invito a non mettere nei commenti il tuo indirizzo email scritto in chiaro, io vedo cmq il tuo indirizzo email, per evitarti migliaia di spam in posta.

      Mauro

      1. interesserebbe molto anche a me, mi trovo a dover gestire un growbox con peperoncini e non riesco a mettere tutto insieme controlli temp e luci e umidità. Potresti darmi un sketch più o meno adattabile?!

        1. Ciao Giacomo,
          hai mai letto i miei articoli sulla realizzazione di un orto idroponico?
          Siamo a livelli molto più specifici rispetto alla semplice centralina di irrigazione e più completi dal punto di vista delle funzionalità.

  2. buongiorno Mauro,
    la ringrazio della risposta, sto studiando parecchio con arduino, seguo i tutorial di questo sito, diciamo che comincio ad orientarmi con i comandi.
    In seguito ti invierò un codice che sto iniziando a compilare,gia da ora comincio ad avere problemi di compilazione, ma prima o poi spero di riuscire .
    Appena ricevo la sua mail provvedo a compilare la scheda.
    Grazie, a risentirci,Diego

    1. Ciao Diego,
      ti chiedo di non incollare codice nei commenti.

      Mauro

    • Fabio il 24 Marzo 2014 alle 23:01
    • Rispondi

    Buonasera Mauro. Iinnanzi tutto volevo farti i complimenti per i tuo progetti. Finalmente ho trovato quello che mi serviva.
    Una domanda posso utilizzare un RTC con DS1302 al posto del DS1307?
    Quand’è la differenza?

    1. Ciao Fabio,
      io ho sempre usato il DS1307 non conosco il DS1302 e non saprei dirti che differenza ci possa essere tra i due e se la libreria scritta per il DS1307 possa andar bene senza necessità di adattarla.

        • Fabio il 29 Marzo 2014 alle 15:50
        • Rispondi

        Ho fatto delle prove e sono riuscito ad utilizzare il seguente codice della libreria DS1302 modificato (ho provato con una sola uscita ma devo capire come inserire i pulsanti di programmazione). La libreria del DS1307 sembra non funzionare:

        < codice rimosso in automatico >

        1. Ciao Fabio,
          forse non hai letto quello che c’é scritto in fondo ad ogni articolo o forse non ti é chiaro, il codice sketch non può essere incollato nei commenti.

    • Riccardo il 11 Aprile 2014 alle 16:30
    • Rispondi

    Inanzitutto ottimo sito internet, utile e chiaro;
    Sto costruendo anche io una centralina per gli irrigatori ma sono bloccato ai collegamenti hardware .. uso arduino uno r3, modulo rtc ds 1302, modulo 4 relè e keypadshield della df robots.
    Le mie domande sono 2: il keypadshield ha i fori di riporto per usare liberamente i pin digitali dal 1 al 7, ma poi dal 4 all’8 li usa il display, non riesco a capire se posso usarli per collegare i 4 rele o no; altra domanda è dove collego l’ rtc? Ha dei pin fissi o posso definirli io?
    Grazie

    1. Ciao Riccardo,
      la keypad LCD usa i pin dal 4 all’8 e non puoi usarli per altro.
      Per collegare la RTC devi usare SDA ed SCL ( I2C ) di arduino, ti consiglio di leggere i primi articoli che ho scritto sull’RTC, ricorda che anche i pin SDA ed SCL se li usi per la RTC potrai in seguito utilizzarli solo per altre shield I2C che non vadano in conflitto con la RTC.

  3. Ciao Mauro,

    anzitutto complimenti per i tutorial davvero molto ben realizzati.
    Volevo chiederti come mai non condividi anche gli schemi elettronici fatti, per esempio, con Fritzing e se c’è la possibilità che tu lo faccia.
    Ritengo possa essere davvero interessante poter realizzare davvero quanto appreso nel tutorial.

    Ciao e continua così
    Max

    1. Ciao Max,
      gli schemi li condivido ogni volta che ne intravedo l’esigenza per consentire la riproducibilità del progetto.
      Se mi segui da un po’ o inizi a farlo leggendo i miei articoli scoprirai che ci sono.

      In alcuni progetti, come questo, non sono necessari perché uso solo Shield già confezionate e costruite, si tratta di progetti di differente natura indirizzati anche a chi non saprebbe seguire uno schema elettrico e non vuole rinunciare a riprodurre il progetto.

    • Cosimo il 28 Aprile 2018 alle 20:18
    • Rispondi

    Salve, Complimenti per il progetto, volevo chiedere se, se ne può creare un altro però un tantino diverso…

    Ovvero utilizzare Arduino UNO, modulo relay ad 8 canali (ma se ne può utilizzare anche uno inferiore), LCD 1602 con I2C (per risparmiare pin della board e usarne solo 4 quindi), RTC DS3231 I2C che si collega allo stesso modulo dell’LCD e come tastiera la stessa utilizzata in questo progetto.

    Ciò che dovrebbe fare, avendo più pin digitali liberi a disposizione, sarebbe avere un menù nel quale settare ora e data attuale, menù di accensione e spegnimento per ogni relay connesso con possibilità di inserire più di una “sveglia” al giorno (tipo accensione/spegnimento 6:30/7:00 e 19:30/21:00).

    Io ho già preparato i collegamenti con le varie board ma non sono tanto bravo a programmare ciò che ho descritto.
    Mi Saprebbe Aiutare nella realizzazione di questo progetto?

    Cordiali Saluti
    Cosimo

    1. Ciao Cosimo,
      il blog ha come scopo quello di insegnare, con tutorial per passi successivi, a chi lo desidera come realizzare i propri progetti.
      Questo è il motivo per cui commento e spiego ogni mio codice.
      Se sei interessato ad un progetto su commissione puoi utilizzare la casella di posta info, da cui ti arriva questa risposta.

        • Cosimo il 4 Maggio 2018 alle 12:03
        • Rispondi

        La ringrazio davvero tanto, credevo potessi dare un’idea per un altro progetto come questo o anche per renderlo più completo.

        Comunque per il momento continuerò a provare da solo, se proprio non dovessi riuscire la contatterò in privato per un progetto su commissione.

        Cordiali Saluti
        Cosimo

        1. Ciao Cosimo,
          grazie per il suggerimento, se in futuro avrò tempo di dedicarmi a questo progetto lo farò di certo seguendo anche i tuoi consigli.

    • RINALDO il 19 Marzo 2021 alle 23:59
    • Rispondi

    Sig. Mario Complimenti Progetto favoloso vorrei chiederle come poter inserire un encoder al posto dei tasti su e giu dx sx
    grazie 1000

    1. Ciao Rinaldo,
      mi chiamo Mauro, ma non. è un problema 🙂
      Agni encoder ho dedicato molti articoli sul blog da cui puoi prendere punto per sostituire i pulsanti.

  1. […] « Centralina irrigazione arduino con LCD […]

  2. […] Centralina irrigazione arduino con LCD […]

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.