Progetto (da neofita) per irrigazione terrazza

Ci sono diversi modelli ma hanno piu o meno tutti l'uscita analogica ... o si prende un Groove della Seeedstudio e si modifica, o si va di autocostruzione, che praticamente ormai tutti quei sensori usano lo stesso circuito di base, un LMC555 come oscillatore sui 350KHz, un'integratore diodo/condensatore, gli elettrodi collegati fra l'uscita e massa, cosi piu c'e' umidita', maggiore e' il segnale chiuso verso massa e minore quello all'uscita, ed un'operazionale per "rinforzare" un po l'uscita altrimenti si potrebbero usare solo con ingressi ad alta impedenza ... dato che c'e' l'operazionale, si puo collegarlo come comparatore invece che come buffer, e si ottiene un'uscita on/off anziche' analogica (ma per modificare quelle commerciali serve saper lavorare con i componenti SMD, specie il farci modifiche, sei in grado ? ... se no, si puo ricostruire anche con componenti standard ed andare di autocostruzione)

Post fresco fresco molto esplicativo di quello che può accadere, e con un solo relé per una pompetta a 5 volt: https://forum.arduino.cc/t/problemi-con-il-rele-nella-gestione-di-una-pompa-per-una-serra/981650. Manca sicuramente uno snubber sulla pompa per eliminare le scintille dei contatti, ma potrebbe esserci anche altro, ad esempio fili degli ingressi non filtrati che passano vicinissimi a sorgenti di disturbo. E possono esserci anche "mancanze" software... se ci si aspetta un mondo ideale di uni e di zeri belli stabili, e invece dalla realtà fisica (imperfetta e rumorosa) arrivano per motivi vari brevi impulsi, e non si gestiscono come tali, anche questo è un motivo di possibili malfunzionamenti.

Certo ora siamo in fase "esplorativa" sulle varie alternative, sarebbe utile proporre una serie di moduli hardware per capire se vanno bene, se richiedono adattamenti, se sono semplici da gestire ecc.

1 Like

È più semplice aggiungere un comparatore all'uscita di una sonda analogica. Ma qui ne servirebbero trenta...

Secondo me sarebbe più semplice realizzare unità più piccole dislocate, massimo otto canali, a cui arrivano solo i cavi di alimentazione per la logica e per la parte di potenza. Basta un Arduino nano con la comoda screw shield, che da cablare ce n'è già in abbondanza lo stesso :roll_eyes:

Qualcosa del genere (con il pin D2 si accendono e spengono le sonde):

Grazie mille a tutti per le risposte ma sta diventando un pò troppo complicato per le mie capacità:rofl::rofl::rofl:
Se secondo voi funziona procederei con idea seguente (naturalmente poi dovrete spiegarmi come fare i filtri che dello schemino ho capito solo la resistenza​:rofl::rofl:).

-Elettrovalvola principale fuori da tutto il progetto (per un'ulteriore sicurezza) di buona fattura che verrà aperta ogni volta che è necessaria l'irrigazione.
-Arduino UNO o mega
-30 sonde capacitive con relativi filtri da costruire
-31 relè con snubber (che non ho capito cosa siano, mi dovrete spiegare cosa siano), uno in più per gestire l'elettrovalvola a monte di tutto
-30 elettrovalvole tutte normalmente chiuse
-multiplexer qb
-shift qb

Dite che così potrebbe andare?

Preferirei in questa maniera poichè escludendo i due filtri ho +- capito come farlo, con gli altri metodi proposti non ho idea di che cosa fare;)

Buongiorno e buona pasqua a tutti, la notte ha portato consiglio o per meglio dire problemi :rofl:
Vorrei prevedere anche se non da subito, ma vorrei avere hardware sufficiente per poterlo fare in futuro una alimentazione tramite batteria (pacco di 18650 o 21700 da 12v) che si ricaricherà tramite pannellino solare. Questo non divrebbe essere un grande problema, ma vorrei prevedere un modulo wifi che (senza prevedere una interfaccio, non sono in grado) mi permetta di vedere lo stato della batteria, la carica che sta ricevendo ecc, in poche parole guardare il serial monitor di arduino in cui prevedero di far uscire quei valori senza dover per forza essere attaccato via cavo...
Esiste un mdoulo che posso attaccare alla board che ho previsto o devo prendere qualcosa di particolare che abbia il wifi integrato?

Wifi e batteria non vanno d'accordo

Si in effetti hai ragione, allora senza wifi;)

Se intendi alimentare tutto solo col sole, vedi se questi due post aiutano a inquadrare il problema:
https://forum.arduino.cc/t/serra-domotica-con-arduino/541424/5
https://forum.arduino.cc/t/pannelli-solari-e-batterie/460826/25
Il tutto sarà affrontabile solo quando si conoscerà esattamente il consumo medio di energia giornaliero del sistema.

Per tenere bassi i consumi puoi provare a dare uno sguardo a "termoremoto non è termometro scritto sbagliato"

Anzi, fai un giro su "aiutateci ad aiutarvi" e anche su "la pappa è fatta"

Ma se nei consumi ci sono anche le elettrovalvole...


Per il resto la gestione del tutto è forse un po' più complicata del semplice secco uguale irrigazione accesa. Ci sono piante che preferiscono cicli (come la pioggia, le annaffi per bene una volta alla settimana) e altre che vivono naturalmente in terreno sempre umido, e conta anche la dimensione dei vasi, più piccoli sono più perdono umidità. Questo significa una diversa gestione dei tempi di irrigazione e di pausa, e delle soglie di secco e umido per ciascun vaso. Vogliamo metterci anche la temperatura e umidità esterna? E la luminosità per scegliere tra irrigazione diurna o notturna? A voler fare le cose per bene c'è da divertirsi :wink:

Poi, per contenere il consumo istantaneo e non richiedere un alimentatore troppo potente, le valvole non andrebbero mai attivate tutte assieme, ma gestite con una strategia software di "prenotazione".

Il disegno del post #23 l'ho pensato in funzione della minima difficoltà costruttiva, minor numero di componenti, cablaggi ecc. Eventualmente l'alimentazione interrotta per le sonde si può realizzare con un altro relé (invece che allo stato solido con due transistor come disegnato) e con un secondo step down a 5V già pronto (invece che cablare un regolatore 7805).

snubber (che non ho capito cosa siano, mi dovrete spiegare cosa siano)

Nel disegno del post #23 sono i diodi in parallelo ai contatti del modulo relé, ho ipotizzato per semplicità elettrovalvole in corrente continua da 12V.

-30 elettrovalvole tutte normalmente chiuse

Qualche link?

-multiplexer qb

Multiplexer analogici però, non digitali.

come fare i filtri che dello schemino ho capito solo la resistenza

Resistenza da 1000 Ω
Condensatore ceramico o poliestere da 100 nF
Diodo zener da 5V

Per gli snubber in corrente continua: diodi 1n4007

Tutti componenti comuni.

@Standardoil Andrò a vederli sicuramente
@Claudio_FF Sicuramente la mia idea è quella, diciamo che la mia idea è seguire una numerazione precisa dei vasi, quindi teoricamente vorrei riuscire a creare delle micro-zone (da studiarmi bene, ma comunque ogni vaso presente in quella micro-zona avrà la sua sonda) in cui le piante abbiano +- le stesse necessità e le stesse dimensioni di vaso +-, li andrò a studiarmi bene i valori che mi restituisce la sonda e regolerò di conseguenza.
Le micro-zone avranno anche tempi di irrigazioni diversi per cercare di non annaffiare anche quello di sotto, nel senso vasi piccoli per esempio 10 secondi di irrigazione, poi stop e ricontrollo dopo 20 minuti, se necessario altri 10 secondi e così via fino a che non si raggiunge il valore desiderato. Per vasi più grandi stesso discorso con tempi più lunghi.

Elettrovalvole e sonde voglio che si accendano non insieme ma una alla volta(elettrovalvole principalmente perchè vorrei potermi gestire la pressione a monte e se le aprò tutte insieme non riesco), diciamo creo un array con quelle che hanno necessità di irrigazione, lo scannerizzo dopo averlo creato e ne apro una alla volta seguendo l'ordine dell'array. Rimane in quell'array in loop fino a che non raggiunge il valore desiderato di umidità e poi viene eliminato.

Via software diciamo che vorrei procedere verso questo senso, poi vedrò se riesco a farlo.
Per tutti i componenti magari in giornata o nei prox giorni vi linko quelli che ho messo nel carrello virtuale e vediamo se vanno bene;)

Bistabili a scarica di condensatore

Le centraline commerciali ci fanno mesi con una pila 9v...

Ma io ho citato solo una riga e mezza...

Come che è che si vede tutto?

Scusate non so se posso mettere i link, nel caso li tolgo subito...
A proposito io prenderei tutto su aliexpress, se avete siti migliori sono accettati consigli;)

-elettrovalvole 12v

-relè 12v

-multiplexer analogici

Ho nel carrello anche i componenti per realizzare i filtri ma ora mi è un pò un casino inserirli.

In più prendero due alimentatori da 12 volt, ho letto che alimentare i relè a parte insieme alle elettrovavolve dovrebbe togliere un sacco di casini riguardanti i disturbi.
Devo capire se prendere un alimentatore ulteriore per le sonde o alimentare tutto tramite arduino, cosa consigliate?

Per ora ho messo da parte l'idea solare, cerco di programmare il tutto per farlo funzionare con gli alimentarori. Una volta a regime mi vado a studiare batterie e cose varie.

Quelle valvole tengono poco più di mezzo bar di pressione.
Gli shift register sono la versione microscopica SMD, secondo me sono da usare questi: https://it.aliexpress.com/item/4001031355259.html, ma allora bisogna pensare anche a zoccoli, millefori per il montaggio ecc.

Le sonde meglio non alimentarle da Arduino per non sovraccaricare il regolatore 5V interno (per questo nel mio schema avevo indicato un regolatore esterno).

Mi sembra un progetto complicatissimo solo per innaffiare...
Fai due o tre canali per altrettante elettrovalvole e linee di 15 o 10 piante ciascuna raggruppate per genere, mettendo uno o due sensori di umidità (facendo la media) per ogni linea, regolando la portata per ogni vaso mettendo uno, due o tre ugelli secondo le dimensioni.

I sensori dovrebbero avere un circuito locale, con un cavetto a tre poli per l'alimentazione e il segnale, che potrebbe essere una frequenza dell'ordine di 100...1000Hz proporzionale all'umidità.

Quindi avresti 2...6 sensori e 2 o 3 elettrovalvole, perciò, anche con display ed encoder o pulsanti, sarebbe sufficiente un solo Arduino Uno.

Solo una nota su quei sensori, sono la versione senza operazionale ... se li si usa con cavi corti ed ingressi ad alta impedenza dovrebbero funzionare, altrimenti ho letto su alcuni forum che se ne lamentano in parecchi a causa di problemi di funzionamento con cavi lunghi o ingressi non ad alta impedenza.

Grazie a tutti per le risposte, ancora devo decidere bene cosa acquistare ma sto facendo le prime prove del software con 2 sondine prese su amazon tanto per provare.

Non so se devo aprire un post su software, in caso lo faccio ma vorrei un aiuto su un errore stupido che però non ho capito, lo sketch me lo compila e devo solo provarlo (mi arrivano le sonde oggi) mi da però errore su due variabili...
Potete dare un occhio, perchè vorrei risolvere, se su due righe di codice me lo compila ma con 2 warnig non ho cominciato bene :wink:
Premetto che il codice è buttato giù al volo, va ottimizzato.

// put your setup code here, to run once:
  int numeroSonde=2;
  int righe=numeroSonde-1; //numero sensori -1
  int colonne=5; //numero misurazioni per media aritmetica sulla stessa sonda
  int array[2][5];
  int misurazione;
  int somma;
  int sonda=0;
  int valoriDef[2];
  
  
  
void setup() {
 
  pinMode(13, OUTPUT); //led simulazione irrigazione
  Serial.begin(9600);

}

void loop() {
    
    for (int i=0; i<=righe; i++) { //scanner righe matrice
      for (int a=0; a<=colonne; a++) {
      array[i][colonne]= analogRead(i);
      delay(5000); //attesa per lettura valore successivo
      }
    }
    for (int b=0; b<=righe; b++) { //scanner righe matrice
      somma=0;
      for (int c=0; c<=colonne; c++) { //scanner colonne matrice
        somma=somma+array[b][c];
      }
      valoriDef[b]=somma/5; //media misurazioni
    }
      /*for (int count=0; count<=righe; count=count+1) { //ciclo inutile, mostra letture sonda CONTROLLo
        misurazione= valoriDef[count];
        Serial.print("sonda ");
        Serial.print(count);
        Serial.print("=");
        Serial.println(misurazione);
        delay(5000);*/
        
        for (int i=0; i<=righe;i++) {
          if (valoriDef[i]>=600) {
            Serial.print("Irrigazione del vaso =");
            Serial.println(i);
            digitalWrite(13, HIGH);
            delay(10000);
            digitalWrite(13, LOW);
          }
            else 
            Serial.print("Irrigazione del vaso ");
            Serial.print(i);
            Serial.print(" non necessaria, il valore della sonda e' ");
            Serial.println(valoriDef[i]);
          }
        }
    

Questo è la cosa che mi restituisce quando compilo:

C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.57.0_x86__mdqgnx93n4wtt\hardware\arduino\avr\cores\arduino\main.cpp: In function 'main':
C:\Users\alemaz\Desktop\arduino\sondamatrici\sondamatrici.ino:31:31: warning: iteration 5 invokes undefined behavior [-Waggressive-loop-optimizations]
         somma=somma+array[b][c];
                               ^
C:\Users\alemaz\Desktop\arduino\sondamatrici\sondamatrici.ino:30:22: note: within this loop
       for (int c=0; c<=colonne; c++) { //scanner colonne matrice
                      ^
Lo sketch usa 2780 byte (8%) dello spazio disponibile per i programmi. Il massimo è 32256 byte.
Le variabili globali usano 304 byte (14%) di memoria dinamica, lasciando altri 1744 byte liberi per le variabili locali. Il massimo è 2048 byte.

Banale si, ma proprio ABC.

int array[2][5];

Indici validi sono 0÷4, appunto cinque elementi.

Rimuovi '='.

Ciao.

:sleepy: me lo ero anche ricordato come funzionava ....che figura barbina....