جدول المحتويات:

مراقبة النبات باستخدام ESP32 Thing و Blynk: 5 خطوات
مراقبة النبات باستخدام ESP32 Thing و Blynk: 5 خطوات

فيديو: مراقبة النبات باستخدام ESP32 Thing و Blynk: 5 خطوات

فيديو: مراقبة النبات باستخدام ESP32 Thing و Blynk: 5 خطوات
فيديو: Home automation using ESP32 and Blynk 2.0 App | Blynk ESP32 Relay Control 📱| IoT Project 2024, يونيو
Anonim
مراقبة النبات باستخدام ESP32 Thing و Blynk
مراقبة النبات باستخدام ESP32 Thing و Blynk
مراقبة النبات باستخدام ESP32 Thing و Blynk
مراقبة النبات باستخدام ESP32 Thing و Blynk

ملخص

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

الخطوة 1: المتطلبات

متطلبات
متطلبات
متطلبات
متطلبات
متطلبات
متطلبات

يستخدم هذا المشروع جهاز Sparkfun ESP32 ، ومستشعر DHT22 ، ومستشعر رطوبة التربة من الطوب الإلكتروني. بالإضافة إلى ذلك ، يلزم توفر شبكة wifi وتطبيق Blynk. على نحو مفضل ، يجب إنشاء حاوية مقاومة للماء لاحتواء الشيء ESP32. بينما يستخدم هذا المثال منفذًا قياسيًا لمصدر طاقة ، فإن إضافة بطارية قابلة لإعادة الشحن ولوحة شمسية ووحدة تحكم في الشحن ستمكن الجهاز من أن يتم تشغيله من خلال الطاقة المتجددة.

الخطوة 2: Blynk

بلينك
بلينك
بلينك
بلينك
بلينك
بلينك

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

الخطوة 3: Arduino IDE

اردوينو IDE
اردوينو IDE

قم بتنزيل Arduino IDE. اتبع إرشادات التنزيل الخاصة ببرنامج تشغيل الشيء ESP32 والعرض التوضيحي لضمان اتصال wifi. قم بتنزيل مكتبات Blynk و DHT المضمنة في الكود. املأ رمز المصادقة وكلمة مرور wifi واسم مستخدم wifi والبريد الإلكتروني في الرمز النهائي. استخدم الكود التجريبي لجهاز استشعار رطوبة التربة للعثور على القيم الدنيا والقصوى لنوع التربة. سجل واستبدل هذه القيم في الكود النهائي. استبدل القيم الدنيا لدرجة الحرارة ورطوبة التربة والرطوبة للنبات في الكود النهائي. قم بتحميل الكود.

الخطوة 4: قم ببنائه

بنائها
بنائها
بنائها
بنائها
بنائها
بنائها

أولاً ، قم بتوصيل مستشعر رطوبة التربة بـ 3.3 فولت ، والأرضي ، ودبوس الإدخال 34. لاحظ أنه جزء لا يتجزأ من ضبط المفتاح على A لأنه سيتم استخدام الإعداد التناظري لهذا المستشعر. بعد ذلك ، قم بتوصيل مستشعر DHT بـ 3.3 فولت ، والأرضي ، ودبوس الإدخال 27. يتطلب مستشعر DHT22 مقاومة 10 كيلو أوم بين VCC ودبوس إخراج البيانات. تأكد من مراجعة مخطط DHT للتأكد من توصيله بشكل صحيح. قم بتكوين ESP32 داخل حاوية مقاومة للماء باستخدام مستشعر الرطوبة في التربة ومستشعر DHT فوق السطح. اتصل بمصدر طاقة واستمتع بالبيانات عن بيئة مصنعك.

الخطوة 5: الكود

// المكتبات المضمنة

#define BLYNK_PRINT المسلسل

# تضمين # تضمين # تضمين # تضمين "DHT.h"

// معلومات مستشعر DHT

#define DHTTYPE DHT22 // DHT 22 (AM2302) ، AM2321 #define DHTPIN 27 // دبوس رقمي متصل بمستشعر DHT DHT dht (DHTPIN ، DHTTYPE) ؛ // تهيئة مستشعر DHT.

// تحديد دبابيس الإدخال والمخرجات

حساس التربة int = 34 ؛ // تحديد رقم التعريف الشخصي للإدخال التناظري المتصل بجهاز استشعار الرطوبة

int output_value ؛ // تعريف كإخراج

int moisturelevel ؛ // تعريف كإخراج

إخطار int = 0 ؛ // تعريف تم الإبلاغ عنه كـ 0

التأخير الزمني int = 60000L ؛ // ضبط جهاز ضبط الوقت للتشغيل للحصول على البيانات مرة واحدة كل دقيقة أو 60 ألف ميلي ثانية

// تعيين القيم الدنيا للنبات

int min_moisture = 20 ؛ int min_temperature = 75 ؛ الحد الأدنى للرطوبة = 60 ؛

// يجب أن تحصل على Auth Token في تطبيق Blynk.

char auth = "Auth_Token_Here" ؛

// بيانات اعتماد WiFi الخاصة بك.

char ssid = "Wifi_Network_Here" ؛ char pass = "Wifi_Password_Here" ؛

توقيت BlynkTimer.

// ترسل هذه الوظيفة وقت تشغيل Arduino كل ثانية إلى Virtual Pin (5).

// في التطبيق ، يجب ضبط تردد قراءة الأداة على PUSH. هذا يعني // أنك تحدد عدد مرات إرسال البيانات إلى تطبيق Blynk.

void Sensors () // الوظيفة الرئيسية لقراءة المستشعرات والدفع إلى blynk

{output_value = analogRead (التربة_المستشعر) ؛ // اقرأ الإشارة التناظرية من مستشعر التربة وعرِّفها على أنها قيمة الإخراج // قم بتخطيط الإخراج_vlaue من القيم الدنيا والقيم القصوى إلى 100 و 0 وتقييد بين 0 و 100 // استخدم رمز العينة والمراقب التسلسلي للعثور على min و القيم القصوى لجهاز الاستشعار الفردي ونوع التربة لتحسين مستوى رطوبة المعايرة = تقييد (خريطة (قيمة الإخراج ، 1000 ، 4095 ، 100 ، 0) ، 0 ، 100) ؛ تعويم h = dht.readHumidity () ؛ // قراءة الرطوبة العائمة t = dht.readTemperature () ؛ // قراءة درجة الحرارة على أنها مئوية (الافتراضي) float f = dht.readTemperature (true) ؛ // قراءة درجة الحرارة على أنها فهرنهايت (isFahrenheit = true) // حساب مؤشر الحرارة بالفهرنهايت (الافتراضي) float hif = dht.computeHeatIndex (f، h)؛ // تحقق مما إذا كانت أي قراءات فشلت والخروج مبكرًا (للمحاولة مرة أخرى). if (isnan (h) || isnan (t) || isnan (f)) {Serial.println (F ("Failed to read from DHT sensor!"))؛ إرجاع؛ } // هذا يربط الوصلات بالدبابيس الافتراضية المحددة في الأدوات في تطبيق Blynk Blynk.virtualWrite (V5 ، moisturelevel) ؛ // أرسل مستوى الرطوبة إلى الدبوس الافتراضي 5 Blynk.virtualWrite (V6، f)؛ // أرسل درجة الحرارة إلى الوضع الافتراضي pin 6 Blynk.virtualWrite (V7 ، h) ؛ // أرسل الرطوبة إلى الدبوس الافتراضي 7 Blynk.virtualWrite (V8 ، hif) ؛ // أرسل مؤشر الحرارة إلى الدبوس الافتراضي 8

إذا (تم الإخطار == 0)

{if (moisturelevel <= min_moisture) // إذا كان مستوى الرطوبة يساوي أو أقل من القيمة الدنيا {Blynk.email ("Email_Here"، "Plant Monitor"، "Water Plant!")؛ تأخير // إرسال بريد إلكتروني إلى water plant} (15000) ؛ // يجب أن تفصل بين رسائل البريد الإلكتروني في Blynk 15 ثانية. تأخير 15000 مللي ثانية إذا (f <= min_temperature) // إذا كانت درجة الحرارة تساوي أو تقل عن الحد الأدنى للقيمة {Blynk.email ("Email_Here"، "Plant Monitor"، "Temperature Low!")؛ // أرسل بريدًا إلكترونيًا يشير إلى انخفاض درجة الحرارة

}

تأخير (15000) ؛ // يجب أن تفصل بين رسائل البريد الإلكتروني في Blynk 15 ثانية. تأخير 15000 مللي ثانية إذا (h <= min_humidity) // إذا كانت الرطوبة تساوي أو تقل عن الحد الأدنى للقيمة {Blynk.email ("Emial_Here"، "Plant Monitor"، "Humidity Low!")؛ // إرسال بريد إلكتروني بأن الرطوبة منخفضة} إخطار = 1 ؛ timer.setTimeout (تأجيل زمني * 5 ، resetNotified) ؛ // مضاعفة timeedelay بعدد الدقائق المطلوبة بين تكرار رسائل التحذير الإلكترونية}}

إعادة تعيين باطلNotified () // وظيفة تسمى لإعادة تعيين تردد البريد الإلكتروني

{الإعلام = 0 ؛ }

الإعداد باطل()

{Serial.begin (9600) ، // Debug console Blynk.begin (auth ، ssid ، pass) ؛ // الاتصال بـ blynk timer.setInterval (تأخير زمني ، أجهزة استشعار) ؛ // قم بإعداد وظيفة ليتم استدعاؤها كل دقيقة أو ما تم تعيينه للتأجيل الزمني على dht.begin () ؛ // تشغيل مستشعر DHT}

// يجب أن تحتوي الحلقة الفارغة على blynk.run والمؤقت فقط

حلقة باطلة () {Blynk.run () ، // تشغيل blynk timer.run () ؛ // يبدأ BlynkTimer}

موصى به: