مشروع إنذار الحريق عبر الرسائل القصيرة عبر GSM

جرب أداة القضاء على المشاكل





سنقوم في هذه المقالة ببناء نظام دائرة إنذار الحريق GSM باستخدام مستشعر Arduino و DHT11 ، والذي سينبه المستخدم عبر رسالة نصية (SMS) ، فيما يتعلق بخطر الحريق داخل المبنى الذي تم تثبيته فيه.

باستخدام مستشعر DHT11

نحن نستخدم مستشعر DHT11 لاستشعار ارتفاع غير عادي في درجات الحرارة حول المنطقة المحلية. يمكننا ضبط درجة حرارة العتبة بدقة في البرنامج ، إذا ارتفعت درجة الحرارة فوق الحد المعين مسبقًا ، مودم GSM يبدأ في إرسال رسائل تنبيه SMS للمتلقي.



كيف تعمل

يتكون إعداد دائرة الإنذار من الحريق GSM من 3 أجزاء ، المستشعر ، Arduino الذي هو عقل المشروع ومودم GSM الذي يرسل تنبيهًا عبر الرسائل القصيرة.

الأسلاك من الإعداد هي نفسها الأخرى المشاريع القائمة على GSM التي تمت مناقشتها في هذا الموقع. الاختلاف الوحيد هو إضافة مستشعر DHT11 إلى Arduino.



يتم توصيل TX الخاص بـ GSM بالدبوس رقم 9 من Arduino و RX الخاص بـ GSM متصل بالدبوس رقم 8 من Arduino والاتصال الأرضي إلى الأرضي متصل أيضًا. تم تحسين توصيل طاقة وبيانات المستشعر لتقليل ازدحام الأسلاك أثناء عمل النماذج الأولية.

يرجى ملاحظة الوصلات بعناية وإدخال المستشعر من A0 إلى A2 في الاتجاه الصحيح كما هو موضح أدناه.

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

هذا هو النموذج الأولي للمؤلف المكتمل:

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

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

يمكن عمل زر الطاقة الخارجي عن طريق لحام الأسلاك من أطراف زر الطاقة في مودم GSM. سيقلل DC UPS من الحاجة إلى تشغيل مودم GSM بعد كل انقطاع في التيار الكهربائي. إنه يعطي ميزة التوصيل والنسيان. الآن دعونا نرى كيف يعمل الإعداد بالكامل.

في حالة نشوب حريق ، ترتفع درجة حرارة الغرفة بسرعة في فترة قصيرة ، فإن المستشعر لديه القدرة على قياس الشكل من 0 إلى 50 درجة مئوية.

عندما ترتفع درجة الحرارة فوق قيمة العتبة المحددة مسبقًا في البرنامج (في حدود 0 إلى 50) ، فإنه يرسل تنبيهًا عبر الرسائل القصيرة يقول 'إنذار الحريق: 45.00 درجة مئوية'. 45 درجة مئوية هي درجة حرارة الغرفة أثناء إرسال الرسائل القصيرة ، وستتجاوز درجة الحرارة 100 درجة مئوية في غضون دقائق بعد حادث الحريق. يتم إرسال تنبيهين SMS للتكرار ، في حالة فشل إحدى الرسائل المرسلة.

إذا فشل المستشعر أو تم فصل المستشعر عن Arduino ، يتم إرسال المعلومات إلى المستخدم عبر الرسائل القصيرة مرتين تقول 'لا توجد بيانات من المستشعر / المستشعر مفصول'

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

عند اكتمال الإعداد بالكامل وتشغيله ، يرسل مودم GSM رسائل نصية قصيرة تجريبية تقول 'هذه رسالة SMS تجريبية من مودم GSM' إذا تلقيت هذه الرسالة إلى رقم المستلم ، فهذا يعني أن مشروعك يعمل بشكل جيد.

برنامج:

//--------------Program developed by R.Girish---------------//
#include
#include
SoftwareSerial gsm(9,8)
#define DHTxxPIN A1
dht DHT
int p = A0
int n = A2
int ack
int msgsend=0
int th=45 //set threshold temperature
unsigned long A = 1000L
unsigned long B = A * 60
unsigned long C = B * 30
void setup()
{
Serial.begin(9600)
gsm.begin(9600)
pinMode(p,OUTPUT)
pinMode(n,OUTPUT)
digitalWrite(p,1)
digitalWrite(n,0)
gsm.println('AT+CMGF=1')
delay(1000)
gsm.println('AT+CMGS='+91xxxxxxxxxx' ') // Replace x with mobile number
delay(1000)
gsm.println('This is a test SMS from GSM modem')// The SMS text you want to send
delay(100)
gsm.println((char)26) // ASCII code of CTRL+Z
delay(1000)
}
void loop()
{
top:
msgsend=0
ack=0
int chk = DHT.read11(DHTxxPIN)
switch (chk)
{
case DHTLIB_ERROR_CONNECT:
ack=1
break
}
if(ack==0)
{
Serial.print('Temperature(°C) = ')
Serial.println(DHT.temperature)
Serial.print('Humidity(%) = ')
Serial.println(DHT.humidity)
Serial.println(' ')
delay(2000)
}
if(ack==1)
{
goagain:
msgsend=msgsend+1
Serial.print('NO DATA')
Serial.print(' ')
Serial.println('Sending SMS...... ')
delay(500)
gsm.println('AT+CMGF=1')
delay(1000)
gsm.println('AT+CMGS='+91xxxxxxxxxx' ') // Replace x with mobile number
delay(1000)
gsm.println('No data from sensor/Sensor disconnected')// The SMS text you want to send
delay(100)
gsm.println((char)26) // ASCII code of CTRL+Z
delay(1000)
Serial.println('Message is sent ')
if(msgsend==2)
{
delay(C)
goto top
}
else
{
delay(10000)
goto goagain
}
}
if(DHT.temperature>=th)
{
doagain:
msgsend=msgsend+1
Serial.println('Sending SMS...... ')
gsm.println('AT+CMGF=1')
delay(1000)
gsm.println('AT+CMGS='+91xxxxxxxxx' ') // Replace x with mobile number
delay(1000)
gsm.println('Fire Alert:')// The SMS text you want to send
gsm.print(DHT.temperature)
gsm.print(' degree celsius')
delay(100)
gsm.println((char)26) // ASCII code of CTRL+Z
delay(1000)
Serial.println('Message is sent ')
if(msgsend==2)
{
delay(C)
goto top
}
else
{
delay(10000)
goto doagain
}
}
}
//--------------Program developed by R.Girish---------------//

ملاحظة: يجب عليك وضع رقم المستلم في 3 أماكن في البرنامج الموصوف في البرنامج على أنه

('AT + CMGS = ' + 91xxxxxxxxx ' r') // استبدل x برقم الهاتف المحمول

• ضبط درجة حرارة العتبة

int th = 45 // ضبط درجة حرارة العتبة

يجب ضبط درجة حرارة العتبة عالية ، أكبر من المعتاد تقلب درجة حرارة الغرفة على سبيل المثال: يتمتع DHT11 بقدرة قياس قصوى تبلغ 50 درجة مئوية ، لذلك يمكن تعيين درجة حرارة العتبة من 45 إلى 47. يتم تعيين قيمة عتبة عالية بحيث لا ترسل تنبيهًا خاطئًا عبر الرسائل النصية القصيرة للتغيرات الصغيرة في درجة حرارة الغرفة.

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




السابق: كيفية تصميم دائرة سخان التعريفي التالي: تم استكشاف أفضل 6 دوائر IC 555 العاكس