Sensore di Umidità Capacitivo per Piante: Come Costruire un Allarme Acustico Anti-Secchezza

Introdotto nella terra del vaso o fioriera, emette un suono tramite un cicalino piezo quando rileva che è poco umida per poter mantenere le piante in vita e in salute.

Quando si hanno molte piante in casa o in una serra, può capitare di scordarsi di dare loro l’acqua con la regolarità che esigono e questo, tanto più se i relativi vasi si trovano in zone differenti e non si riesce a far mente locale su quali abbiano ricevuto il prezioso liquido e quali no. In questi casi sarebbe utile escogitare qualcosa in grado di dare voce ai nostri vegetali, lanciando un allarme, pur discreto, se la terra diventa tanto secca da pregiudicare il loro stato di salute.

Questo qualcosa è sicuramente il circuito qui descritto, che si conficca nella terra fino all’altezza necessaria a funzionare correttamente (e senza danneggiare le radici…) e rileva l’umidità, emettendo un avviso acustico quando ritiene che sia insufficiente.

In vero non è la prima volta che vi proponiamo un monitor e segnalatore di questo genere, tuttavia i precedenti erano basati sul rilevamento resistivo, nel senso che nella terra entravano due elettrodi (ricavati nella parte a punta di un circuito stampato) tra i quali l’umidità creava un flusso di corrente direttamente proporzionale alla percentuale di umidità presente; invece nel circuito proposto in queste pagine si è optato per il rilevamento dell’umidità capacitivo, perché presenta il vantaggio di non stabilire un contatto elettrico con la terra e l’acqua, evitando così la corrosione degli elettrodi che si verificherebbe inevitabilmente per l’elettrolisi.

Infatti se si applica una tensione continua fra due contatti per rilevare l’assorbimento e quantificare l’umidità, l’acqua presente nella terra fa da elettrolito e il polo negativo attrae i cationi, vale a dire gli ioni di metallo, disgregando progressivamente l’elettrodo positivo e riducendo nel tempo la sua conducibilità, a discapito della precisione del rilevamento, che porta a false indicazioni.

Per ovviare a tale inconveniente bisognerebbe applicare agli elettrodi una tensione alternata, ma ciò complicherebbe il circuito.

Ecco quindi il perché del rilevamento a tecnica capacitiva.

Schema elettrico

Andiamo dunque a vedere ed esporre come funziona questo circuito, analizzandone lo schema elettrico proposto in queste pagine, dove l’elemento cruciale è il microcontrollore U1, mentre il sensore è quello che vedete contrassegnato con Cx e disegnato sotto forma di condensatore; la capacità in oggetto è quella parassita che si crea tra la pista collegata ad R1 e un grande piano di massa che la circonda sulla punta del PCB, come potete ben vedere guardando la relativa traccia lato rame.

U1 è un piccolo ma prestante ATtiny44A di produzione Atmel, nel quale viene eseguito un firmware che controlla tutte le funzioni utilizzando come temporizzazione il generatore di clock interno; all’inizializzazione, ossia dopo il power-on-reset, la linea PA1 viene settata come ingresso, la PA7 e la PB0 e la PB2 come uscite, mentre la PB1 viene gestita in modo reversibile, da input che può essere assegnato all’ADC interno o posto ad uno logico: vedremo poi a quale scopo.

Una volta avviato, il firmware genera un segnale pulsato della frequenza di 1 MHz (prelevato dal generatore di clock interno al microcontrollore) rendendolo disponibile sul proprio piedino 5 e lo applica al condensatore sensore, che viene pertanto caricato e scaricato producendo un flusso di corrente alternata che evita l’elettrolisi. La costante di tempo di carica del Cx dipende dal resistore che le si trova in serie, ovvero R1, nonché dalla capacità assunta dal Cx stesso: più quest’ultima è grande, maggiore sarà il tempo richiesto da Cx per caricarsi completamente, pertanto al crescere della capacità, progressivamente tra l’anodo del D1 e massa si troveranno impulsi di ampiezza decrescente.

La tensione presente sul Cx passa dal diodo D2 e viene filtrata dal condensatore C4, la cui costante di tempo di carica e scarica è stabilita dal valore della resistenza (R2) postagli in parallelo; il complesso D1, R2, C4 funziona come un rivelatore di picco (la capacità a valle del diodo raggiunge un potenziale uguale al picco prima del D1, diminuito della tensione di soglia dello stesso) che presenta all’ingresso PA1 del microcontrollore una tensione livellata la cui ampiezza dipende dalla capacità delle piste del PCB che funzionano da elemento sensibile, pertanto da quella del Cx. Siccome quest’ultima dipende dall’umidità della terra, la quale fa variare la costante dielettrica del dielettrico interposto tra le due armature, è facile rilevare le condizioni della pianta monitorata leggendo il potenziale sul piedino PA1 tramite l’A/D converter interno all’ATtiny44A.

Il valore numerico ottenuto viene confrontato con la soglia impostata nel firmware e quando è fuori range il microcontrollore inizia a generare un segnale acustico pilotando in PWM la propria linea PA7 allo scopo di produrre impulsi a una frequenza tale da far emettere al cicalino piezo (SP1 nello schema elettrico) delle note acustiche; gli impulsi pilotano il gate del MOSFET Q, un piccolo enhancement-mode a canale N, il cui drain fornisce impulsi concomitanti di corrente al cicalino.

Il livello di allarme, vale a dire la tensione all’input PA1 che determina l’emissione degli impulsi, può essere impostato individualmente per ogni pianta e man mano che la terra diviene più secca la durata dei beep emessi dal cicalino aumenta; infatti una volta stabilita la soglia, il firmware leggerà quanto il valore attuale si discosta da essa e più ampio è il margine, più lunghi diventano i treni di impulsi prodotti e inviati al gate del MOSFET.

Andiamo adesso al LED1, il quale viene sfruttato per implementare due funzioni di cui una giunzione PN è capace: fare luce e rilevare luce; il primo caso è quello in cui il LED deve pulsare per fornirci segnalazioni visive, ad esempio durante la calibrazione della sonda, allorché PB0 viene forzato ad 1 logico e PB1 a livello alto.

Invece per rilevare la luminosità si sfrutta la caratteristica dei diodi di aumentare la propria corrente di saturazione inversa (quella che scorre quando il catodo è positivo rispetto all’anodo e quindi il LED è spento) tanto più quanto più intensa è la luce che ne colpisce la giunzione; questa corrente influenza anche la scarica della capacità parassita di giunzione.

Per rilevare la luminosità ambiente il LED1 viene prima polarizzato direttamente, poi inversamente; in questa condizione la sua capacità parassita si carica. Per la misura dell’intensità luminosa il firmware pone a livello alto la linea PB0 e misura la corrente entrante in PB1, la quale ha un andamento esponenziale decrescente rilevabile dall’A/D converter; il timer interno al micro permette di misurare il tempo di scarica e derivare da ciò l’intensità luminosa. Siccome l’involucro del LED qui utilizzato è in resina trasparente (parliamo di un componente SMD…) la luce colpisce bene la giunzione PN dal lato P e ne causa l’incremento della corrente inversa, che si traduce in un corrispondente aumento del potenziale sulla linea PB1.

Chiaramente la lettura della luminosità nell’ambiente è alternativa all’accensione del LED1 e viene eseguita quando il microcontrollore si accorge che la terra è secca e intende segnalarlo acusticamente tramite il cicalino; in quel caso implementa una modalità “non disturbare” dove prima verifica se è giorno o se è buio, quindi nel primo caso dà luogo all’emissione della segnalazione acustica, mentre nel secondo non produce suoni, così da non svegliare chi dorme. Inizierà a segnalare la mattina, quando tornerà giorno o in ogni caso quando qualcuno accenderà la luce della stanza e sarà quindi “disturbabile” perché già sveglio.

L’intero circuito è alimentato da una pila al litio a bottone di tipo CR2032, quindi a 3V: l’ATtiny funziona tranquillamente a tale tensione. Siccome il circuito consuma in buona parte quando emette il suono e misura il livello di luminosità nell’ambiente e questo accade quando la terra della pianta monitorata è troppo secca, più sarete solerti nell’annaffiare la pianta stessa, più lunga sarà l’autonomia del circuito.

Per come è fatto il firmware, quando si inserisce la batteria il cicalino emette un breve segnale acustico, il LED lampeggia brevemente e inizia la calibrazione automatica dell’umidità della terra: l’ADC acquisisce la tensione sulla linea PA1 e memorizza quel dato come soglia; terminata questa fase, un altro breve segnale acustico indica che il circuito è operativo e calibrato.

Il valore memorizzato corrisponderà alla condizione che il circuito considererà “terra secca”.

In ogni momento è possibile ricalibrare il circuito premendo il pulsante (SW1) collegato al reset del microcontrollore: il firmware ripartirà ed eseguirà nuovamente la sequenza appena descritta.

Quindi se volete che l’allarme scatti a un nuovo valore di umidità, date alla pianta l’acqua che ritenete necessaria, introducete l’estremità sensore del circuito stampato nella terra e premete il pulsante di reset, attendendo l’ultimo segnale acustico.

Un’ultima nota sul funzionamento e sul firmware riguarda la possibilità di interfacciare il microcontrollore ATtiny44A tramite I²C-Bus grazie all’implementazione sul circuito stampato di una connessione di programmazione ISP standard AVR a 6 pin, utilizzabile sia per la programmazione che per la comunicazione seriale.

Il dispositivo è programmato per funzionare da Slave I²C-Bus e l’header ICSP può essere utilizzato per leggere i livelli di umidità e luce dall’esterno, ad esempio tramite una scheda Arduino, che funzioni da Master del bus I²C. In tal caso ricordate che l’indirizzo predefinito nel firmware è 0x20.

La piedinatura del connettore ICSP, secondo quanto vedete nello schema elettrico e riferendovi al piano di montaggio, è la seguente:

• pin 1 = MISO;
• pin 2 = Vcc;
• pin 3 = SCL;
• pin 4 = SDA
• pin 5 = Reset;
• pin 6 = GND.

È possibile attivare la comunicazione e comunque la connessione ICSP premendo il tasto di reset, allorché il circuito legge la capacità Cx (per calibrare la soglia di umidità) e il livello di luminosità tramite il LED: ciò può richiedere da 1 a 9 secondi (in caso di ambiente buio).

Se durante quel periodo viene ricevuta una richiesta di comunicazione da parte di un Master I²C-Bus, il firmware passa alla modalità sensore: il circuito non emetterà alcun allarme ma si limiterà ad acquisire i parametri ambientali e risponderà solo alle stringhe di comando provenienti dall’I²C-Bus.

Piano di MONTAGGIO

Elenco Componenti:

R1, R5, R6, R7: 10 kohm (0603)
R2: 510 kohm (0603)
R3: 100 ohm (0603)
C2, C3, C4, C5: 1 µF ceramico (0603)
LED: LED verde (0805)
Q1: BSN20 (SOT23)
D1: RS1M (DO214AC)
D2: BAT54 (SOD523)
IC1: Attiny44A (MF1691)
SW1: Microswitch 6x6
B1: Porta batteria CR2032 da CS
SP1: Buzzer

Varie:
- Circuito stampato S1691 (140x16 mm)

Realizzazione pratica

Bene, ora che sappiamo come funziona questo circuito passiamo alle note costruttive, con una precisazione: la sonda che rileverà l’umidità è tutt’uno con il circuito stampato su cui prenderà posto l’elettronica, nel senso che ne è la metà opposta a quella su cui si troveranno microcontrollore, cicalino ecc. (Fig. 1).

La lunghezza complessiva dello stampato, la cui estremità da introdurre nella terra è a punta, è di 14 cm circa, quindi abbastanza da poter rilevare l’umidità lasciando fuori e in sicurezza (ovvero evitando che si bagni) l’elettronica.

Il PCB è del tipo a doppia faccia e si può realizzare a partire dalle due tracce lato rame scaricabili dalla sezione Download della pagina di presentazione di questa rivista www.elettronicain.it (insieme agli altri file del progetto).

Incisa e forata la basetta potrete disporvi i pochi componenti occorrenti, rammentando che da un lato vanno saldati nell’ordine i resistori e i condensatori (ricordate che Cx non è un componente ma è ottenuto dalle piste poste sull’estremità appuntita della scheda, come visibile nella Fig. 1) poi i diodi al silicio e il LED, il MOSFET, quindi il microcontrollore e il pulsante, mentre dall’altro vanno solo il cicalino e il portapila, come si vede nella Fig. 2.

Fig. 1 Il circuito dell’allarme per piante: la parte da introdurre nella terra è quella a punta.

Fig. 2 Portapila a bottone e cicalino si trovano dal lato opposto rispetto agli altri componenti.

 

A parte il cicalino, tutti i componenti sono a montaggio superficiale, ragion per cui dovete avere la manualità che serve, oltre a un saldatore per elettronica a punta molto fine, del filo di lega saldante da 0,5 mm di diametro e una pinzetta per posizionare ben centrati nelle rispettive piazzole tutti gli elementi, oltre a una lente d’ingrandimento per controllare bene il risultato ed eventualmente rimuovere “baffi” di stagno che fanno cortocircuito fra piazzole attigue, aiutandosi con della pasta flussante.

Prestate la massima attenzione all’orientamento dell’integrato e dei diodi, ben indicato nel piano di montaggio che trovate in queste pagine; nessun problema, invece, per il MOSFET, che si può montare solo nel verso giusto perché le sue piazzole sono disposte in modo univoco.

Una volta completato il montaggio e verificatane l’esattezza, bisogna programmare il microcontrollore sfruttando, allo scopo, il connettore ICSP; per farlo si può fare ricorso a un programmatore per micro Atmel, ovvero a una scheda Arduino Uno configurata per farlo; trovate il firmware da caricare nella solita sezione Download del nostro sito, insieme ai file di questo progetto. Programmata la scheda, inserite la pila a bottone nel portapila e verificate che il circuito esegua la sequenza di avvio già descritta, evidenziata da una nota acustica, il lampeggio del LED e una nuova nota acustica.

Per quanto riguarda l’utilizzo, la scheda va conficcata nella terra dove si trova la pianta da controllare accertando che sia ben circondata e non vi siano spazi (altrimenti il rilevamento capacitivo non sarà corretto); l’ideale è attendere che la terra sia al punto di “secchezza” che ritenete corrisponda alla necessità di annaffiarla; dopo aver introdotto il PCB fino a quando la linea bianca impressa arriva quasi a livello della terra, premete il pulsante di reset e attendete il lampeggio del LED e l’ultima nota acustica.

A questo punto il microcontrollore avrà impostato come livello di allarme la condizione attuale della terra. Annaffiate (badando di non bagnare la parte di scheda contenente l’elettronica) e verificate che l’eventuale allarme venga tacitato.

Quando il livello di umidità nel terreno scenderà, il dispositivo attiverà la segnalazione; se il cicalino inizia a suonare quando la terra è ancora umida, estraete lentamente il circuito dal terreno e verificate se smette, altrimenti premete il pulsante di reset, reintroducete la scheda e compattate la terra intorno ad essa (alla parte introdotta nel terreno…) attendendo che abbia fine la solita procedura di calibrazione automatica.

Acquisire i dati con Arduino

Arrivati a questo punto, prima di chiudere vi facciamo notare che il dispositivo qui proposto può essere utilizzato come semplice sensore, interfacciandolo ad Arduino per conoscere lo stato della luminosità rilevata e dell’umidità del terreno.

Allo scopo basta caricare in Arduino lo sketch proposto nel Listato 1 e collegare la connessione ICSP relativamente a SCL, SDA e GND. Fatto ciò, basterà accendere la scheda Arduino e poi resettare il dispositivo con il pulsante SW1 per avviare la comunicazione su I²C-Bus: il monitor seriale fornirà i dati letti, visibili sullo schermo del computer collegato tramite USB.

Listato 1

#include <Wire.h>

void writeI2CRegister8bit(int addr, int value) {
  Wire.beginTransmission(addr);
  Wire.write(value);
  Wire.endTransmission();
}

unsigned int readI2CRegister16bit(int addr, int reg) {
  Wire.beginTransmission(addr);
  Wire.write(reg);
  Wire.endTransmission();
  delay(20);
  Wire.requestFrom(addr, 2);
  unsigned int t = Wire.read() & lt; & lt;
  8;
  t = t | Wire.read();
  return t;
}

void setup() {
  Wire.begin();
  Serial.begin(9600);
  writeI2CRegister8bit(0x20, 6); //reset
}

void loop() {
  Serial.print(readI2CRegister16bit(0x20, 0)); //legge il registro della capacità
  Serial.print(“, “);
  Serial.print(readI2CRegister16bit(0x20, 5)); //registro della temperatura
  Serial.print(“, “);
  writeI2CRegister8bit(0x20, 3); //richiede la misura della luminosità 
  Serial.println(readI2CRegister16bit(0x20, 4)); //legge il registro della luminosità
}

 

Bene, con questo abbiamo concluso: riteniamo di avervi suggerito un circuito molto utile, che va oltre il gadget e che in alcuni casi, per esempio piante molto esigenti, può aiutarvi a prendervi cura di esse. Naturalmente potrete realizzare tante copie quante ne vorrete, introducendo ciascuna nel vaso di una pianta e calibrandola in base a quanto vorrete che la terra debba essere umida.

Come vedete, l’elettronica viene in aiuto di chi non vuole rinunciare ad avere il “pollice verde”.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Menu