3Serre

Questa primavera, come ormai tante, mi dedicherò all'agricoltura; però sarà diverso infatti avrò la possibilità di costruire 2 serre piu un semenzaio.

Per mia fortuna le serre saranno molto vicine a casa, per cui potrò facilmente approfittare della corrente domestica... ti chiederai perché della corrente? E io ti risponderò: perchè queste serre le voglio monitorare e controllare con Arduino.

Vediamo un po nel dettaglio le 3 serre

. la prima, che d'ora in poi diverrà la serra dei pomodori, avrà dimensioni pari a 6mx2,5m, ospiterà varie piante di pomodori e altre colture; sarà rivestita di nylon.

. la seconda, quella dei peperoncini, è una struttura più rigida di 3mx2,5m.

. la terza è il semenzaio, dove far germogliare i semi dei vari ortaggi; sarà di dimensioni contenute, ipotiziamo una struttura tipo armadio di 1mx1m.

Come detto prima ho intenzione di usare Arduino per controllare e monitorare le condizioni ambientali, parliamo di temperatura e umidità, ma in che modo:

La serra dei pomodori non mi interessa controllare ma solo monitorare, infatti posizionerò 2 sensori tipo DHT11 per monitorare le temperature e, nel caso di anomalie agire "manualmente".

la serra dei peperoncini invece necessita anche un controllo, infatti le temperature e umidita monitorate da un solo DHT11, verranno influenzate da :

. un aspiratore per quando le temperature saliranno sopra il limite massimo
. una stufetta per scaldare quando le temperature scenderanno sotto una determinata temperatura
. un'umidificatore se l'umidità è insufficiente, oppure l'opposto con un deumidificatore

stesso discorso per il semenzaio, sicuramente gli apparati elettrici utilizzati saranno più piccoli.....

Un discorso a parte va fatto per l'irrigazione; verra sempre monitorata da Arduino che, in caso di necessita, azionerà una pompa che irrigherà le piante. L'acqua di irrigazione è in una vasca, la temperatura verra monitorata da un DS18B20 che azionerà una serpentina in caso di basa temperature.

. serra pomodori piu grande con : 2 dht11 + 1 ds18b20
. serra peperoncini piu piccola con : 1 dht11 + 1 ds18b20
. semenzaio con : 1 dht11 + 1 ds18b20

Nn è previsto l'uso di un lcd in quanto verra creata una pagina di controllo e monitoraggio via web.... con calma....

3Serre.doc => per poterlo visionare sul browser senza scaricare all'ultima versione aggiornata


3Serre.ino - inizio

3Serre_1.ino - corretto accensioni e spegnimenti relè => grazie stefa24

3Serre_2.ino - i primi collegamenti

3Serre_3.ino - risolto problemi con i ds18b20

.... non posso rispondermi da solo! dai date un occhiatina e ditemi qualcosa

Grazie

ciao
sono solo un appassionato e ho solo dato una occhiata, , monta il tutto e testa, possiamo darti tutto l'aiuto se sottoponi il/i problemi che incontrerai, hai già visto gli altri post di questo forum, questi progetti sono già stati affrontati

verissimo quello che dici

. aiuto sicuramente qua ne trovi
. argomento piu volte trattato

quello che spero di trovare qui è un confronto... e sopratutto capire se l'abbozzo di scketch è indirizzato sulla strada giusta....

ad esempio non sono molto sicuro della parte riguardante l'irrigazione... chiaramente realizzandolo e testandolo capirò, ma non sarebbe il caso di inserire qualche ritardo ovvero un delay?

oppure inserire un codice del genere per mettere in sicurezza il relè =>

   // Altrimenti se il sensore funziona ma la temperatura interna è uguale o maggiore di 28 °C 
  // spegni il relé per sicurezza.
  // Questo codice previene eventuali problemi se ci fossero interferenze sul button pad
  // che modificano i setpoints del termostato alzando troppo la temperatura.
  else if (tin >= temperaturadisicurezza) {         
    digitalWrite(SSR, LOW);             // Set the SSR OFF
    statusSSR = 0;
  }

oppure postare qualcosa di gia fatto da cui scoppiazzare ::slight_smile:

Non Ti aiuto perché in precedenza hai dimostrato di non avere conoscenze per progettare qualcosa con i 230V e che non hai ascoltato i suggerimenti che ti abbiamo dati ritornado sempre con la stessa cosa che Ti avevamo giá detto che non andava bene.
Lascia stare, Ti fai solo male e arrostisci Le piante delle serre se non fai un corto a causa del acqua di irigazione.

Ciao Uwe

:smiley: evvero sono al quanto ignorante.... Però non è vero che non ascolto i consigni, infatti ho deciso di acquistare dei relè allo stato solido... Per restare in questa di discussione spero che tu possa cambiare idea e , sopratutto, che le persone non si faccia no influenzare dal tuo giudizio

questa parte di codice e simili

digitalWrite(relay13, HIGH); // accensione serpentina h2o peperoncini
 digitalWrite(relay13, LOW);} // spegnimento serpentina h2o peperoncini

accendi e spegni in modo praticamente istantaneo non sono sicuro che si riesca a ottenere il riscaldamento, prova a studiarti il pwm, inoltre per fare una cosa precisa dovresti introdurre i PID

correzioe fatta ... grazie stefa...

prima

// ************************************************************************************************
// Operazioni dei Relè
// ************************************************************************************************          

//////////////////////////// Temperature Aria + Umidità  
  //////// pomodori
  if (((t1+t2)/2) >= tMAXf) {
    digitalWrite(relay1, HIGH);   // accensione aspiratore 
    digitalWrite(relay1, LOW);}   // spegnimento aspiratore 
    
  if (((t1+t2)/2) <= tMINf) {
    digitalWrite(relay2, HIGH);   // accensione stufa
    digitalWrite(relay2, LOW);}   // spegnimento stufa    

   if (((h1+h2)/2) <= hMINf) {
    digitalWrite(relay3, HIGH);   // accensione umidificatore
    digitalWrite(relay3, LOW);}   // spegmiento umidificatore
       
  //////// peperoncini
  if (t3 >= tMAXm) {
    digitalWrite(relay6, HIGH);   // accensione aspiratore 
    digitalWrite(relay6, LOW);}   // spegnimento aspiratore 
    
  if (t3 <= tMINm) {
    digitalWrite(relay7, HIGH);   // accensione stufa
    digitalWrite(relay7, LOW);}   // spegnimento stufa    

   if (h3 <= hMINm) {
    digitalWrite(relay8, HIGH);   // accensione umidificatore
    digitalWrite(relay8, LOW);}   // spegmiento umidificatore
    
  //////// semenzaio
  if (t4 >= tMAXr) {
    digitalWrite(relay7, HIGH);   // accensione aspiratore 
    digitalWrite(relay7, LOW);}   // spegnimento aspiratore 
    
  if (t4 <= tMINr) {
    digitalWrite(relay8, HIGH);   // accensione stufa
    digitalWrite(relay8, LOW);}   // spegnimento stufa    

   if (h4 <= hMINr) {
    digitalWrite(relay9, HIGH);   // accensione umidificatore
    digitalWrite(relay9, LOW);}   // spegmiento umidificatore
    
////////////////////////////// Irrigazione

 if (SoilHf < 60) {     // imposto variabile sensore umidita terreno pomodori
 digitalWrite(relay5, LOW);    // spegnimento pompa h2o pomodori
 delay(8000);
 digitalWrite(relay5, HIGH);}   // accensione pompa h2o pomodori

 if (SoilHm < 60) {     // imposto variabile sensore umidita terreno peperoncini
 digitalWrite(relay9, LOW);    // spegnimento pompa h2o peperoncini
 delay(8000);
 digitalWrite(relay9, HIGH);}   // accensione pompa h2o peperoncini

////// riscaldamento h2o

 if (th2of < 18) {         ///imposto la temperatura minima h2o pomodori
    digitalWrite(relay4, HIGH);   // accensione serpentina h2o pomodori 
    digitalWrite(relay4, LOW);}  // spegnimento serpentina h2o pomodori 
    
  if (th2om < 20) {         ///imposto la temperatura minima h2o peperoncini
    digitalWrite(relay13, HIGH);    // accensione serpentina h2o peperoncini
    digitalWrite(relay13, LOW);}   // spegnimento serpentina h2o peperoncini   

   if (th2or < 20) {         ///imposto la temperatura minima h2o semenzaio
    digitalWrite(relay14, HIGH);     // accensione serpentina h2o semenzaio
    digitalWrite(relay14, LOW);}     // spegmiento serpentina h2o semenzaio

dopo :

 // ************************************************************************************************
// Operazioni dei Relè
// ************************************************************************************************          

//////////////////////////// Temperature Aria + Umidità  
  //////// pomodori
  if (((t1+t2)/2) >= tMAXf) {
    digitalWrite(relay1, HIGH);   // accensione aspiratore 
  if (((t1+t2)/2) <= tMAXf) {    
    digitalWrite(relay1, LOW);}   // spegnimento aspiratore 
    
  if (((t1+t2)/2) <= tMINf) {
    digitalWrite(relay2, HIGH);   // accensione stufa
  if (((t1+t2)/2) >= tMINf) {    
    digitalWrite(relay2, LOW);}   // spegnimento stufa    

   if (((h1+h2)/2) <= hMINf) {
    digitalWrite(relay3, HIGH);   // accensione umidificatore
   if (((h1+h2)/2) >= hMINf) {
    digitalWrite(relay3, LOW);}   // spegmiento umidificatore
       
  //////// peperoncini
  if (t3 >= tMAXm) {
    digitalWrite(relay6, HIGH);   // accensione aspiratore   
  if (t3 <= tMAXm) {
    digitalWrite(relay6, LOW);}   // spegnimento aspiratore 
    
  if (t3 <= tMINm) {
    digitalWrite(relay7, HIGH);   // accensione stufa
  if (t3 >= tMINm) {  
    digitalWrite(relay7, LOW);}   // spegnimento stufa    

   if (h3 <= hMINm) {
    digitalWrite(relay8, HIGH);   // accensione umidificatore
   if (h3 >= hMINm) {    
    digitalWrite(relay8, LOW);}   // spegmiento umidificatore
    
  //////// semenzaio
  if (t4 >= tMAXr) {
    digitalWrite(relay7, HIGH);   // accensione aspiratore 
  if (t4 <= tMAXr) {    
    digitalWrite(relay7, LOW);}   // spegnimento aspiratore 
    
  if (t4 <= tMINr) {
    digitalWrite(relay8, HIGH);   // accensione stufa
  if (t4 >= tMINr) {    
    digitalWrite(relay8, LOW);}   // spegnimento stufa    

   if (h4 <= hMINr) {
    digitalWrite(relay9, HIGH);   // accensione umidificatore
   if (h4 >= hMINr) {    
    digitalWrite(relay9, LOW);}   // spegmiento umidificatore
    
////////////////////////////// Irrigazione

 if (SoilHf < 60) {     // imposto variabile sensore umidita terreno pomodori
 digitalWrite(relay5, HIGH);    // accensione pompa h2o pomodori
 delay(8000);          // imposto tempo irrigazione dopo il quale la pompa si spegne..... esempio => pompa da 1000 l/h  ...  pianta bisogno 2l h2o ...  1 minuto pompa = 0,25 l ... apertura 8 minuti = 2l
 digitalWrite(relay5, LOW);}   // spegnimento pompa h2o pomodori

 if (SoilHm < 60) {     // imposto variabile sensore umidita terreno peperoncini
 digitalWrite(relay9, HIGH);    // accensione pompa h2o peperoncini
 delay(10000);
 digitalWrite(relay9, LOW);}   // spegnimento pompa h2o peperoncini

////////////////////////////// Riscaldamento h2o

 if (th2of < 18) {         ///imposto la temperatura minima h2o pomodori
    digitalWrite(relay4, HIGH);   // accensione serpentina h2o pomodori 
 if (th2of > 20) {         ///imposto la temperatura massima h2o pomodori    
    digitalWrite(relay4, LOW);}  // spegnimento serpentina h2o pomodori 
    
 if (th2om < 20) {         ///imposto la temperatura minima h2o peperoncini
    digitalWrite(relay13, HIGH);    // accensione serpentina h2o peperoncini
 if (th2om > 22) {         ///imposto la temperatura massima h2o peperoncini    
    digitalWrite(relay13, LOW);}   // spegnimento serpentina h2o peperoncini   

 if (th2or < 20) {         ///imposto la temperatura minima h2o semenzaio   
    digitalWrite(relay14, HIGH);     // accensione serpentina h2o semenzaio  
 if (th2or > 22) {         ///imposto la temperatura massima h2o semenzaio
   digitalWrite(relay14, LOW);}     // spegmiento serpentina h2o semenzaio

ora penso sia corretto

Per l'irrigazione penso di far cosi:

////////////////////////////// Irrigazione

 if (SoilHf < 0) {     // imposto variabile sensore umidita terreno pomodori
 digitalWrite(relay5, HIGH);    // accensione pompa h2o pomodori
 delay(8000);          // imposto tempo irrigazione dopo il quale la pompa si spegne..... esempio => pompa da 1000 l/h  ...  pianta bisogno 2l h2o ...  1 minuto pompa = 0,25 l ... apertura 8 minuti = 2l
 digitalWrite(relay5, LOW);}   // spegnimento pompa h2o pomodori

 if (SoilHm < 0) {     // imposto variabile sensore umidita terreno peperoncini
 digitalWrite(relay9, HIGH);    // accensione pompa h2o peperoncini
 delay(10000);
 digitalWrite(relay9, LOW);}   // spegnimento pompa h2o peperoncini

Quando il sensore rivela umidita del tereno pari a zero... quindi secchissimo... parte la pompa che rimane accesa tot periodo... ad esempio pompa da 500l/h ... pompa in un minuto circa 8 litri quindi se la pianta ha bisogno di 2l ad irrigazione la tengo accesa 15 secondi ... è solo un esempio ... puo essere giusto il ragionamento?

Si il ragionamento è giusto, hai già uno schema se no inizia a farlo se non vuoi perderti, inoltre puoi iniziare a testare lo sketch facendo i collegamenti su bradboard NO 220V usando i led per simulare l'accensione dei rele, dei potenziometri per i sensori di umidità terreno, non ricordo cosa buttano fuori i dth e i ds ma penso che anche quelli siano simulabili, prima di passare ai collegamenti, soprattutto per la 220V.

Voglio ricordare che la 220V è pericolosa e che nessuno su questo forum si assume la responsabilità di quello che uno andrà a fare

Si la 220 è pericolosa... da bocia sai quante scosse ho preso con il tagliaerba ahahahah per fortuna esisteva gia il salvavita hahahahahaha....

In sti giorni penserò anche ad uno schema... i collegamenti visto che non ho grandi esperienze in saldature, vorrei usare dei mammut da 2,5 mm

mentre per collegare i sensori umidita terra dei jack

(in1,!~~60_12.JPG)

mentre per i sensori dht e ds18b20 non saprei magari usare queste morsettier per audio... facili da attaccare e staccare.... il collegamento è piu facile quindi posso modificare il percorso del cavo sensore in maniera molto semplice adattandolo alle mie necessità ancora sconosciute... comunque sono graditi i consigli perchè non so se sia molto corretta la cosa... :astonished:

prima lo schema, poi provi i collegamenti con una breadboard, le puoi collegare insieme e fartela grande quanto vuoi e su quella come detto simuli lo sketch

eccoci... ho provato i collegamenti.. fritzz non lo uso.

ecco il risultato => lo sketch è questo 3Serre_2.ino

le foto:

queste scaricatele da dropbox

. vista dall'alto
. Vista led

ho alcuni problemi con i ds18b20.... poi li metto apposto.....

i led che non si accendono sono, da sinistra:

. quinto led => pompa acqua pomodori non parte in quanto sensore assente
. nono led => secondo sensore ds18b20b !!!! non funzionante da rivedere !!!!!!
. decimo led => pompa acqua peperoncino non parte in quanto sensore assente

mancano 2 sensori sono temp e umi del semenzaio ma manca proprio il sensore dht11...

suggerimenti please

metterei dei potenziometri per regolare i valori min e max di umidità e temperatura per adattare i valori alle condizioni ottimali

metterei dei potenziometri per regolare i valori min e max di umidità e temperatura per adattare i valori alle condizioni ottimali

...giusto consiglio... comunque vorrei evitare di montare i potenziometri, infatti terminato la messa a punto dello sketch base vorrei aggiungere un modulo wifi e creare una pagina in html che mi permetta di controllare e settare i valori ottimali :-* questa è un idea, non so se sia possibile....

inoltre per fare una cosa precisa dovresti introdurre i PID

Qua invece sto studiando, ho capito che la libreria PID serve per colmare eventuali imprecisioni dei sensori eccc eccc ... ma due dritte, magari un collegamento ad un'altra discussione oppure, 2 parole a riguardo del PID e di questo sketch magari con un esempio? grazie

i pid non li ho ancor studiati, so che vengono usati per evitare oscillazioni intorno al valore di riferimento, ma forse nel tuo caso sono superflui

io sto leggendo questi articoli che trattano dell'argomento ... quando mi faccio un idea te la dico ...

http://forum.arduino.cc/index.php?topic=154192.0

http://forum.arduino.cc/index.php?topic=142526.0

speriamo che qualcuno di piu sacente ci possa spiegare se ne vale realmente la pena.....

prima di addentrarsi nel pid, di che dimensioni sono le serre? di quali sistemi disponi per scaldare/raffrescare?

giusto... più tosto che rispondere qua ho deciso di modificare la prima pagina del post. :wink:

ok ho letto il primo post, non sono in grado di darti indicazioni su come dimensionare stufette e ventole, ci sono molte variabili in gioco. Inoltre automatizza tutto visto che ci sei anche la serra dei pomodori.
Per la ventilazione puoi pensare, in primis, a finestre motorizzate e dove serve velocità di ricambio ad un ventilatore come hai previsto.
Per il riscaldamento una o più stufette, con accorgimenti per non riscaldare aria inutilmente.
Se hai necessità di raffrescare degli spruzzi sulla copertura può essere una valida soluzione.
Detto questo con arduino puoi monitorare e controllare tutto, anche da web come hai previsto.
Un solo programma per tutto per me sarebbe complesso, io sono per un dividi ed impera, pensando ad un arduino anche standalone, per ogni serra

grazie stefa per i consigli... per ora non ho ancora pensato all'attrezzatura necessaria tipo stufette ecc... ho una vaga idea che prenderà forma nel momento della realizzazione delle strutture.

Per ora mi concentro su Arduino... ho aggiustato un po lo sketch risolvendo i problemi con i ds18b20, fra poco mi arriverà un lettore microSD un modulo orologio e un modulo wifi.

Io invece preferisco un solo Arduino che mi controlla più cose... Non è bello ciò che è bello ma è bello ciò che piace...

Secondo voi cosa si puo fare per migliorare questa parte di sketch...