يستخدم معظم المزارعين أجزاء كبيرة من الأراضي الزراعية ويصبح من الصعب جدًا الوصول إلى كل ركن من أركان الأراضي الكبيرة وتتبعه. في وقت ما هناك احتمال وجود رشاشات ماء غير متساوية. وهذا يؤدي إلى سوء جودة المحاصيل مما يؤدي إلى مزيد من الخسائر المالية. في هذا السيناريو ، يكون نظام الري الذكي الذي يستخدم أحدث تقنيات إنترنت الأشياء مفيدًا ويؤدي إلى سهولة الزراعة.
و الري الذكية نظام له مجالا واسعا لأتمتة نظام الري الكامل. نحن هنا نبني نظام ري يعتمد على إنترنت الأشياء باستخدام وحدة ESP8266 NodeMCU ومستشعر DHT11. لن يقوم فقط بري المياه تلقائيًا بناءً على مستوى الرطوبة في التربة ولكن أيضًا يرسل البيانات إلى ThingSpeak Server لتتبع حالة الأرض. سيتكون النظام من مضخة مياه سيتم استخدامها لرش المياه على الأرض اعتمادًا على حالة الأرض البيئية مثل الرطوبة ودرجة الحرارة والرطوبة.
لقد أنشأنا سابقًا نظامًا آليًا للري للنباتات مشابهًا يرسل تنبيهات على الهاتف المحمول وليس على سحابة إنترنت الأشياء. بصرف النظر عن هذا ، يمكن أن تكون دائرة إنذار المطر وكاشف رطوبة التربة مفيدة أيضًا في بناء نظام الري الذكي.
قبل البدء ، من المهم ملاحظة أن المحاصيل المختلفة تتطلب ظروفًا مختلفة من رطوبة التربة ودرجة الحرارة والرطوبة. لذلك في هذا البرنامج التعليمي ، نستخدم مثل هذا المحصول الذي سيتطلب رطوبة التربة بحوالي 50-55٪ لذلك عندما تفقد التربة رطوبتها إلى أقل من 50٪ ، سيتم تشغيل المضخة تلقائيًا لرش الماء وستستمر في رش الماء حتى تصل الرطوبة إلى 55٪ وبعد ذلك سيتم إيقاف المضخة. سيتم إرسال بيانات المستشعر إلى ThingSpeak Server في فترة زمنية محددة بحيث يمكن مراقبتها من أي مكان في العالم.
المكونات مطلوبة
- NodeMCU ESP8266
- وحدة استشعار رطوبة التربة
- وحدة ضخ المياه
- وحدة الترحيل
- دهت 11
- توصيل الأسلاك
يمكنك شراء جميع المكونات المطلوبة لهذا المشروع.
مخطط الرسم البياني
فيما يلي مخطط الدائرة لنظام الري الذكي IoT:
برمجة ESP8266 NodeMCU لنظام الري الآلي
لبرمجة وحدة ESP8266 NodeMCU ، يتم استخدام مكتبة مستشعر DHT11 كمكتبة خارجية. يوفر مستشعر الرطوبة خرجًا تناظريًا يمكن قراءته من خلال دبوس A0 التناظري ESP8266 NodeMCU. نظرًا لأن NodeMCU لا يمكنه إعطاء جهد خرج أكبر من 3.3 فولت من GPIO الخاص به ، فنحن نستخدم وحدة ترحيل لقيادة مضخة المحرك 5 فولت. كما يتم تشغيل مستشعر الرطوبة ومستشعر DHT11 من مصدر طاقة خارجي 5 فولت.
يتم تقديم رمز كامل مع فيديو عملي في نهاية هذا البرنامج التعليمي ، وهنا نوضح البرنامج لفهم تدفق العمل في المشروع.
ابدأ بتضمين المكتبة الضرورية.
#تضمن
نظرًا لأننا نستخدم خادم ThingSpeak ، فإن مفتاح واجهة برمجة التطبيقات ضروري للتواصل مع الخادم. لمعرفة كيف يمكننا الحصول على مفتاح API من ThingSpeak ، يمكنك زيارة المقالة السابقة حول مراقبة درجة الحرارة والرطوبة الحية على ThingSpeak.
سلسلة apiKey = "X5AQ445IKMBYW31H const char * server =" api.thingspeak.com "؛
الخطوة التالية هي كتابة بيانات اعتماد Wi-Fi مثل SSID وكلمة المرور.
const char * ssid = "CircuitDigest" ؛ const char * pass = "xxxxxxxxxxx" ؛
حدد دبوس مستشعر DHT حيث يتم توصيل DHT واختر نوع DHT.
#define DHTPIN D3 DHT dht (DHTPIN ، DHT11) ؛
يتم توصيل خرج مستشعر الرطوبة بـ Pin A0 من ESP8266 NodeMCU. ويتم توصيل دبوس المحرك بـ D0 من NodeMCU.
const int moistidityPin = A0 ؛ const int motorPin = D0 ؛
سنقوم باستخدام بالمللي () وظيفة لإرسال البيانات بعد كل فترة محددة من الزمن هنا هو 10 ثانية. و تأخير () يتم تجنب منذ توقف البرنامج لتأخير محددة حيث متحكم لا يمكن القيام بمهام أخرى. تعرف على المزيد حول الفرق بين delay () و millis () هنا.
فاصل طويل بدون توقيع = 10000 ؛ ميلليس طويل بدون توقيع = 0 ؛
اضبط دبوس المحرك كإخراج ، وأوقف تشغيل المحرك في البداية. ابدأ قراءة مستشعر DHT11.
pinMode (motorPin ، الإخراج) ؛ الكتابة الرقمية (motorPin ، منخفضة) ؛ // يحفظ المحرك مغلق dht.begin () ؛
حاول توصيل Wi-Fi باستخدام SSID وكلمة المرور المعينين وانتظر حتى يتم توصيل Wi-Fi وإذا كانت متصلة ، فانتقل إلى الخطوات التالية.
WiFi.begin (ssid ، تمرير) ؛ while (WiFi.status ()! = WL_CONNECTED) { delay (500) ؛ Serial.print (".") ؛ } Serial.println ("") ؛ Serial.println ("متصل بشبكة WiFi") ؛ }
حدد الوقت الحالي لبدء البرنامج واحفظه في متغير لمقارنته بالوقت المنقضي.
تيار طويل بدون توقيع
اقرأ بيانات درجة الحرارة والرطوبة واحفظها في المتغيرات.
تعويم h = dht.readHumidity () ؛ تعويم t = dht.readTemperature () ،
إذا تم توصيل DHT وكان ESP8266 NodeMCU قادرًا على قراءة القراءات ، فانتقل إلى الخطوة التالية أو عد من هنا للتحقق مرة أخرى.
if (isnan (h) - isnan (t)) { Serial.println ("Failed to read from DHT sensor!") ؛ إرجاع؛ }
اقرأ قراءة الرطوبة من المستشعر واطبع القراءة.
الرطوبة النسبية = (100.00 - ((analogRead (moistPin) / 1023.00) * 100.00)) ؛ Serial.print ("رطوبة التربة =") ؛ Serial.print (نسبة الرطوبة) ؛ Serial.println ("٪") ؛
إذا كانت قراءة الرطوبة بين نطاق رطوبة التربة المطلوب ، فاحرص على إيقاف تشغيل المضخة أو إذا تجاوزت الرطوبة المطلوبة ، فقم بتشغيل المضخة.
إذا (نسبة الرطوبة <50) { digitalWrite (motorPin ، عالية) ؛ } إذا كانت (نسبة الرطوبة> 50 && نسبة الرطوبة <55) { digitalWrite (motorPin، HIGH)؛ } if ( moistPercentage > 56) { digitalWrite (motorPin، LOW)؛ }
الآن بعد كل 10 ثانية استدعاء sendThingspeak () وظيفة ل إرسال البيانات الرطوبة ودرجة الحرارة والرطوبة إلى ThingSpeak الخادم.
إذا ((بدون توقيع طويل) (currentMillis - previousMillis)> = فاصل زمني { sendThingspeak () ؛ PreviousMillis = ميليس () ؛ client.stop () ؛ }
في وظيفة sendThingspeak () ، نتحقق مما إذا كان النظام متصلاً بالخادم ، وإذا كانت الإجابة بنعم ، فنحن نجهز سلسلة مكتوب فيها قراءة الرطوبة ودرجة الحرارة والرطوبة وسيتم إرسال هذه السلسلة إلى خادم ThingSpeak مع مفتاح API وعنوان الخادم.
if (client.connect (server، 80)) { String postStr = apiKey؛ postStr + = "& field1 ="؛ postStr + = سلسلة (نسبة الرطوبة) ؛ postStr + = "& field2 ="؛ postStr + = سلسلة (t) ؛ postStr + = "& field3 =" ؛ postStr + = سلسلة (h) ؛ postStr + = "\ r \ n \ r \ n"؛
أخيرًا يتم إرسال البيانات إلى خادم ThingSpeak باستخدام وظيفة client.print () التي تحتوي على مفتاح API وعنوان الخادم والسلسلة التي تم إعدادها في الخطوة السابقة.
client.print ("POST / update HTTP / 1.1 \ n") ؛ client.print ("المضيف: api.thingspeak.com \ n") ؛ client.print ("الاتصال: إغلاق \ n") ؛ client.print ("X-THINGSPEAKAPIKEY:" + apiKey + "\ n") ؛ client.print ("نوع المحتوى: application / x-www-form-urlencoded \ n") ؛ client.print ("طول المحتوى:") ؛ client.print (postStr.length ()) ؛ client.print ("\ n \ n") ؛ client.print (postStr) ؛
أخيرًا ، هكذا تبدو البيانات على ThingSpeak Dashboard
تنتهي هذه الخطوة الأخيرة من البرنامج التعليمي الكامل حول نظام الري الذكي القائم على إنترنت الأشياء. لاحظ أنه من المهم إيقاف تشغيل المحرك عندما تصل رطوبة التربة إلى المستوى المطلوب بعد رش الماء. يمكنك إنشاء نظام أكثر ذكاءً يمكن أن يحتوي على عناصر تحكم مختلفة للمحاصيل المختلفة.
إذا واجهت أي مشاكل أثناء القيام بهذا المشروع ، فقم بالتعليق أدناه أو قم بالوصول إلى منتدياتنا لمزيد من الأسئلة ذات الصلة وإجاباتها.
ابحث عن البرنامج الكامل والفيديو التوضيحي لهذا المشروع أدناه.