Buongiorno,
Da anni cerco un descrizione su come sviluppare un sistema autoregolato/autogestito da arduino per l'idroponica.
Con il tempo ho letto varie soluzioni ma tutte fastidiosamente incomplete.
Dunque volevo chiedervi un parere per concludere questo dilemma e finalmente completare il tutto.
Vi spiego:
i 3 parametri fondamentali sono:
- umidità
- TDS
- PH
1-UMIDITà- per questo parametro basta azionare un umidificatore (un on/off alla alimentazione USB) con un sensore di umidità, quest'ultimo da acquistare su vostro consiglio.
2-TDS- il sensore per capirci, NON PRESENTE SUL SITO UFFICIALE, è questo:
Dovrebbe azionare DUE POME DOSOMETRICHE (Model G328, U: 13v)
in contemporanea che immettono i nutrienti.
Ma deve controllare dopo aver messo "x" quantita aspettare un pò che la soluzione si omogenizzi, e ricontrollare il parametro.
3-PH- in questo caso il parametro si può solo alzare. Quindi stesso discorso di prima ma al contrario, e cosa più complicata, in questo caso il sensore a disposizione più facilmente reperibile è ANALOGICO
Ecco qui...
Ora ho comprato arduino mega, 4 relè e un sensore per umidità/temperatura.
ho provato a chiedere a gpt-3 di fare la programmazione (tanto per curiosità per lo più) ed il risultato è stato questo:
//Inizializzazione dei pin
int relay1 = 2;
int relay2 = 3;
int relay3 = 4;
int dht11Pin = 5;
int phPin = 6;
//Inizializzazione delle variabili
float umidita;
float tds;
float ph;
float sogliaUmidita = 50; //Soglia di umidità desiderata
float sogliaTds = 500; //Soglia di TDS desiderata
float sogliaPh = 7.0; //Soglia di PH desiderata
unsigned long timer; //Variabile per la gestione del timer
unsigned long interval = 5000; //Intervallo di tempo tra le letture dei sensori (5 secondi)
void setup() {
//Impostazione dei pin come output
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
pinMode(relay3, OUTPUT);
//Impostazione della seriale per la comunicazione con il computer
Serial.begin(9600);
//Impostazione del potenziometro per la regolazione della soglia di umidità, TDS e PH
analogWrite(dht11Pin, sogliaUmidita);
analogWrite(phPin, sogliaTds);
//Inizializzazione del timer
timer = millis();
}
void loop() {
//Controllo del timer per la lettura dei sensori ogni 5 secondi
if (millis() - timer > interval) {
//Lettura dei valori dai sensori
umidita = readDHT11(dht11Pin);
tds = readTDS(phPin);
ph = readPH(phPin);
//Stampa dei valori sulla seriale
Serial.print("Umidità: ");
Serial.println(umidita);
Serial.print("TDS: ");
Serial.println(tds);
Serial.print("PH: ");
Serial.println(ph);
//Controllo dei valori rispetto alle soglie impostate e attivazione/disattivazione dei relè in base ai risultati ottenuti
if (umidita < sogliaUmidita) {
digitalWrite(relay1, HIGH);
} else {
digitalWrite(relay1, LOW);
}
if (tds < sogliaTds) {
digitalWrite(relay2, HIGH);
} else {
digitalWrite(relay2, LOW);
}
if (ph > sogliaPh) {
digitalWrite(relay3, HIGH);
} else {
digitalWrite(relay3, LOW);
}
//Aggiornamento del timer per la lettura dei sensori ogni 5 secondi
timer = millis();
}
}
//Funzione per la lettura dell'umidità
float readDHT11(int pin) {
//Codice per la lettura dell'umidità
float humidity = 0.0;
//Codice per leggere l'umidità dal sensore DHT11...
return humidity; //Restituisce il valore letto dal sensore DHT11.
}
//Funzione per la lettura del TDS
float readTDS(int pin) {
//Codice per la lettura del TDS
float tdsValue = 0.0;
//Codice per leggere il valore TDS dal sensore...
return tdsValue; //Restituisce il valore letto dal sensore TDS. }
//Funzione per la lettura del PH
float readPH(int pin) {
//Codice per la lettura del PH
float phValue = 0.0;
//Codice per leggere il valore PH dal sensore...
return phValue; //Restituisce il valore letto dal sensore PH.
}
Ovviamente non capisco nulla,
Qualcuno potrebbe aiutermi a capire?