Progetto (da neofita) per irrigazione terrazza

Buongiorno a tutti, so che si trovano 20000 thread su questo argomento ma non ho trovato la questione precisa ed essendo completamente nuovo di arduino (linguaggio di programmazione più o meno so come ragionare, ho fatto studi informatici all'università oramai 12 13 anni fa e come affrontare il problema e risolverlo lo ho in mente, poi tutta altra storia e andare a guardare la sintassi ecc ecc ma per quello c'è tempo).
Vi spiego un attimo cosa ho in mente (so che è antieconomico ma non mi importa, devo risolvere il problema e se riesco a farlo da solo sai che soddisfazione!!).
Diciamo la base sarebbe questa (vorrei farlo modulabile, nel senso aggiungere un sensore e elettrovalvola una volta programmato non vorrei che diventasse un problema nel dover modificare il programma e caricarlo di nuovo)
Ipotizziamo 20 vasi, quindi 20 sonde e 20 elettrovalvole.
-arduino mega (sonde) a cui connettere tutte le sonde di umidità, qui all'accensione verranno controllati tutti i pin assegnati alle sonde e creato un array con i valori letti. Se la sonda non è presente viene scritto un valore che poi decidero (non so materialmente che cosa restituisce se vado a leggere un pin a cui non è connessa una sonda, lo scoprirò quando avrò la sonda disponibile). Una volta creato l'array viene passato al secondo arduino mega che gestisce l'apertura delle eletteovalvole. (Tralascio tutta l'idea per controllare i valori delle sonde ogni tot tempo, quello sarà un problema successivo)

-arduino mega (elettrovalvole) : qui ad ogni pin è connessa una elettrovalvola, viene controllato l'array e se il valore è minore di una costante impostata si aprirà e rimarrà aperta per tot secondi. Continuerà fino alla fine dell'array ritornando all'arduino Sonda che attenderà un tot di tempo e procederà a ricontrollare le sonde facendo un nuovo array con i valori che ripasserà ecc ecc.

L'idea è questa...è fattibile?
Uno dei problemi che mi è venuto e non so se può essere risolvibile è il numero dei pin, immagino che le sonde debbano collegarsi ad un pin analogico, i pin digitali possono funzionare da pin analogico?
Altra cosa, vorrei che le sonde non fossero sempre alimentate (le alimenterò da uan fonte esterna)esiste un qualcosa che faccia in modo che quando l'arduino va a controllare i valori delle sonde le alimenti, quando finisce le spenga tutte.

Ho mille altre domande ma queste sono quelle più importanti.
Grazie mille in anticipo per i chiarimenti che mi darete;)

Puoi fare tutto con un solo arduino, anche un solo mega, forse pure solo una UNO

Il problema sono gli ingressi analogici

Che possono essere usati come digitali, ma il viceversa non va

Quindi sì

Quello che vuoi fare è fattibile (e mi piace pure il tuo approccio)

Sentiamo però quanti vasi vorresti gestire, da li pensiamo a quale scheda usare se con o senza multiplexer e shift register lo decidiamo quando abbiamo qualche numero

Dipende anche dalla capacità/possibilità di costruire piccoli circuiti ad hoc, o se si è vincolati a soli moduli già pronti solo da collegare. Un Mega ha 16 ingressi analogici già pronti per cui basterebbe per 16 vasi senza bisogno di altro hardware (a parte i relé per le valvole).

Aggiungo: sonde capacitive e non resistive per evitare corrosione ed elettrolisi, e il tutto a bassissima tensione di sicurezza (su questo forum non si possono trattare circuiti operanti a tensioni maggiori).

Non ho capito la questione del "modulabile", forse modulare, o impostabile senza dover ricaricare il programma? La creazione di un'interfaccia hardware e software per l'impostazione potrebbe non valere la fatica rispetto al semplice ricaricare uno sketch nuovo con le nuove soglie/tempi ecc.

Grazie per le risposte.
@Standardoil si vede che ne capisco poco di arduino​:rofl::rofl: avevo pensato a due board in modo da poter gestire tutto avendo più ingressi.
Diciamo che vorrei gestire +- 30 vasi, quindi 30 sonde e 30 elettrovalvole. Diciamo che come ragionavo io non ce la facevo neanche con 2 mega ma se mi dici che non ho capito nulla sui pin mi fa piacere così mi semplifico un pò il progetto;)
Teoricamente non dovrei avere per esempio 30 pin di input e 30 pin di output per gestirlo che teoricamente dovrebbero essere 30 analogici e 30 digitali, come faccio a gestirlo anche con una UNO?

@Claudio_FF diciamo che di circuiti non ne ho mai costruiti nella mia vita e non saprei dove mettere le mani, differente se ho una guida passo passo, ho una buona manualità tra saldature e "robe" varie. Ma preferirei avere la pappa pronta con qualche modulo.
Per ora ho preso due sonde resistive per fare tutte le prove del caso, poi si, prenderò quelle capacitive.
La questione del modulabile la intendevo non nel senso di gestire tutto lato software da interfaccia (anche se mi piacerebbe, ma li non saprei proprio dove mettere le mani).
La mia idea è quella di prevedere un massimo di 30 sonde, per funzionare il tutto però non è obbligatorio che siano collegate tutte e 30. Se in quel momento ho 28 vasi il programma che ho caicato deve gestirmi il fatto di averne 28 e non andare in palla, nel momento che aggiungo un vaso o ne tolgo uno non faccio altro che riavviare la board e in automatico mi andrà a gestire 27 o 29 vasi senza esplodere :wink:
Per il fatto di tempi i irrigazione e soglie non avevo pensato a gestirle da fuori, ma è troppo complicato, se decido di cambiare soglie li ricarico lo sketch direttamente;)
Intendevo questo per modulare (probabilmente ho idato un termine sbagliato) :wink:

L'unico vero problema è riconoscere la sonda staccata

Devi fare qualche prova con un arduino e una sonda per fare pratica e capire come riconoscerlo, ameno che non capiti qui qualcuno che ha già affrontato per conto suo la questione

In alternativa potresti prepararti un "gruppo" sonda-rele-valvola

Di questi gruppi, tutti tra loro uguali, ne realizzi quanti ne vuoi, ma colleghi solo quelli montati sui vasi che ti interessano

Poi in funzionamento arduino scorre tutti i gruppi e "salta" quelli che non sente

A questo punto

@Standardoil si diciamo che questa cosa la scopriro quando mi arrivano le sondine per provare (se è fattibile). Per il fatto dei gruppi ho capito +- l'idea, ma non avrei lo stesso problema della sonda? O il controllo la faccio magari sulla presenza del relè o eletteovalvola che se non è presente vuol dire che non ci sta neanche la sonda (qui non andrei a sprecare altei ingressi però?)?
Ripeto sono tutte ipotesi perche non ci ho mai messo le mani e non so di che parlo praticamente, magari sto dicendo castronerie.

Per il fatto invece dei 30 input analogici e dei 30 output come posso risolvere?
Almeno comincio a farmi un'idea sul cosa acquistare​:rofl::rofl:

Bravo

Comunque non temere per ingressi e uscite

Non ti bastano e punto, morta li

E quindi serve adottare soluzioni drastiche...

No, usare tre MEGA per gli ingressi e altrettante per le uscite non è soluzione

Usare una manciata di shift register, due multiplexer e una UNO invece si

I problemi troppo complicati non vanno risolti: vanno semplificati

Quindi NON escludevi a priori una comunicazione seriale tra i due... cosa che potrebbe anche essere interessante per far si che ciascun Arduino controlli lo stato in vita dell'altro e in mancanza di segnali lo resetti...

O il controllo la faccio magari sulla presenza del relè

Magari non serve neanche, basta collegare gli ingressi analogici non usati a massa o a Vcc in modo da simulare una sonda che non cambia mai.

@Standardoil @Claudio_FF Dal mio punto di vista inziale la comucazione tra le due board era forzata perchè dovevo passargli i dati (perchè non mi bastavano i pin​:rofl::rofl:). Il fatto di collegarli a massa o vcc va oltre le mie competenze attuali, a cosa mi servirebbe fare in modo che la sonda non cambi mai?

In tutto questo vado a leggermi che cosa sono e come funzionano i multiplexer e gli shift register (teoricamente una qualche reminescenza mi sembra di averla ma meglio andare a leggere :wink: )

Ps: ho riletto che cosa avevi scritto sui pin a massa o vcc, ora ho capito, potrebbe essere una bella soluzione;)

No la questione è differente

Se (per ipotesi) sapessimo che le sonde non segnerebbero mai 5V noi potremmo collegare a 5V gli ingressi delle sonde scollegate, per riconoscere con una lettura "impossibile" le sonde "inesistenti" da quelle presenti

E questo anche se le sonde "mancanti" non fossero le "ultime della fila"

Ho riletto dopo un pò che avevo risposto ed ho capito, mi ero perso il fatto di collegare i pin attivi a massa.

Mi sono andato anche a leggere la roba sui multiplexer e gli shift register, di base il primo per aumentare i pin analogici e il secondo quelli digitali, giusto? A questo punto con una sola board posso gestire anche i vasi di quello del piano di sotto​:rofl::rofl:

Cosa si fa ai problemi troppo complicati?

In effetti hai proprio ragione, era la stessa cosa che diceva a suo tempo il prof di analisi 3...il problema era semplificarla analisi 3​:rofl::rofl::rofl: cmq si così è molto più semplice, non conoscevo la possibilità di usare i multiplexer e gli shift, cioè teoricamente avrei dovuto conoscerlo ma ho cancellato tutto (faccio tutt'altro attualmente).

Cmq ricapitolando mi servirebbe per il progettino:
Una board ( io attualmente dovrei avere una UNO, acquistata un pò di anni fa per sbloccare la scheda originale della stampante 3d e mai più utilizzata).
Un paio di multiplexer e di shift (poi mi faccio il conto preciso).
Sonde, relè e elettrovalvole.

Poi devo andarmi a studiare come attaccare tutto alla UNO e come gestirli lato sketch;)

Attacca con una cosa semplice: leggere una sonda
Riconoscere sonda staccata
Quanto consuma una sonda
Quanto tempo ci mette dell'accensione alla prima lettura stabile

Poi passo a passo vedrai che si tratta di cosa facile...

Si l'idea è quella, andare piano piano anche perchè per fare anche cose semplici devo prima studiarle o ricordarmele. Comunque se possibile aggiornerei questo post sui progressi fatti o sui fallimenti ottenuti​:rofl::rofl:

per riconoscere con una lettura "impossibile" le sonde "inesistenti" da quelle presenti

È più semplice, non serve riconoscere esplicitamente presenti da non presenti, basta che il livello letto corrisponda sempre a valvola da non attivare.

A questo punto con una sola board posso gestire anche i vasi di quello del piano di sotto

Tecnicamente si, ma bisogna mettere sui piatti della bilancia le diverse complessità hardware, le proprie capacità costruttive ecc. Tra l'altro c'è un aspetto che i "principianti" sottovalutano: Arduino non è un PLC industriale, non ha tutti i filtri necessari per un corretto funzionamento in ambiente reale elettricamente disturbato. Si legge ogni giorno di arduini che si resettano ad ogni scatto di relé, e qui ce ne sarebbero trenta... Può funzionare benissimo, ma va aggiunto tutto quello che manca. Ad esempio ingressi e uscite non andrebbero mai "portati in giro" tramite lunghi fili che fanno da antenna per ogni disturbo/induzione, gli ingressi e le uscite di un sistema industriale sono filtrati, spesso disaccoppiati otticamente dai fili veri e propri che si allontanano dal sistema. Per leggere trenta sonde esterne, su ogni ingresso analogico io metterei come minimo il seguente filtro:

135414899255415

Interponendo invece shift register ecc i disturbi (eventuali) li beccherebbero loro, causando forse solo qualche lettura errata da "limare" tramite le comunque necessarie medie aritmetiche sui valori misurati di più letture.

Sempre per il discorso disturbi, le scintille sui contatti dei relé sono la maggior fonte, che va ridotta il più possibile con snubber sulle valvole. Se sono valvole in corrente continua meglio perché allora basta un solo diodo in parallelo su ciascuna valvola.

Geniale...

La butto li al volo, sonde capacitive con uscita on/off e trimmer per impostare il livello desiderato, cosi si possono mettere tutti gli ingressi con pulldown (o pullup. dipende se la sonda da uno o zero quando non si deve azionare l'elettrovalvola), ed in questo modo le si legge tutte con tre o quattro pin che pilotano la catena degli shift (sonda presente e segnala secco, si apre elettrovalvola, sonda presente e segnala umido oppure assente, non si apre) ... ovviamente questo presume di regolare tutte le sonde una per una in modo che scattino al livello di umidita' voluto, ma e' una cosa che si dovra' fare una sola volta.

Se accettabile, non servono piu neppure gli ingressi analogici, e bastera', probabilmente, una Uno (se la memoria sara' sufficente) e qualche shift register ... una catena si puo pilotare con 3 pin, 4 se si vuole farlo per bene usando anche gli strobe per le uscite, ed ogni shift aggiunge otto ingressi (74HC165 o CD4014 o simili) o uscite (74HC595 o CD4094 o simili), anche se ti suggerirei di iniziare con un solo shift di ingresso ed uno di uscita, e poi espandere il programma quando sarai sicuro che fa esattamente quello che vuoi e come lo vuoi :wink:

Ecco a questa cosa dei disturbi non avevo proprio pensato, in questo momento non ho idea di che cosa sia quello schema ma cercherò di capirlo e come realizzarlo...sicuramente è una cosa a cui pensare...

Ecco qui andiamo un pò troppo sul complicato, devo chiarirmi qualche termine e farmi uno schema mentale per capire meglio. Di base con quel tipo di sonde a monte decido che se è secco mi esce 0 (o 1), se invece imposto da trimmer che sopra ad un dato rilevamento è umido e non serve annaffiare mi esce resituisce 1 (o 0). Li a quel punto mi eviterei anche tutti i cicli di verifica nel software, andrei semplicemente a verificare se sia 0 o 1 e farebbe tutto la sonda giusto? Che tipo di sonde sarebbero? Puoi linkarmi qualche cosa solo per capire di cosa parliamo? Questo mi semplificherebbe di tanto la programmazione, sempre che costino più o meno come quelle normali🤣, altrimenti vado di righe di codice!
Per il fatto degli shifter ho capito che cosa siano e a cosa servano ma non ho idea di come gestirli (come shiftare gli ingressi e leggerli o inviare comandi) via software, dovrò andarmeli a vedere;)