using pir sensor with arduino

زود مداخل الاردوينو
October 20, 2015
LIGHT SENSOR حساس الضوء
October 21, 2015

تسمع عن الhome automation  !….حابب تعمل حاجه جديده و تجربها في اوضتك ….لو عندك خبرة بسيطة في مجال الإلكترونيات و البرمجه ..او حتى لو كنت مجرد مبتديء …هحاول أبسط شرح المشروع الصغير دا عشان تقدر تعملو و تحطو عندك في البيت و تفهم فكرته البسيطة  :)…مش مجرد انك تتبع خطوات و تعملو.

المشروع ببساطة هوا عبارة عن لمبة بتنور اول ما حد  يخش الاوضه او لما تحس بحركة حوليها و بتطفي لما تطلع من الاوضه  و يبقى مفيش حركة حوليها  …دي من مميزتها انها  هتوفر كهربا …عشان لو نسيت تطفي اللمبة بعد ما تطلع ..او في اطفال عندك في البيت   ……اللمبة هتطفي و حدها ….ممكن كمان حد يستخدمها في مدخل البيت  او اي حته فيها حركه و عايز يتحكم باللمبة .

 المكونات قليله و متوفرة…..انا هستخدم  arduino uno و خليها هيه المتحكمة بالدايره دي….عشان الاردوينو هيا اسهل حاجه لاي حد عايز يتعلم  و اي حد يقدر يستخدمها و يعمل بيها تطبيقات كتيره مفيدة …….لاكن طبعا المشروع دا ممكن يتعمل بطرق محترفه اكتر…الكلام دا بيتعمل بمكونات ارخص زي ال555 timerو شويه  transistors و مقومات و كام ic و الحكايه مش بتكلف اوي .لاكن انا حبيت استخدم الاردوينو عشان اوريكو اد ايه الاردوينو سهله الاستخدام و وفرت على الطلاب و الناس الي بتعمل مشاريع انهم يشتغلو شغل الدواير و ال pcb و ال digital electronics و  الكلام دا ….و بقا اي حد يقدر يعمل مشروع ….لاكن طبعا  ال  pcb و ال circuits و الكلام دا مهم جدا و بيستخدم مع ال microcontrollers بردو ومن غيرو مش هتقدر تعمل حاجه كبيره .

لو حابب تعرف اكتر عن الاردوينو : 

 

( https://en.wikipedia.org/wiki/Arduino )

( https://www.arduino.cc/ )

 

المكونات الي هنحتجها:

1- {1} pir motion sensor
) http://store.fut-electronics.com/products/pir-motion-sensor-module-adjustable-range (.

2- {1} arduino board
( http://store.fut-electronics.com/collections/arduino-boards )

3- {1} relay
( http://store.fut-electronics.com/products/5v-dc-songle-power-relay )

4- {1} diode
( http://store.fut-electronics.com/collections/diodes/products/diode-1n4007-1a-1000v )

5- {1} npn transistor
( http://store.fut-electronics.com/search?type=product&q=npn )

6- {1}  1k resistor
( http://store.fut-electronics.com/products/resistor-1-kohm )

7- {1} Bread board
( http://store.fut-electronics.com/products/breadboard-840-pin )

10- some jumpers and wires
( http://store.fut-electronics.com/search?type=product&q=jumpers )

11- {2} terminal block[roseta]
( http://store.fut-electronics.com/products/pcb-terminal-block-5mm-pitch-2pin?lssrc=related )

12- {1} 9v battery and its clip

(  http://store.fut-electronics.com/collections/battery/products/9-volt-battery )( http://store.fut-electronics.com/products/9-v-battery-clip?lssrc=related )

8-{1}لمبة الوظ
9-{1}دواية
10-{1}متر سلك عادي (زي بتاع المروحه)
11-{1}فيشة

أخر 4 مكونات تقدر تجبهم من اي كهربائي .

 

الادوات الي هنستخدمها:
1-قشارة اسلاك.
2-مفك.

images-6

ال pir هوا اختصار ل “passive infrared sensor ” …….ليه 3 مخارج : vcc , gnd , out .

و دا فكرة عملو  ببساطه  انو في زي اتنين slots  مصنوعين من مادة معينه حساسة لل ir …الطبيعي ان طول الوقت ال two slots   واصلهم او مستقبليين نفس كميه ال ir  ….في حاله ان جسم دافئ زي الانسان او الحيوان يعدي في مجال الsensor   ….هيعدي على واحده من الslots قبل التانيه  فهيحصل  ” positive differential change “…او بجملة اسهل …. واحده من الslots هيتغير فيها نسبه الir  الي مستقبلاها عن التانيه  و لما الجسم يمشي بترجع تاني و يحصل العكس ” negative differential change “…و التغيير في الpulses   هوا دا الي عن طريقه نقدر نعرف ان في جسم عدى ولا لأ….و كل الليلة دي ملناش دعوة بيها….السينسور بيعمل كل دا لوحدو عن طريق ال circuits الي فيه و بيطلع output  محترم 🙂 … بيطلع  (high (1   في حاله وجود جسم و(low(0..  في حاله عدم وجوده .

images-4

لو حابب تعرف اكتر عن ال pir sensor :

( https://learn.adafruit.com/pir-passive-infrared-proximity-motion-sensor/how-pirs-work)

احنا هنستخدم ال arduino   عشان نستقبل بيها feedback  من السنسور و ناخد إجراء على أساس كدة ….و الإجراء هوا أننا ننور اللمبة أو نطفيها …بس في مشكلة !…..اللمبة دي عايزين نشغلها بكهربا Ac ….و بتحتاج تيار كبير ….و الاردوينو مش بطلع Ac ….و مش هنقدر تعملها support  في التيار ….الي حل المشكله دي هوا صاحبنا ال relay  🙂

BCACtP3PsDEnhpcLOukFND6lHH3K_wIVXD_5Nnc4pKoeB8ovW5x9C9DQ5sXNumG9EFyEa2noTVeuFg=w384-h384-nc

الريلاي دا فعلا حل مشاكل كتير من النوع دا ….أنك عايز تتحكم في circuit  من غير ما تشارك معاها أي فولت او تيار ….زي الزرار كدا….تدوس عليه يقفل الدايرة ….تسيبه يقطع الدايرة.

الريلاي دا عبارة عن coil  و سنة metal   …لما بتدخل كهربا على الcoil  …بيعمل حوليه و بيحرك السنة ال  metal  من normaly closed  لي normaly opened ..و بيقفل بيها الدايرة مع ال common  ….و لما بتفصل الكهربا عن ال  coil  السنة بترجع مكانها تاني عند ال normaly closed …و دي فكرتو ببساطه …..يعني انتا هتوصل الريلاي في نص لبدايره الي انتا عاوزها و هتخلي نحيه من الدايره عند ال normaly opened   و الناحيه التانيه من الدايره عند ال common .

images-5

لو حابب تعرف اكتر عن   relayو تاريخو:

( https://www.google.com.eg/url?sa=t&source=web&rct=j&url=https://en.m.wikipedia.org/wiki/Relay&ved=0CBkQFjAAahUKEwjg0JXZmPDHAhWG6xQKHUpEAew&usg=AFQjCNHaxuM5O0jltIayR5-ugOPaMNPEaQ )

كدا احنا بقا عندنا feedback من السنسور و عندنا  microcontroller   بيستقبل الfeedback  منو ….ناقص نوصل الحاجه ببعضها و نعمل ال code .

هنحتاج ترانزستو عشان الrelay  نفسو بيحتاج تيار كبير نسبيا عشان الcoil  …و الترانزستو هنا دوره مجرد switch زي ما الريلاي switch للمبة كدا .و هنحتاج مقاومه  1k للترانزستور …و المقاومه دي دورها انها تعمل limit  للتيار الي هيعدي في الbase  بتاع الترانزستور.هنحتاج diode  كمان يتوصل parallel  مع ال relay  …و دا دوره في الحياة انو لما تفصل الكهربا عن الريلاي  ….الmagnetic field  الي في coil   بيعمل كهربا عكسيه و دي ممكن تحرق components  في الدايره فالدايود بيخلي الكهربا ترجع و تتلاشى في ال coil .

hhh

. كدا دي الدايرة كاملة بالسنسور ة بكل حاجه,,,,,, ال No  دي اختصار ل   normaly opened  و ال  com  اختصار ل  common  و ال c   و c  دول بتوع الcoil  بتوع الريلاي….عند الترانزستور ال E  هيا ال emitter   و ال c  هيا ال  collector و ال b هيا ال base .كدا ناقص ال software ….. هتحتاج يكون عندك ال arduino ide  ….لو مش عندك تقدر تنزلو من هنا :

( https://www.arduino.cc/en/Main/Software )

الكود اهو :

////////****this code was made by : Abdelrahman Alaa****///////

int sensoread = 3; // attach the sensor to pin 3
int lamp = 13; // attach the lamp to pin 13
int timer; // this variable will include the time passed from a certain moment
int period; // this variable will include the the period from the certain moment to do an action

void setup(){
  pinMode(sensoread, INPUT); // setup pin 3(sensoread) as an input pin
  pinMode(     lamp,OUTPUT); // setup pin 13(lamp) as an output pin
}

void loop(){
  
 if(digitalRead(sensoread) == 1){// read the value of the sensor
  // if it is high then do th following
  
       timer = millis(); //from this moment,put the value of millis in the timer variable
       period = timer + 60000; // make the period bigger than timer variable by 60000 milliseconed

  while( period > timer ){ // as long as the period value bigger than timer value do the following
          
        digitalWrite(lamp,HIGH);// light the lamp 
        timer = millis(); // renew the value of the timer and put the value of millis in it
      if(digitalRead(sensoread) == 1){ // if thge sensor still high reset the period , and recount it and make it bigger than millis by 60000
        period = timer + 60000;} } }
 else{// if the sensor is low turn off the lamp
      digitalWrite(lamp,0);}
      }

 

شرح الكود :

احنا استخدمنا في الكود timer  عشان يعد الوقت الي هتفضل اللمبة شغالة فيه من بعد ما تحصل حركه في المكان ….في الاردوينو في  timer  بيعد الوقت من ساعت ما تشتغل بال milli seconed  و بتفضل تعد لغاية ما تعملها reset  او تطفيها …او لغايه حوالي 50 يوم لو سبتها شغالة.     =D…. و بتعمل reset  لنفسها تاني و بترجع تعد من الاول … ال timer  دا اسمو  milliis()  ……و في زيو  timer  تاني بس بيعد بال micro seconed  بس دا بيعمل reset   لنفسو بعد حوالي 70 دقيقه لو سبتو شغال .

ببساطه الكود بيعمل ايه ؟

Capture

كدا يبقى الحمد لله كل حاجه خلصت ….ممكن تعمل casing للحاجه بشكل حلو باستخدام الخشب او حتى كرتون و تعمل بيهم صندوق ….. ودا منظر لتغليف حلو بس طبعا دا مش معمول بالخشب.

.images-7