- Components necessaris
- Esquema de connexions
- Programació ESP8266 NodeMCU per a sistema de reg automàtic
La majoria dels agricultors utilitzen grans terres de cultiu i es fa molt difícil arribar i rastrejar cada racó de grans terres. Alguna vegada hi ha la possibilitat de ruixats d'aigua desiguals. Això es tradueix en cultius de mala qualitat que comporten pèrdues financeres. En aquest escenari, el sistema de reg intel·ligent que utilitza la tecnologia IoT més recent és útil i facilita el cultiu.
El sistema de reg intel·ligent té un ampli abast per automatitzar el sistema de reg complet. Aquí estem construint un sistema de reg basat en IoT que utilitza el mòdul ESP8266 NodeMCU i el sensor DHT11. No només regarà automàticament l'aigua en funció del nivell d'humitat del sòl, sinó que també enviarà les dades al servidor ThingSpeak per fer un seguiment de l'estat del terreny. El sistema consistirà en una bomba d’aigua que s’utilitzarà per ruixar aigua sobre el terreny en funció de les condicions ambientals del terreny, com ara humitat, temperatura i humitat.
Anteriorment, vam crear un sistema de reg automàtic de plantes similar que enviava alertes al mòbil, però no al núvol IoT. A part d'això, el circuit d'alarma de pluja i el detector d'humitat del sòl també poden ser útils per construir un sistema de reg intel·ligent.
Abans de començar, és important tenir en compte que els diferents cultius requereixen diferents condicions d’humitat, temperatura i humitat del sòl. Així doncs, en aquest tutorial estem utilitzant un cultiu d’aquest tipus que requerirà una humitat del sòl d’aproximadament un 50-55%. Així, quan el sòl perdi la seva humitat a menys del 50%, la bomba del motor s’encendrà automàticament per ruixar l’aigua i continuarà ruixant l’aigua fins que la humitat pugi fins al 55% i després la bomba s’apagarà. Les dades del sensor s’enviaran a ThingSpeak Server en un interval de temps definit perquè es pugui controlar des de qualsevol part del món.
Components necessaris
- NodeMCU ESP8266
- Mòdul del sensor d’humitat del sòl
- Mòdul de bomba d’aigua
- Mòdul de relés
- DHT11
- Connexió de cables
Podeu comprar tots els components necessaris per a aquest projecte.
Esquema de connexions
A continuació es mostra el diagrama de circuits d’aquest sistema intel·ligent de reg de l’IoT:


Programació ESP8266 NodeMCU per a sistema de reg automàtic
Per programar el mòdul ESP8266 NodeMCU, només s’utilitza la biblioteca de sensors DHT11 com a biblioteca externa. El sensor d’humitat proporciona una sortida analògica que es pot llegir a través del pin analògic A0 ESP8266 NodeMCU. Com que el NodeMCU no pot donar una tensió de sortida superior a 3,3 V des del seu GPIO, estem utilitzant un mòdul de relé per accionar la bomba del motor de 5 V. També el sensor d’humitat i el sensor DHT11 s’alimenten a partir d’una font d’alimentació externa de 5 V.
Al final d’aquest tutorial es dóna un codi complet amb un vídeo de treball; aquí expliquem el programa per entendre el flux de treball del projecte.
Comenceu per incloure la biblioteca necessària.
#incloure
Com que fem servir el servidor ThingSpeak, la clau API és necessària per comunicar-nos amb el servidor. Per saber com podem obtenir la clau de l'API de ThingSpeak, podeu visitar l'article anterior sobre Monitorització de temperatura i humitat en directe a ThingSpeak.
String apiKey = "X5AQ445IKMBYW31H const char * server =" api.thingspeak.com ";
El següent pas és escriure les credencials de Wi-Fi, com ara SSID i contrasenya.
const char * ssid = "CircuitDigest"; const char * pass = "xxxxxxxxxxx";
Definiu el pin del sensor DHT on està connectat el DHT i trieu el tipus de DHT.
#define DHTPIN D3 DHT dht (DHTPIN, DHT11);
La sortida del sensor d’humitat està connectada al pin A0 de l’ESP8266 NodeMCU. I el pin del motor està connectat a D0 de NodeMCU.
const int moistPin = A0; const int motorPin = D0;
Utilitzarem la funció millis () per enviar les dades després que cada interval de temps definit sigui aquí de 10 segons. El retard () s'evita ja que deté el programa per un retard definit on microcontrolador no pot fer altres tasques. Obteniu més informació sobre la diferència entre delay () i millis () aquí.
interval llarg sense signar = 10000; unsigned long previousMillis = 0;
Establiu el pin del motor com a sortida i apagueu el motor inicialment. Inicieu la lectura del sensor DHT11.
pinMode (motorPin, OUTPUT); digitalWrite (motorPin, BAIX); // Mantenir el motor apagat inicialment dht.begin ();
Proveu de connectar la Wi-Fi amb SSID i contrasenya determinats i espereu que la connexió Wi-Fi estigui connectada i, si està connectat, aneu als passos següents.
WiFi.begin (ssid, pass); while (WiFi.status ()! = WL_CONNECTED) { demora (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi connectat"); }
Definiu l'hora actual d'inici del programa i deseu-lo en una variable per comparar-lo amb el temps transcorregut.
corrent llarg sense signar Millis = millis ();
Llegiu les dades de temperatura i humitat i deseu-les en variables.
flotador h = dht.readHumidity (); flotador t = dht.readTemperature ();
Si DHT està connectat i l’ESP8266 NodeMCU és capaç de llegir les lectures, procediu al següent pas o torneu d’aquí per tornar a comprovar-ho.
if (isnan (h) - isnan (t)) { Serial.println ("No s'ha pogut llegir el sensor DHT!"); tornar; }
Llegiu la lectura d’humitat del sensor i imprimiu-la.
percentatge d’humitat = (100,00 - ((analogRead (moistPin) / 1023,00) * 100,00)); Serial.print ("La humitat del sòl és ="); Serial.print (percentatge d’humitat); Serial.println ("%");
Si la lectura d’humitat es troba entre el rang d’humitat del sòl requerit, mantingueu la bomba apagada o si supera la humitat necessària, activeu la bomba.
if ( percentatge d’ humitat <50) { digitalWrite (motorPin, HIGH); } if ( percentatge d’ humitat> 50 && percentatge d’ humitat <55) { digitalWrite (motorPin, HIGH); } if ( percentatge d' humitat> 56) { digitalWrite (motorPin, BAIX); }
Ara, cada 10 segons, truqueu a la funció sendThingspeak () per enviar les dades d’humitat, temperatura i humitat al servidor ThingSpeak.
if ((sense signar llarg) (currentMillis - previousMillis)> = interval) { sendThingspeak (); previousMillis = millis (); client.stop (); }
A la funció sendThingspeak () comprovem si el sistema està connectat al servidor i, si és així, preparem una cadena on s’escriu la lectura d’humitat, temperatura, humitat i aquesta cadena s’enviarà al servidor ThingSpeak juntament amb la clau API i l’adreça del servidor.
if (client.connect (servidor, 80)) { String postStr = apiKey; postStr + = "& field1 ="; postStr + = String (percentatge d’humitat); postStr + = "& field2 ="; postStr + = String (t); postStr + = "& field3 ="; postStr + = Cadena (h); postStr + = "\ r \ n \ r \ n";
Finalment, les dades s’envien al servidor ThingSpeak mitjançant la funció client.print () que conté la clau API, l’adreça del servidor i la cadena que es prepara al pas anterior.
client.print ("POST / actualització HTTP / 1.1 \ n"); client.print ("Amfitrió: api.thingspeak.com \ n"); client.print ("Connexió: tancar \ n"); client.print ("X-THINGSPEAKAPIKEY:" + apiKey + "\ n"); client.print ("Tipus de contingut: application / x-www-form-urlencoded \ n"); client.print ("Longitud del contingut:"); client.print (postStr.length ()); client.print ("\ n \ n"); client.print (postStr);
Finalment, és així com es veuen les dades al tauler de control de ThingSpeak

Aquest darrer pas finalitza el tutorial complet sobre el sistema de reg intel·ligent basat en IoT. Tingueu en compte que és important apagar el motor quan la humitat del sòl hagi assolit el nivell requerit després de ruixar-la amb aigua. Podeu crear un sistema més intel·ligent que pugui contenir un control diferent per a diferents cultius.
Si teniu algun problema mentre feu aquest projecte, comenteu a continuació o contacteu amb els nostres fòrums per obtenir preguntes més rellevants i les seves respostes.
A continuació, trobareu el programa complet i el vídeo de demostració d’aquest projecte.
