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

مراقبة المصنع مع التنبيه عبر الرسائل القصيرة: 5 خطوات
مراقبة المصنع مع التنبيه عبر الرسائل القصيرة: 5 خطوات

فيديو: مراقبة المصنع مع التنبيه عبر الرسائل القصيرة: 5 خطوات

فيديو: مراقبة المصنع مع التنبيه عبر الرسائل القصيرة: 5 خطوات
فيديو: استرجاع رسائل SMS القديمة وارقام الهاتف😱 جرب بنفسك 2024, شهر نوفمبر
Anonim
مراقبة المصنع مع تنبيه عبر الرسائل القصيرة
مراقبة المصنع مع تنبيه عبر الرسائل القصيرة

هنا أقوم بإنشاء مراقبة المصنع مع تنبيه عبر الرسائل القصيرة. الخادم غير مطلوب لنظام التنبيه هذا. إنه مشروع رخيص للغاية وموثوق.

الخطوة 1: رسم تخطيطي للنظام

مخطط كتلة النظام
مخطط كتلة النظام

في الدفيئات الزراعية اليوم ، هناك حاجة إلى العديد من قياسات المعلمات

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

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

نظرًا لأنني مواطن هندي ، استخدم وحدة SIM900A (A تعني الشبكة الآسيوية) ولكن يمكنك استخدام نوع مختلف من وحدات SIM وفقًا لبلدك. قد تختلف أكواد AT.

الخطوة 2: تفاصيل المكون

تفاصيل المكون
تفاصيل المكون
تفاصيل المكون
تفاصيل المكون
تفاصيل المكون
تفاصيل المكون

------------------ أقوم بقياس أربعة أنواع من المعلمات ، وهي قيد التنفيذ

للمناقشة أدناه: ------------------

درجة الحرارة والرطوبة

يستخدم مستشعر DHT11 لاستشعار درجة الحرارة والرطوبة. عندما تكون درجة الحرارة والرطوبة عالية ، فإن جذر النباتات يتضرر ونمو النبات ليس جيدًا.

شدة الضوء

شدة الضوء عامل مهم لنمو النبات. للكشف عن شدة الضوء ، يتم استخدام LDR (المقاوم المعتمد على الضوء). تُقاس شدة الضوء بوحدة LUX ، وبالتالي من أجل العرض التوضيحي ، يتم استخدام 100 ضوء LUX كمستوى محدد أو عتبة.

رطوبة التربة

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

إخطار الرسائل القصيرة:

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

يتم إرسال الإشعار مرة واحدة فقط حتى لا تتغير الحالة بحيث لا يتلقى المالك أو المشغل رسائل SMS متكررة. لذلك ، تتطلب حزمة SMS أقل.

الخطوة 3: مخطط الدائرة

مخطط الرسم البياني
مخطط الرسم البياني

جميع هذه الأجزاء متاحة بسهولة في أي موقع تسوق عبر الإنترنت

أو مع تاجر قطع غيار إلكترونيات معروف. تتوفر جميع أوراق بيانات المكونات على الويب. إذا كانت هناك أي صعوبة فلا تتردد في الاتصال على بريدي.

الخطوة 4: فيديو العمل وملف الكود

فيديو العمل النهائي للمشروع

الخطوة 5: كود البرنامج

#يشمل

#يشمل

LiquidCrystal LCD (2 ، 3 ، 4 ، 5 ، 6 ، 7) ؛

dht DHT ؛ #define dht_dpin A1 #define LUX A0 # تعريف التربة A3

تعويم فولت ، لوكس ، قيمة ؛ int output_value ؛ درجة الحرارة والرطوبة. int lightflag = 0 ؛ int humflag = 0 ؛ كثافة التربة التربة = 0 ؛ int tempflag = 0 ؛ فحص int اختبار int ، test1 ؛ درجة البايت [8] = {0b00011 ، 0b00011 ، 0b00000 ، 0b00000 ، 0b00000 ، 0b00000 ، 0b00000 ، 0b00000} ؛

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

{Serial.begin (9600) ، // تهيئة المسلسل للتواصل مع مودم GSM lcd.begin (16 ، 2) ؛ pinMode (التربة ، المدخلات) ؛ lcd.createChar (1 ، درجة) ؛ lcd.setCursor (0 ، 0) ؛ lcd.print ("صحة النبات") ؛ lcd.setCursor (0 ، 1) ؛ lcd.print ("المراقبة") ؛ تأخير (1000) ؛ lcd.clear () ؛ lcd.setCursor (0 ، 0) ؛ lcd.print ("مشروع AGRI") ؛ lcd.setCursor (0 ، 1) ؛ lcd.print ("بواسطة S K CHHAYA") ؛ تأخير (1000) ؛ lcd.clear () ؛ } حلقة فارغة () {output_value = analogRead (تربة) ؛ output_value = map (output_value، 550، 0، 0، 100) ؛ القيمة = analogRead (LUX) ؛ فولت = (القيمة / 1023.0) * 5 ؛ لوكس = ((2500 / فولت) - 500) / 3.3 ؛ تأخير (10000) ؛ // امنح وقتًا كافيًا لـ GSM للتسجيل في شبكة DHT.read11 (dht_dpin) ؛ lcd.clear () ؛ lcd.setCursor (0 ، 0) ؛ lcd.print ("درجة الحرارة") ؛ lcd.setCursor (0 ، 1) ؛ lcd.print (درجة الحرارة = DHT. درجة الحرارة) ؛ // بيانات درجة الحرارة على شاشة LCD lcd.write (1) ؛ lcd.print ("C") ؛ تأخير (1000) ؛ lcd.clear () ؛ lcd.setCursor (0 ، 0) ؛ lcd.print ("الرطوبة") ؛ lcd.setCursor (0 ، 1) ؛ lcd.print (الرطوبة = دهت.رطوبة) ؛ // بيانات الرطوبة على شاشة LCD.print ("٪") ؛ تأخير (1000) ؛ lcd.clear () ؛ lcd.setCursor (0 ، 0) ؛ lcd.print ("ضوء") ؛ lcd.setCursor (0 ، 1) ؛ lcd.print (لوكس) ؛ // بيانات الضوء على شاشة LCD.print ("LUM") ؛ تأخير (1000) ؛ lcd.clear () ؛ lcd.setCursor (0 ، 0) ؛ lcd.print ("الرطوبة") ؛ lcd.setCursor (0 ، 1) ؛ lcd.print (output_value) ؛ // بيانات التربة على شاشة LCD.print ("٪") ؛ تأخير (1000) ؛ lcd.clear () ؛

إذا (درجة الحرارة 40) {SendSMS () ؛ // SMS لدرجة الحرارة العالية} إذا (الرطوبة 40) {SendSMS2 () ؛ // الرسائل القصيرة للرطوبة عالية} إذا (لوكس 100) {SendSMS4 () ؛ // SMS for Light high} if (output_value == 950) {SendSMS7 () ؛ // SMS for Dry Soil} else if (output_value! = 950) {SendSMS6 () ؛ // SMS for Wet Soil}} void SendSMS () {if (tempflag == 0) {Serial.println ("AT + CMGF = 1")؛ تأخير (500) ؛ Serial.println ("AT + CMGS = \" + 919979897404 / "\ r") ؛ تأخير (500) ؛ Serial.print ("درجة حرارة عالية") ؛ Serial.print ("Temp") ؛ Serial.print (درجة الحرارة) ؛ Serial.println ("درجة C") ؛ Serial.println ((شار) 26) ؛ lcd.setCursor (0 ، 0) ؛ lcd.print ("درجة حرارة عالية") ؛ تأخير (1000) ؛ lcd.clear () ؛ lcd.setCursor (0 ، 0) ؛ lcd.print ("درجة الحرارة") ؛ lcd.setCursor (0 ، 1) ؛ lcd.print (درجة الحرارة) ؛ lcd.write (1) ؛ lcd.print ("C") ؛ تأخير (1000) ؛ lcd.clear () ؛ lcd.setCursor (0 ، 0) ؛ lcd.print ("إرسال الرسائل القصيرة") ؛ تأخير (1000) ؛ lcd.clear () ؛ تمبفلاغ = 1 ؛ تحقق = 0 ؛ اختبار = 0 ؛ تأخير (10) ؛ }} void SendSMS1 () {if (tempflag == 1) {Serial.println ("AT + CMGF = 1")؛ تأخير (500) ؛ Serial.println ("AT + CMGS = \" + 919979897404 / "\ r") ؛ تأخير (500) ؛ Serial.print ("درجة الحرارة منخفضة ،") ؛ Serial.print ("Temp") ؛ Serial.print (درجة الحرارة) ؛ Serial.println ("درجة C") ؛ Serial.println ((شار) 26) ؛ lcd.setCursor (0 ، 0) ؛ lcd.print ("درجة الحرارة منخفضة") ؛ تأخير (1000) ؛ lcd.clear () ؛ lcd.setCursor (0 ، 0) ؛ lcd.print ("درجة الحرارة") ؛ lcd.setCursor (0 ، 1) ؛ lcd.print (درجة الحرارة) ؛ lcd.write (1) ؛ lcd.print ("C") ؛ تأخير (1000) ؛ lcd.clear () ؛ lcd.setCursor (0 ، 0) ؛ lcd.print ("إرسال الرسائل القصيرة") ؛ تأخير (1000) ؛ lcd.clear () ؛ tempflag = 0 ؛ تحقق = 0 ؛ اختبار = 0 ؛ تأخير (10) ؛ }} باطل SendSMS2 () {if (humflag == 0) {Serial.println ("AT + CMGF = 1") ؛ تأخير (500) ؛ Serial.println ("AT + CMGS = \" + 919979897404 / "\ r") ؛ تأخير (500) ؛ Serial.print ("الرطوبة عالية") ؛ Serial.print (الرطوبة) ؛ Serial.println ("٪") ؛ Serial.println ((شار) 26) ؛ lcd.setCursor (0 ، 0) ؛ lcd.print ("الرطوبة عالية") ؛ تأخير (1000) ؛ lcd.setCursor (0 ، 1) ؛ lcd.print ("الرطوبة") ؛ lcd.print (الرطوبة) ؛ lcd.print ("٪") ؛ تأخير (1000) ؛ lcd.clear () ؛ lcd.setCursor (0 ، 0) ؛ lcd.print ("إرسال الرسائل القصيرة") ؛ تأخير (1000) ؛ lcd.clear () ؛ humflag = 1 ؛ تحقق = 0 ؛ اختبار = 0 ؛ تأخير (10) ؛ }}

باطل SendSMS3 () {if (humflag == 1) {Serial.println ("AT + CMGF = 1") ؛ تأخير (500) ؛ Serial.println ("AT + CMGS = \" + 919979897404 / "\ r") ؛ تأخير (500) ؛ Serial.print ("رطوبة منخفضة ،") ؛ Serial.print ("الرطوبة") ؛ Serial.print (الرطوبة) ؛ Serial.println ("٪") ؛ Serial.println ((char) 26) ؛ lcd.setCursor (0 ، 0) ؛ lcd.print ("رطوبة منخفضة") ؛ تأخير (1000) ؛ lcd.clear () ؛ lcd.setCursor (0 ، 0) ؛ lcd.print ("الرطوبة") ؛ lcd.setCursor (0 ، 1) ؛ lcd.print (الرطوبة) ؛ lcd.print ("٪") ؛ تأخير (1000) ؛ lcd.clear () ؛ lcd.setCursor (0 ، 0) ؛ lcd.print ("إرسال الرسائل القصيرة") ؛ تأخير (1000) ؛ lcd.clear () ؛ humflag = 0 ؛ تحقق = 0 ؛ اختبار = 0 ؛ تأخير (10) ؛ }} void SendSMS4 () {if (lightflag == 0) {Serial.println ("AT + CMGF = 1")؛ // لإرسال الرسائل القصيرة في تأخير وضع النص (500) ؛ Serial.println ("AT + CMGS = \" + 919979897404 / "\ r") ؛ // التغيير إلى تأخير رقم الهاتف الوجهة (500) ؛ Serial.print ("Good LIGHT") ؛ Serial.print ("كثافة") ؛ المسلسل. print (لوكس) ؛ Serial.println ("LUX") ؛ Serial.println ((char) 26) ؛ // حرف التوقف Ctrl + Z lcd.setCursor (0 ، 0) ؛ lcd.print ("ضوء جيد") ؛ تأخير (1000) ؛ lcd.clear () ؛ lcd.setCursor (0 ، 0) ؛ lcd.print ("كثافة") ؛ lcd.setCursor (0 ، 1) ؛ lcd.print (لوكس) ؛ lcd.print ("LUX") ؛ تأخير (1000) ؛ lcd.clear () ؛ lcd.setCursor (0 ، 0) ؛ lcd.print ("إرسال الرسائل القصيرة") ؛ تأخير (1000) ؛ lcd.clear () ؛ lightflag = 1 ؛ تحقق = 0 ؛ اختبار = 0 ؛ تأخير (10) ؛ }} void SendSMS5 () {if (lightflag == 1) {Serial.println ("AT + CMGF = 1")؛ تأخير (500) ؛ Serial.println ("AT + CMGS = \" + 919979897404 / "\ r") ؛ تأخير (500) ؛ Serial.print ("LOW LIGHT،") ؛ Serial.print ("كثافة") ؛ المسلسل. print (لوكس) ؛ Serial.println ("LUX") ؛ Serial.println ((char) 26) ؛ lcd.setCursor (0 ، 0) ؛ lcd.print ("إضاءة منخفضة") ؛ تأخير (1000) ؛ lcd.clear () ؛ lcd.setCursor (0 ، 0) ؛ lcd.print ("كثافة") ؛ lcd.setCursor (0 ، 1) ؛ lcd.print (لوكس) ؛ lcd.print ("LUX") ؛ تأخير (1000) ؛ lcd.clear () ؛ lcd.setCursor (0 ، 0) ؛ lcd.print ("إرسال الرسائل القصيرة") ؛ تأخير (1000) ؛ lcd.clear () ؛ lightflag = 0 ؛ تحقق = 0 ؛ اختبار = 0 ؛ تأخير (10) ؛ }} void SendSMS6 () {if (التربةflag == 0) {Serial.println ("AT + CMGF = 1") ؛ تأخير (500) ؛ Serial.println ("AT + CMGS = \" + 919979897404 / "\ r") ؛ تأخير (500) ؛ Serial.print ("التربة الجافة") ؛ Serial.print ("الرطوبة") ؛ Serial.print (output_value) ؛ Serial.println ("٪") ؛ Serial.println ((شار) 26) ؛ lcd.setCursor (0 ، 0) ؛ lcd.print ("التربة الجافة") ؛ تأخير (1000) ؛ lcd.clear () ؛ lcd.setCursor (0 ، 0) ؛ lcd.print ("الرطوبة") ؛ lcd.setCursor (0 ، 1) ؛ lcd.print (output_value) ؛ lcd.print ("٪") ؛ تأخير (1000) ؛ lcd.clear () ؛ lcd.setCursor (0 ، 0) ؛ lcd.print ("إرسال الرسائل القصيرة") ؛ تأخير (1000) ؛ lcd.clear () ؛ التربة = 1 ؛ تحقق = 0 ؛ اختبار = 0 ؛ تأخير (10) ؛ }} void SendSMS7 () {if (التربةflag == 1) {Serial.println ("AT + CMGF = 1") ؛ تأخير (500) ؛ Serial.println ("AT + CMGS = \" + 919979897404 / "\ r") ؛ تأخير (500) ؛ Serial.print ("التربة الرطبة") ؛ Serial.print ("الرطوبة") ؛ Serial.print (output_value) ؛ Serial.println ("٪") ؛ Serial.println ((شار) 26) ؛ lcd.clear () ؛ lcd.setCursor (0 ، 0) ؛ lcd.print ("التربة الرطبة") ؛ تأخير (1000) ؛ lcd.clear () ؛ lcd.setCursor (0 ، 0) ؛ lcd.print ("الرطوبة") ؛ lcd.setCursor (0 ، 1) ؛ lcd.print (output_value) ؛ lcd.print ("٪") ؛ تأخير (1000) ؛ lcd.clear () ؛ lcd.setCursor (0 ، 0) ؛ lcd.print ("إرسال الرسائل القصيرة") ؛ تأخير (1000) ؛ lcd.clear () ؛ التربة = 0 ؛ تحقق = 0 ؛ اختبار = 0 ؛ تأخير (10) ؛ }}

موصى به: