بسم الله الرحمن الرحيم
بعد ان قمنا بتصميم عدة مشاريع عن المنزل الذكي ومنها التحكم عن طريق الواي فاي من اي مكان في العالم و التحكم من داخل الشبكة عن طريق شريحة nodemcu والتحكم عن طريق البلوتوث من عن طريق الأردوينو
وللإطلاع علي المشاريع السابقة
لكن سنقوم اليوم بتصميم مثل هذا المشروع حيث سنتحكم بالأجهزة عن طريق الريموت كنترول و بالإَضافة الي نظام انذار الحرائق وتسرب الغازات
اولا الأدوات :
Arduino uno
pizo
TMP35 temperature sensor
mq sensor
relay 4 channel
ir remote
Arduino uno
شريحة المتحكم الذكي التي تقوم بمعالجة كل البيانات
pizo
سماعه لإخراج انذار في حالة وجود حريق
TMP35 temperature sensor
حساس الحرارة التماثلي يقوم باعطاء معلومات عن درجة الحرارة البيئة المحيطة به بمثابة تيار كهربائي
mq sensor
حساس mq هو حساس لديه القدرة علي استشعار غازات ولديه العديد من الأنواع حيث يتخصص كل نوع في نوع معين من الغازات
- MQ-2 - Methane, Butane, LPG, smoke
- MQ-3 - Alcohol, Ethanol, smoke
- MQ-4 - Methane, CNG Gas
- MQ-5 - Natural gas, LPG
- MQ-6 - LPG, butane gas
- MQ-7 - Carbon Monoxide
- MQ-8 - Hydrogen Gas
- MQ-9 - Carbon Monoxide, flammable gasses
- MQ131 - Ozone
- MQ135 - Air Quality (CO, Ammonia, Benzene, Alcohol, smoke)
- MQ136 - Hydrogen Sulfide gas
- MQ137 - Ammonia
- MQ138 - Benzene, Toluene, Alcohol, Acetone, Propane, Formaldehyde gas, Hydrogen
- MQ214 - Methane, Natural gas
- MQ216 - Natural gas, Coal gas
relay 4 channel
الريلاي هو مكون الكتروني لديه القدرة في التحكم في تيارات وجهود كبيرة بواسطه جهود قليلة (5 فولت)
ir remote
ريموت التحكم وهو يعمل علي الإشارات التحت حمراء
يتم توصيل الريلاي بهذه الطريقة
vcc to 5v
in1 to 7
in2 to 6
in3 to 5
in4 to 4
gnd to gnd
ويتم توصيل المستلم الخاص بريموت ir الموجب الي الموجب و منفذ الإشارة الي منفذ 3 الرقمي والسالب الي السالب
السماعه تحتوي علي منفذان الموجب يتم توصيله الي المنفذ الرقمي رقم 8 والسالب الي السالب
ويحتوي الحساس mq علي 4 منافذ الموجب يتم توصيله الي موجب والسالب الي السالب و الخرج التماثلي الي منفذ رقم A0
وحساس الحرارة يحتوي علي 3 منافذ الموجب الي مصدر الطاقة والسالب الي السالب و منفذ الإشارة الي A1
ثالثا الكود :
للعمل مع ir remote نقوم بتنزيل مكتبة خاصة به
للتنزيل اضغط هنا
والأن نتجه الى الكود
فى البداية يجب معرفة الأكود التى يرسلها الريموت الى المستشعر لكى نستطيع التمييز بينها
بواسطة هذا الكود
والذى يمكنكم تحميله من هنا
بعد رفع الكود الى الاردوينو نذهب الى صفحة السيريال مونيتور
ونبدء الضغط على الريموت ضغطة سريعة على الأزرار التى تريد تعيينها للتحكم بالأجهزة
نحن سنقوم بتجهيز كود للتعامل مع اربعة ازرار من الريموت للتحكم فى جهازين
عند الذهاب على السيريال مونيتور ونضغط على اى زر فى الريموت يأتى هذا الرمز
وهذا الرمز يختلف من زر الى زر ومن ريموت الى ريموت
فهذا الرمز تم ارساله الريموت عند الضغط على زر رقم 2
فيجب معرفة كل الرموز الأزرار التى ستسخدمونها للتحكم فى الأجهزة
وننتقل الي الكود الفعلي بعد ان قمنا بجمع الرموز كلها:
#include <IRremote.h>
IRrecv rec(pin);
decode_results res;
int relay1 = relaypin1 ;
int relay2 = relaypin2 ;
int relay2 = relaypin3 ;
int relay2 = relaypin4 ;
int gasen =A0;
int tmsen =A1;
int sp =4 , valgs , valtm;
void setup(){
pinMode(relay1,OUTPUT);
pinMode(relay2,OUTPUT);
pinMode(relay3,OUTPUT);
pinMode(relay4,OUTPUT);
rec.enableIRIn();
Serial.begin(9600);
pinMode(sp,OUTPUT);}
void loop(){
if(rec.decode(&res)){
if(res.value == 0xzzzzzz) {
digitalWrite(relay1,LOW);}
if(res.value == 0xzzzzzz){
digitalWrite(relay1,HIGH);}
if(res.value == 0xzzzzzz) {
digitalWrite(relay2,LOW);}
if(res.value == 0xzzzzzz){
digitalWrite(relay2,HIGH);}
if(res.value == 0xzzzzzz){
digitalWrite(relay3,LOW);}
if(res.value == 0xzzzzzz){
digitalWrite(relay3,HIGH);}
if(res.value == 0xzzzzzz){
digitalWrite(relay4,LOW);}
if(res.value == 0xzzzzzz){
digitalWrite(relay4,HIGH);}
rec.resume();}}
void fire_alarm(void){
valgs=analogRead(gasen);
valtm=analogRead(tmsen);
valtm=valtm * 0.48828125;
if(valgs>400){
tone(sp,250);}
if(valtm>60){
tone(sp,250);}
noTone(sp); }
ينقسم الكود الي ثلاثة اقسام القسم الأول وهو التعريفات حيث تم اضافة المكتبة اللازمة والمتغيرات وتعريف المخارج والمداخل وتعريف الريموت داخل المكتبة ويجب كتابة المنفذ الخاص بالريموت بدلا من كلمة pin
#include <IRremote.h>
IRrecv rec(pin);
decode_results res;
int relay1 = relaypin1 ;
int relay2 = relaypin2 ;
int relay2 = relaypin3 ;
int relay2 = relaypin4 ;
int gasen =A0;
int tmsen =A1;
int sp =4 , valgs , valtm;
void setup(){
pinMode(relay1,OUTPUT);
pinMode(relay2,OUTPUT);
pinMode(relay3,OUTPUT);
pinMode(relay4,OUTPUT);
rec.enableIRIn();
Serial.begin(9600);
pinMode(sp,OUTPUT);}
القسم الثاني هو التحكم بالأجهزة حيث يتم التاكد من ان الريموت متاح وعمل مقارنه للبيانات التي يتم استلامها من قبل الريموت عن طريق
if(rec.decode(&res)){
if(res.value == 0xzzzzzz) {
digitalWrite(relay1,LOW);}
if(res.value == 0xzzzzzz){
digitalWrite(relay1,HIGH);}
if(res.value == 0xzzzzzz) {
digitalWrite(relay2,LOW);}
if(res.value == 0xzzzzzz){
digitalWrite(relay2,HIGH);}
if(res.value == 0xzzzzzz){
digitalWrite(relay3,LOW);}
if(res.value == 0xzzzzzz){
digitalWrite(relay3,HIGH);}
if(res.value == 0xzzzzzz){
digitalWrite(relay4,LOW);}
if(res.value == 0xzzzzzz){
digitalWrite(relay4,HIGH);}
حيث يتم استبدال zzzzzzzz بالأكواد التي حصلنا عليها من قبل قليل
والقسم الأخير هو قسم انذار الحرائق حيث يتم قراءة البيانات الناتجة من الحساساتوعمل مقارنات عليها وفي حالة تخطي قيمة احد الحساسات القيمة المرجعية سيتم اصدار انذار من السماعه
void fire_alarm(void){
valgs=analogRead(gasen);
valtm=analogRead(tmsen);
valtm=valtm * 0.48828125;
if(valgs>400){
tone(sp,250);}
if(valtm>60){
tone(sp,250);}
noTone(sp);
وهكذا نصل الي نهاية المشروع تجربة ممتعه
لتحميل الكود اضغط هنا
تصميم وبرمجة : بلال حسان سعدي
لا يوجد تعليقات
أضف تعليق