تصميم روبوت متتبع للخط طافئ للحرائق

0

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

بعد ان قمنا بتصميم روبوت الغرض منه اطفاء الحرائق وتصميم روبوت متتبع للخط يمكن الإطلاع عليه من هنا:
سنقوم اليوم بدمج هذه المشاريع مع بعضها البعض حيث سنحصل علي روبوت يقوم بتتبع الخط وعندما يتحسس وجود اي حرائق يقوم باطفاء الحريق


اولا الأدوات:

flame sensor
3x tracking sensor
Arduino
2x dc motors
h-bridge
battery 9v

 line sensor

يعتبر من الحساسات المهمة مع الأردوينو حيث انه يتحسس من اللون الأسود والأبيض
فيعطى واحد عند استشعاره للون الأسود يعطى صفر وعند استشعاره للون الأبيض يعطى واحد
سنستخدم منه ثلاثة للسماح للروبوت بمعرفه اتجاه الخط فإذا كان الخط يسير بإتجاه مستقيم 
فإن الحساس الأوسط سيعطى صفر
وإذا واتجه الخط ناحية اليمين يقرء الحساس الأيمن صفر
وإذا اتجه الخط ناحية اليسار يقرأ الحساس الأيسر صفر

dc motor

هذا نوع من المواتير وهو المستخدم غالبا فى الروبوتات الخاصة بالأردوينو 
سنستخدم فى هذا المشروع هذا النوع من المواتير


h-bridge 

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

Arduino

المتحكم المستخدم للقيام بمعالجة البيانات

flame sensor

حساس اللهب وهو مفيد في معرفة اذا كان هناك حرائق ام لا

ثانيا التوصيلات:


يتكون متتبع الخط من 3 منافذ منفذ الطاقة  5 فولت ومنفذ السالب الي السالب ومنفذ الإشارة حيث يتم توصيل منفذ الإشارة الخاص بالحساس الأيمن الي منفذ رقم 8 الرقمي وتوصيل الحساس الأوسط منفذ الإشارة الي منفذ رقم 9 وتوصيل منفذ الإشارة الخاص بالحساس الأيسر الي منفذ رقم 7 
ويتم توصيل حساس اللهب كالاتي منفذ الطاقة الي 5 فولت ومنفذ السالب الي السالب ومنفذ الإشارة الي 6 الرقمي
يتم توصيل المضخة الخاصة بضخ المياه عن طريق ترانزيستور npn فحيث يتم توصيل emiter الي السالب الخاص بالمضخة وتوصيل collector الي السالب الخاص ببطارية 9 فولت وتوحيد الطرف السالب مع توصيل سالب اﻷردوينو معهم و توصيل base الخاص بالترانزيستور الي منفذ 5 الرقمي
وتوصيل المواتير dc الي h-bridge وتوصيل منافذ الإشارة الخاصة ب h-bridge الي المنافذ رقم A0,A1,A2,A3,A4

مجسم الروبوت 

المجسم الذى سنستخدمه اليوم سيكون بهذا الشكل
نقوم بلصق المواتير بهذا الشكل


بعد ذلك قوموا بوضع باقى المكونات على حسب مهارتكم

يجب وضع حساس الخط فى مقدمة الروبوت وجعل مسافة 1 سم بين الحساس والأرض
ويجب وضع حساس فى اقصي يمين مقدمة الروبوت 
ووضع اخر فى اقصى يسار مقدمة الروبوت
ووضع الأخير فى وسط مقدمة الروبوت
فى الجزء المواجه الى الأرض

ثالثا الكود : 

const int LeftMotorForward =A0;
const int LeftMotorBackward =A1;
const int RightMotorForward =A2;
const int RightMotorBackward =A3;
const int EnableAB =A4;

const int sensor_right = 8;
const int sensor_middle = 9;
const int sensor_left = 7;

const int flamese = 6;
const int pump = 5;

void mforward()
  //to make robot move forward
  digitalWrite(LeftMotorForward, HIGH);
  digitalWrite(RightMotorForward, HIGH);
  digitalWrite(LeftMotorBackward, LOW);
  digitalWrite(RightMotorBackward, LOW);
  Serial.println("go forward!");
}
void mleft()
{
  //to move robot left
  digitalWrite(RightMotorForward, HIGH);
  digitalWrite(LeftMotorForward, LOW);
  Serial.println("go left!");
}
void mright()
{
  //to move robot right
  digitalWrite(LeftMotorForward, HIGH);
   digitalWrite(RightMotorForward, LOW);
}
void mstop()
{
 //to stop the robot
  digitalWrite(RightMotorForward, LOW);
  digitalWrite(LeftMotorForward, LOW);
  digitalWrite(RightMotorBackward, LOW);
  digitalWrite(LeftMotorBackward, LOW);
  Serial.println("Stop!");
}
void setup()
{   
  pinMode(RightMotorForward, OUTPUT);
  pinMode(LeftMotorForward, OUTPUT);
  pinMode(LeftMotorBackward, OUTPUT);
  pinMode(RightMotorBackward, OUTPUT);
  pinMode(EnableAB,OUTPUT);
  digitalWrite(EnableAB,1);
  delay(100);
}
void loop()
{
  int right_state = digitalRead(sensor_right);
  int left_state = digitalRead(sensor_left);
  int middle_state = digitalRead(sensor_middle);
  if(right_state == 0 && left_state == 1 &&       middle_state == 1)
  {
    mright();}
  if(right_state == 1 && left_state == 0 && middle_state == 1)
  {
    mleft();}
    if(right_state == 1 && left_state == 1 && middle_state == 0)
  {
  mforward(); }
  if(right_state == 1 && left_state == 1 && middle_state == 1)
  {
  mstop();}}
void fire_fight(){
  int x = digitalRead(flamese);
  if(x==1){
    digitalWrite(pump,1);
  }else{
    digitalWrite(pump,0);}}
في البداية يجب تعريف المتغيرات الأساسية مثل منافذ المواتير والحساسات ومنفذ المضخة وتعريف المدخلات والمخرجات
ثم القيام بعمليات مقارنة هل الخط يتجه لليمين تحرك الروبوت لليمين هل الخط متجه للأمام حرك الروبوت للامام هل الخط يتجه لليسار تحرك الروبوت ناحية اليسار و اذا كانت هناك اي اشارة من حساس اللهب قم بتشغيل المضخة علي الفور 

لتحميل الكود اضغط هنا 

تصميم وبرمجة : بلال حسان سعدي

تصميم سمارت هوم متكامل

0

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

بعد ان قمنا بتصميم عدة مشاريع بخصوص سمارت هوم والتي يمكن الإطلاع عليها :
وقمنا ايضا بتصميم مشروع للحماية ويمكن الإطلاع عليه من هنا :
وسنقوم اليوم بعمل دمج لكل هذه المشاريع حيث سنصمم سمارت هوم :
التحكم باربعه اجهزة باستخدام ir remote
نظام ا نذار للحرائق وانذار للحركة و نظام حماية


اولا الأدوات :

Arduino uno
motor servo
RIB motion sensor
puzzer
ir remote reciever + sender
keypad
relay 
tmp35 temperature sensor

Arduino uno

المتحكم الذي يقوم بمعالجة كافة البيانات ولا يجب استخدام اردوينو اونو يمكن استخدام اي نوع اخر
motor servo
موتور الذي سيقوم بفتح القفل في حالة كتابة الباسورد بطريقة صحيحة 


هناك نوع من القفول الأوتوماتيكيى التى تعمل على 12 فولت والتى يمكن إستخدامها مع الأردوينو بإستعمال ترانزيستور 
RIB motion sensor
حساس الحركة الذي سيقوم بمعرفة اذا كان يوجد حركة او جسم في المكان

ir remote reciever + sender

الوسيلة التي سنتحكم بها بالأجهزة وهي عن طريق ir remote

keypad

لوحة المفاتيح التي سيقوم المستخدم بادخال كلمة المرور

relay 

ريلاي مكون الكتروني يتيح التحكم باجهزة ذو جهد مرتفع باستخدام طاقة صغيرة 5 فولت


puzzer

الصفارة التي سنخرج عليها انذار في حالة وجود اشارة من حساس الحركة او ارتفاع في درجات الحرارة ووجود حرائق

tmp35 temperature sensor

حساس الحرارة الذي سيقوم بقياس درجة الحرارة

ثانيا التوصيلات:



تنقسم التوصيلات الي 4 اقسام :
القسم الأول : قسم اللتحكم بالأجهزة 
حيث يتم توصيل منافذ coil الخاص بالريلاي الي المنافذ الأتيه A2,A3,A4,A5 وتوصيل منفذ COM الي 220 فولت وتوصيل NO للأجهزة المراد اللتحكم بها 
وتوصيل مستلم IR الطاقة الي 5 فولت الخاصه باﻷردوينو والسالب الي السالب ومنفذ الإشارة الي منفذ رقم 2
القسم الثاني : قسم انذار الحرائق 
حيث يتم توصيل حساس الحرارة الطاقة الي 5 فولت والسالب الي السالب ومنفذ الإشارة الي المنفذ A0 
وتوصيل الصفارة السالب الي السالب والموجب الي 3 الرقمي
القسم الثالث : قسم انذار الحركة
حيث يتم توصيل حساس الحركة الموجب الي 5 فولت والسالب الي السالب ومنفذ الإشارة الي A1
وهذا القسم يشترك مع القسم الثاني في السماعه 
القسم الرابع : قسم الحماية keypad
تحتوي keypad علي 8 منافذ 4 منافذ للصفوف و4 اخري للأعمده
و توصيل الموتور السيرفو منفذ الإشارة الي المنافذ الرقمية

ثالثا الكود :

 للعمل مع ir remote نقوم بتنزيل مكتبة خاصة به 
للتنزيل اضغط هنا

والأن نتجه الى الكود 

فى البداية يجب معرفة الأكود التى يرسلها الريموت الى المستشعر لكى نستطيع التمييز بينها 

بواسطة هذا الكود 
والذى يمكنكم تحميله من هنا 
بعد رفع الكود الى الاردوينو نذهب الى صفحة السيريال مونيتور 
ونبدء الضغط على الريموت ضغطة سريعة على الأزرار التى تريد تعيينها للتحكم بالأجهزة 
نحن سنقوم بتجهيز كود للتعامل مع اربعة ازرار من الريموت للتحكم فى جهازين 

عند الذهاب على السيريال مونيتور ونضغط على اى زر فى الريموت يأتى هذا الرمز

وهذا الرمز يختلف من زر الى زر ومن ريموت الى ريموت 
فهذا الرمز تم ارساله الريموت عند الضغط على زر رقم 2
فيجب معرفة كل الرموز الأزرار التى ستسخدمونها للتحكم فى الأجهزة 

وشرح الكود الكود باختصار ينقسم الي عدة اقسام حيث قسم التحكم باﻷجهزة و قسم الإتذار بالحرائق وقسم انذار الحركة وقسم الحماية حيث يوجد كل قسم داخل دالة مما يسهل التعامل مع الكود 
حيث قمنا بشرح هذه الاكواد في المقالات السابقة 

لتحميل الكود اضغط هنا
تصميم وبرمجة بلال حسان 

تصميم نظام حماية والدمج مع انظمة السمارت هوم

0

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

بعد ان قمنا بتصميم عدة مشاريع عن المنزل الذكي سنصمم مشاريع الغرض منها حماية المنزل ودمجها مع مشاريع السمارت هوم 
هذا المشروع الغرض منه هو حماية المنزل عن طريق استخدام keypad و موتور سيرفو

ملحوظة : تم الإستغناء عن جزء الخاص بانذار الحرائق 


الأدوات :

Arduino uno
keypad
motor servo

Arduino uno

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


keypad

لوحة المفاتيح وهي مخصصة للتعامل مع الأردوينو وتحتوي علي 4 صفوف و 4 اعمده

motor servo

موتور السيرفو الذي سيتم استخدامه في فتح او غلق القفل الخاص بالباب

ثانيا التوصيلات :


يحتوي keypad علي 8 منافذ 
4 منافذ للصفوف و 4 منافذ للأعمدة يتم توصيلهم جميعا الي المنافذ الرقمية الخاصه بالأردوينو 
وموتور سيرفو يحتوي علي 3 منافذ منفذ الإشارة يتم توصيله الي المنفذ الرقمي ومنفذ الطاقة الي 5 فولت ومنفذ السالب الي السالب

ثالثا الكود :

#include <Servo.h>
#include <Keypad.h>
const byte row = 4;
const byte col = 4;
char keys[row][col]={
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};
byte rowpin[row]={r1,r2,r3,r4};
byte colpin[col]={c1,c2,c3,c4};
Keypad kpd(makeKeymap(keys),rowpin,colpin,row,col);
Servo servo;
#define serv servopin
char StorePass[]="your password";
int i=0,count=0,number=sizeof(StorePass)-1;
char pass[sizeof(StorePass)-1];
void setup() {
  servo.attach(serv);
}
void loop() {
 char key = kpd.getKey();
  if (key>'0'&&key!='D'){
    pass[i]=key;
    i++;}
  if(key=='D'){
    if(i==number){
      for(int j=0;j<number;j++){
        if(pass[j]==StorePass[j])count++;
     }
      if(count==number){
        servo.write(165);
        delay(2000);
        i=0;
        count=0;}}}
  servo.write(5);}
هذا هو الكود الخاص بمنظومة الحماية وهذا الكود سيكون مدمج مع اكواد التحكم باﻷجهزة التي قمنا بتصميمها من قبل 
في البداية يجب تعريف المكتبات وتعريف الحروف والأرقام الخاصة ب keypad وتعريف منفذ الموتور وتعريف منافذ keypad الصفوف والأعمده وتعريف متغيرات الخاصة بالباسورد ومتغيرات خاصه لبعض العمليات الأخري
#include <Servo.h>
#include <Keypad.h>
const byte row = 4;
const byte col = 4;
char keys[row][col]={
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};
byte rowpin[row]={r1,r2,r3,r4};
byte colpin[col]={c1,c2,c3,c4};
Keypad kpd(makeKeymap(keys),rowpin,colpin,row,col);
Servo servo;
#define serv servopin
char StorePass[]="your password";
int i=0,count=0,number=sizeof(StorePass)-1;
char pass[sizeof(StorePass)-1];
void setup() {
  servo.attach(serv);}
بعد ذلك تم انشاء متغير لتخزين ما تم ضغطه علي keypad في هذا المتغير
بعد ذلك تخزين ما تم ضغطه داخل مصفوفة ومقارنة عناصر المصفوفة التي قمنا بانشاءها مع عناصر المصفوفة الأخري التي تحتوي علي الباسورد الصحيح وفي حالة تطابق المصفوفتين يتم تحريك موتور السيرفوا بزاوية 165 و الإنتظار ثانيتين و بعد ذلك تحريك الموتور بزاية 5 درجات

وفي النهاية لإدخال الباسورد يجب الضغط علي حرف D فهو بمثابة زر enter في لوحة المفاتيح 

هناك نوع من القفول الأوتوماتيكيى التى تعمل على 12 فولت والتى يمكن إستخدامها مع الأردوينو بإستعمال ترانزيستور 

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

تصميم وبرمجة : بلال حسان سعدي

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

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

تصميم منزل ذكي التحكم من خلال البلوتوث

0

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

بعد ان قمنا بتصميم مشروع للتحكم في منزل الذكي عن طريق blynk و التخكم من داخل الشبكة عن طريق شريحة nodemcu
وللإطلاع علي هذه المشاريع
سنقوم اليوم بتصميم مشروع مشابه لهذه المشاريع ولكن التحكم عن طريق البلوتوث


اولا الأدوات : 

Arduino uno
pizo
TMP35 temperature sensor
mq sensor
relay 4 channel
hc-05 Bluetooth module

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 فولت)

hc-05 Bluetooth module

شريحة البلوتوث والتي تعد بمثابة مستقبل للاوامر من التطبيق في التحكم في اﻷجهزة

ثانيا التصميم :





في البداية يتم توصيل شريحة البلوتوث هكذا
rx to 2D
tx to 3D
vcc to 5v
gnd to gnd
ويتم توصيل الريلاي هكذا
vcc to 5v
IN1 TO 8
IN2 TO 7
IN3 TO 6
IN4 TO 5
وتوصيل حساس الحرارة منفذ الطاقة الي الطاقة والسالب الي السالب ومنفذ الإشارة الي A1
وحساس MQ توصيل + الي + والسالب الي السالب والإِشارة الي المنفذ رقم A0
وتوصيل السماعه الموجب الي المنفذ الرابع والسالب الي السالب

ثالثا الكود : 

#include<SoftwareSerial.h>
SoftwareSerial bt(2,3);
void fire_alarm(void);
#define IN1 5
#define IN2 6
#define IN3 7
#define IN4 8
int gasen =A0;
int tmsen =A1;
int sp =4 , valgs , valtm;
void setup() {
  bt.begin(9600);
  for(int i=4;i<9;i++){
    pinMode(i,OUTPUT);
  }}
void loop() {
  fire_alarm();
  if(bt.available()>0){
    char data = bt.read();
    switch(data){
      case 'a':
        digitalWrite(IN1,HIGH);
        break;
      case 'b':
        digitalWrite(IN1,LOW);
        break;
      case 'c':
        digitalWrite(IN2,HIGH);
        break;
      case 'd':
        digitalWrite(IN2,LOW);
        break; 
      case 'e':
        digitalWrite(IN3,HIGH);
        break; 
      case 'f':
        digitalWrite(IN3,LOW);
        break;
      case 'g':
        digitalWrite(IN4,HIGH);
        break;
      case 'h':
        digitalWrite(IN4,LOW);
    } }}
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); }
ينقسم الكود الي 3 اقسام رئيسية 
قسم التعريفات حيث تم اضافة المكتبة وتعريف المتغيرات الأساسية وتعريف المنافذ كمخارج او مداخل
#include<SoftwareSerial.h>
SoftwareSerial bt(2,3);
void fire_alarm(void);
#define IN1 5
#define IN2 6
#define IN3 7
#define IN4 8
int gasen =A0;
int tmsen =A1;
int sp =4 , valgs , valtm;
void setup() {
  bt.begin(9600);
  for(int i=4;i<9;i++){
    pinMode(i,OUTPUT);
  }}
القسم الثاني هو انذار الحرائق حيث قراءة بيانات الحساسات ومرجعتها ببيانات مرجعية وفي حالة وجود حريق يقوم الجهاز باصدار الإنذار
  valgs=analogRead(gasen);
  valtm=analogRead(tmsen);
  valtm=valtm * 0.48828125;
  if(valgs>400){
    tone(sp,250); }
  if(valtm<60){
    tone(sp,250); }
  noTone(sp); }
القسم الأخير هو قسم التحكم بالأجهزة حيث يتم مراقبة خط البلوتوث وترقب اي بيانات مرسلة وفي حالة تم ارسال البيانات يتم اتخاذ اداء معين حسبا لهذه البيانات
 if(bt.available()>0){
    char data = bt.read();
    switch(data){
      case 'a':
        digitalWrite(IN1,HIGH);
        break;
      case 'b':
        digitalWrite(IN1,LOW);
        break;
      case 'c':
        digitalWrite(IN2,HIGH);
        break;
      case 'd':
        digitalWrite(IN2,LOW);
        break; 
      case 'e':
        digitalWrite(IN3,HIGH);
        break; 
      case 'f':
        digitalWrite(IN3,LOW);
        break;
      case 'g':
        digitalWrite(IN4,HIGH);
        break;
      case 'h':
        digitalWrite(IN4,LOW);
    } }}

رابعا التطبيق :


تطبيق قمت بتصميمه عبر منصة app inventor يجب في البداية الإتصال بشريحة البلوتوث ثم الإستمتاع بتجربة التطبيق والمشروع

لتحميل الكود والتطبيق من هنا


تصميم وبرمجة : بلال حسان سعدي