تصميم منزل ذكي باستخدام ريموت التحكم

0

 بسم الله الرحمن الرحيم

بعد ان قمنا بتصميم عدة مشاريع عن المنزل الذكي ومنها التحكم عن طريق الواي فاي من اي مكان في العالم و التحكم من داخل الشبكة عن طريق شريحة 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); 
وهكذا نصل الي نهاية المشروع تجربة ممتعه
لتحميل الكود اضغط هنا 
تصميم وبرمجة : بلال حسان سعدي

لا يوجد تعليقات

أضف تعليق