إنشاء IoT Smart Garden باستخدام ESP32 و Blynk

هل سبق وأن زرعت نبتة ونسيت سقايتها فجف وميت؟ نعم ، يحدث هذا عدة مرات لأننا نشارك في روتيننا اليومي الضيق ولكننا مهتمون بشدة بزراعة النباتات. في الحالة الأخرى ، إذا كنت فارمرًا وتزرع محصولًا ، فمن الصعب معرفة حالة التربة من المنزل.

مع أخذ ذلك في الاعتبار ، فإننا نقوم بإنشاء نظام آلي لمياه النبات يستخدم اردوينو أو ES8266 للتفاعل مع مستشعر يشير إلى رطوبة التربة بالسعة وربطهما بمضخة المياه ، لذلك عندما تصبح التربة جافة ، تبدأ مضخة المياه تلقائيًا وعندما تكون التربة رطبة ، سيتم إيقاف تشغيل المضخة تلقائيًا.


نقوم بتوصيل MCU واحد (Arduino ، Node MCU ، Wemos D1 ، ESP 32) بمستشعر رطوبة التربة هنا نستخدم مستشعر سعوي بدلاً من مستشعر المقاومة لأن هذه المستشعرات تحتوي على تيار مستمر مع قطبين معدنيين مطبوعين على لوحة السيليكون والتي تسبب التحليل الكهربائي وتآكل المعادن عن طريق إتلاف الجهاز بشكل دائم.

مع المستشعر السعوي ، فإنه يخرج إشارات تناظرية ولا تتعرض الأجزاء المعدنية للماء الذي يميل إلى التشغيل لفترة طويلة من هذا الجهاز. وفقًا للرمز ، تقوم MCU بجلب بيانات المستشعر من خلال المستشعر الموجود في التربة. إذا كانت التربة جافة أو مبللة ، فسيرسل المستشعر القيم وفقًا لذلك ، لذا ستحلل MCU القيم وترسل الإشارة إلى وحدة الترحيل وتطلق مضخة المياه وفقًا لذلك.

مكونات المشروع:

 
مخطط المشروع:

 كود المشروع:

//Tech-hme.com
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <SimpleTimer.h>

const int AirValue = 616;   //replace the value from calibration in air
const int WaterValue = 335;  //replace the value from calibration in water
int soilMoistureValue = 0;
int soilmoisturepercent=0;
SimpleTimer timer;

void MainFunction() {
  soilMoistureValue = analogRead(A0); //Mention where the analog pin is connected on NodeMCU
  Serial.println(soilMoistureValue);
  soilmoisturepercent = map(soilMoistureValue, AirValue, WaterValue, 0, 100);
  if(soilmoisturepercent < 10) // change this at what level the pump turns on
  {
  Serial.println("Nearly dry, Pump turning on");
  digitalWrite(D5,HIGH); // Low percent high signal to relay to turn on pump
  }
  else if(soilmoisturepercent >85) // max water level should be
  {
  Serial.println("Nearly wet, Pump turning off");
  digitalWrite(D5,low); // high percent water high signal to relay to turn off pump
  }
  Blynk.virtualWrite(V2, soilmoisturepercent); //display the moisture percent.
}

void setup() {
  pinMode(D5,OUTPUT); // pin where relay trigger connected
  Serial.begin(9600); // open serial port, set the baud rate to 9600 bps
  Blynk.begin(auth, ssid, pass);
  timer.setInterval(1000L,MainFunction);

}
void loop() {
  Blynk.run();
  timer.run(); // Initiates BlynkTimer
}


إرسال تعليق

أحدث أقدم