Salve e tutti, spero di non sbagliare sezione
vi riassumo in breve il progetto
ho un serbatoio che si autoalimenta e lo uso per irrigare, grazie all'apertura dell'elettrovalvola posta alla base.
all'interno del serbatoio ho inserito due sensori di umidità per il terreno che uso per rilevare la presenza dell'acqua, uno impostato come sensore di massimo e uno come sensore di minimo collegati ai relativi led verde e rosso.
adesso ho comprato una scheda relè 4 ch wifi tipo sonoff per poterla gestire da remoto, nella scheda si possono aggiungere i pulsanti (come quelli che si usano nei progetti arduino) per attivare i relè manualmente e quando e il tutto viene rilevato dall'applicazione in remoto.
l'idea è quella di far interagire arduino con il pulsante della scheda relè che gestisce l'uscita dell'elettrovalvola
quindi la sequenza d'uso è :
1 da remoto o fisicamente attivo il relè dell'elettrovalvola
2 i flusso rimane aperto fino a quando il sensore di minimo non rileva più acqua e va a commutare lo spato del pulsante spegnendo il relè e relativa valvola
3 quando il sensore di max rileva la presenza di acqua si ricommuta lo stato del pulsante attivando il relè e quindi l'elettrovalvola
4 il tutto io lo posso monitore da remoto attraverso l'app fino a quando decido di spegnere tutto
ho già scritto e provato il codice con i sensori di max e min i quali azionano il pin 22 dove ho collegato ad un relè che adesso dovrei sostituire con il pulsante.
ecco il codice
/*Sketch per rilevare l'umidita' del terreno (valore analogico) e accendere un led se si raggiunge una soglia critica. */
/*
50 led rosso livello acqua min 50 mt
51 led verde livello acqua max 35 mt
52 led rosso pompa spenta
53 led verde pompa accesa
A0 sensore livello acqua max 35 mt
A1 sensore livello acqua min 50 mt
22 relè pompa
*/
#define pompa 22 // relè pompa
#define led_liv_min 50
#define led_liv_max 51
#define led_pompa_off 52
#define led_pompa_on 53
#define liv_max A0
#define liv_min A1
const int soglia_minima = 800; //sensore di livello mimino
const int soglia_massima = 400; //sensore di livello massimo
void setup()
{
Serial.begin(9600);
pinMode(50, OUTPUT); //led rosso livello acqua min 50 mt
pinMode(51, OUTPUT); //led verde livello acqua max 35 mt
pinMode(52, OUTPUT); //led verde pompa accesa
pinMode(53, OUTPUT); //led rossa pompa spenta
pinMode(pompa, OUTPUT); //relè pompa
pinMode(A0, INPUT); // sensore livello acqua min 50 mt
pinMode(A1, INPUT); // sensore livello acqua max 35 mt
}
void loop()
{
int sensorValue_1 = analogRead(A0); //Legge il valore analogico liv MAX
{
if (sensorValue_1 <= soglia_massima)
{
Serial.println("pompa accesa livello acqua ok");
digitalWrite(pompa, LOW); //Accendi pompa
digitalWrite(led_pompa_on, HIGH); //Accendi led VERDE pompa
digitalWrite(led_liv_max, HIGH); //Accendi led VERDE liv MAX
digitalWrite(led_liv_min, LOW); //Spegni led ROSSO liv min
digitalWrite(led_pompa_off, LOW); //Spegni led ROSSO pompa
}
}
int sensorValue_2 = analogRead(A1); //Legge il valore analogico liv Min
{
if (sensorValue_2 >= soglia_minima)
{
Serial.println("pompa spenta livello acqua Basso" );
digitalWrite(pompa, HIGH); //spegni pompa
digitalWrite(led_pompa_on, LOW); //Spegni led VERDE pompa
digitalWrite(led_liv_max, LOW); //Spegni led VERDE liv MAX
digitalWrite(led_liv_min, HIGH); //Accendi led ROSSO liv min
digitalWrite(led_pompa_off, HIGH); //Accendi led ROSSO pompa
}
}
delay(2000); //Attende due secondi
}
potreste aiutarmi ad integrare il pulsante all'interno del codice.....grazie a tutti
vi allego uno schema di massima