ساخت دزدگیر منزل !!!
شاید در نگاه اول عنوان این پروژه آردوینو از مبحث آموزش آردوینو یعنی ساخت یک دزدگیر منزل به کمک آردوینو برای برخی از افراد تعجب آور و دور از دسترس باشد و یا تا به حال ساخت دزدگیر اماکن را برای خود کاری دشوار و سخت تصور می کردند. اما ما با طرح این پروژه می خواهیم به شما بیاموزیم که چگونه خودتان می توانید یک دزدگیر کاربردی در خانه توسط برد آردوینو برنامه نویسی و بسازید.
با فراگیری این آموزش و ساخت پروژه، می توانید یک دستگاه دزدگیر کاملا مشابه با نمونه های موجود در بازار با قابلیت اتصال 4 سنسور تشخیص حرکت HC-SR501 و یا چشمی های آماده موجود در بازار داشته باشید. علاوه بر داشتن ویژگی دزدگیر در مدار پروژه با استفاده از آن می توانید دو وسیله برقی را نیز توسط ریموت کنترل خاموش و یا روشن کنید.
برای کار آفرینی آماده اید !!!
با کمی تحقیق در بازار می توانید بیابید که 99 درصد دستگاه های دزدگیر موجود در بازار که با قیمت های بسیار بالایی به فروش می رسند، از خارج از کشور وارد می شوند و تولید کنندهای بسیار اندکی هستند که در داخل کشور عزیزمان ایران، دست به تولید دزدگیرهای اماکن زده اند و البته افرادی که محصول تولیدی آن ها دارای کیفیت برتر بوده در این مسیر به موفقیت نیز رسیده اند.
یکی از اهداف بزرگ تیم فنی الکترونیک98 ارائه آموزش ها و پروژه های کاربردی است که شخص بتواند با فراگیری و توسعه آن ها وارد بازار کار شود و بتواند به عنوان یک کار آفرین کسب و کار خود را آغاز کند. در همین راستا در این پست قصد داریم تا نحوه ساخت یک دزدگیر اماکن ساده را آموزش دهیم. شما عزیزان می توانید با فراگیری این آموزش با نحوه عملکرد دزدگیرهای اماکن آشنا شوید و در صورت تمایل با توسعه آن قدم به عرصه تولید دزدگیرهای امکان بگذارید.
دانلود ویدئو با لینک مستقیم از سرورهای پرقدرت الکترونیک 98
معرفی ماژول سنسور تشخیص حرکت HC-SR501
اصلی ترین بخش یک دزدگیر منزل سنسورهای تشخیص حرکت آن یا PIR (Passive Infra Red) است که البته در بازار ایران به نام چشمی های دزدگیر نیز معروف هستند. وظیفه این سنسور، همانطورکه از نام آن مشخص است، تشخیص حرکت انسان است. سنسورهای تشخیص حرکت می توانند تا فاصله معینی حرکت یک جسم را تشخیص دهند و در نهایت با صفر و یا یک کردن یک پایه در خروجی خود آنرا به مدار دزدگیر اطلاع دهند.
یکی از سنسورهای معروف در زمینه آشکار سازی حرکات انسان، ماژول تشخیص حرکت HC-SR501 می باشد. ماژول تشخیص حرکت HC-SR501 می تواند در زاویه 120 درجه، حرکات موجود در یک محیط 3 الی حداکثر 7 متری را آشکار کند. عملیات آشکار سازی حرکت با استفاده از صفر و یک کردن پایه OUT در خروجی ماژول اعلام می شود. یعنی زمانیکه شخصی از مقابل سنسور عبور پیدا کند، پایه ای به نام OUT در خروجی ماژول ولتاژ مثبت 3/3 ولت می گیرد. همچنین لازم به ذکر است ولتاژ تغذیه این ماژول بین 5 الی حداکثر 20 ولت DC است.
قطعات مورد نیاز برای ساخت دزدگیر منزل با برد آردوینو
لیست قطعات مورد نیاز
برد آردوینو NANO با میکروکنترلر Atmega328 | 1 عدد |
ماژول تشخیص حرکت اجسام مدل HC-SR501 با لنز متوسط | 4 عدد |
رگولاتور ولتاژ 5 ولت L7805 | 1 عدد |
آی سی ULN2804A مدل DIP اورجینال | 1 عدد |
آی سی دیکودر PT2272-M4 مدل DIP | 1 عدد |
ماژول گیرنده 315MHz مناسب ریموت کنترل های کدفیکس | 1 عدد |
ریموت کنترل کدفیکس 4 کانال 315MHz مگاهرتز | 1 عدد |
سوکت آی سی 18 پایه مدل معمولی | 2 عدد |
دیود 1N4007 | 5 عدد |
مقاومت 1 کیلو اهم با توان 0.25 وات و تلرانس 5 درصد | 6 عدد |
مقاومت 4.7 کیلو اهم با توان 0.25 وات و تلرانس 1 درصد | 4 عدد |
مقاومت 330 اهم با توان 0.25 وات و تلرانس 1 درصد | 4 عدد |
مقاومت 1 مگا اهم با توان 0.25 وات و تلرانس 1 درصد | 1 عدد |
لامپ LED سبز سایز 5mm میلی متر مدل مات | 7 عدد |
خازن الکترولیتی 1000uf میکروفاراد 16 ولت | 2 عدد |
خازن عدسی 100nF نانوفاراد | 1 عدد |
رله 12V ولت معمولی تک کنتاکت با جریان 10 آمپر | 3 عدد |
دیپ سوئیچ 8 کاناله معمولی | 1 عدد |
ترمینال پیچی 2 پین مدل KF300 رنگ آبی | 2 عدد |
ترمینال پیچی 3 پین مدل KF300 رنگ آبی | 2 عدد |
پین هدر نری صاف 1x40 با ارتفاع 11 میلیمتر - مشکی | 1 عدد |
پین هدر مادگی صاف 1x40 با فاصله پایه 2.54 میلیمتر - مشکی | 1 عدد |
آداپتور 12V ولت 2A آمپر مدل بین راهی ساخت ایران | 1 عدد |
بازر 12 ولتی با اسیلاتور داخلی | 1 عدد |
نقشه شماتیک پروژه
نقشه مدار چاپی (PCB) ساخت دزدگیر منزل با ماژول تشخیص حرکت PIR و برد آردوینو
برنامه برد آردوینو در نرم افزار آردوینو
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 |
//***************************************** //Programmer = Farhad Akbari //Email = ofogh.ideh@yahoo.com //Website = www.electronics98.com //Application = www.electronics98.com/app //*****************************************Config Output PIN const int pin_rly_alarm = 2; const int pin_rly1 = 3; const int pin_rly2 = 4; const int pin_led_zone1 = A1; const int pin_led_zone2 = A2; const int pin_led_zone3 = A3; const int pin_led_zone4 = A4; //*****************************************Config Input PIN const int pin_remote_rly2 = 5; const int pin_remote_unLock = 6; const int pin_remote_rly1 = 7; const int pin_remote_Lock = 8; const int pin_zone1 = 12; const int pin_zone2 = 11; const int pin_zone3 = 10; const int pin_zone4 = 9; //*****************************************Basic Settings Alarm long time_sensor = 60000;//Milli second long time_alarm = 300000;//Milli second //*****************************************Config variable boolean key = 0; boolean error = 0; boolean alarm = 0; boolean status_rly1 = 0; boolean status_rly2 = 0; boolean start_alarm = 0; unsigned long start_time = 0; unsigned long currentMillis = 0; //*****************************************void setup() void setup() { pinMode(pin_rly_alarm, OUTPUT); pinMode(pin_rly1, OUTPUT); pinMode(pin_rly2, OUTPUT); pinMode(pin_led_zone1, OUTPUT); pinMode(pin_led_zone2, OUTPUT); pinMode(pin_led_zone3, OUTPUT); pinMode(pin_led_zone4, OUTPUT); pinMode(pin_remote_rly2, INPUT); pinMode(pin_remote_unLock, INPUT); pinMode(pin_remote_rly1, INPUT); pinMode(pin_remote_Lock, INPUT); pinMode(pin_zone1, INPUT); pinMode(pin_zone2, INPUT); pinMode(pin_zone3, INPUT); pinMode(pin_zone4, INPUT); delay (2000); } //*****************************************void loop() void loop() { Relay_control(); Zone_control(); Alarm_control(); Error_control(); } //*****************************************void Relay_control() void Relay_control() { if (digitalRead(pin_remote_rly1) == 1 && key == 0) { key = 1; if (status_rly1 == 0) { status_rly1 = 1; digitalWrite(pin_rly1, HIGH); } else { status_rly1 = 0; digitalWrite(pin_rly1, LOW); } } if (digitalRead(pin_remote_rly2) == 1 && key == 0) { key = 1; if (status_rly2 == 0) { status_rly2 = 1; digitalWrite(pin_rly2, HIGH); } else { status_rly2 = 0; digitalWrite(pin_rly2, LOW); } } if (digitalRead(pin_remote_rly1) == 0 && digitalRead(pin_remote_rly2) == 0 && digitalRead(pin_remote_unLock) == 0 && digitalRead(pin_remote_Lock) == 0 && key == 1) { key = 0; } } //*****************************************Zone_control() void Zone_control() { Led_control(pin_zone1 , pin_led_zone1); Led_control(pin_zone2 , pin_led_zone2); Led_control(pin_zone3 , pin_led_zone3); Led_control(pin_zone4 , pin_led_zone4); } //*****************************************void Led_control() void Led_control(int pin_name_zone , int pin_name_led) { if (digitalRead(pin_name_zone) == 1) { digitalWrite(pin_name_led, LOW); if (alarm == 1 && error == 0) { start_time = millis() + time_alarm; error = 1; } } else if (alarm == 0) { digitalWrite(pin_name_led, HIGH); } } //*****************************************void Alarm_control() void Alarm_control() { if (digitalRead(pin_remote_Lock) == 1 && key == 0) { key = 1; if (error == 1) { digitalWrite(pin_rly_alarm, LOW); delay(200); } start_alarm = 1; alarm = 0; error = 0; start_time = millis() + time_sensor; digitalWrite(pin_rly_alarm, HIGH); delay(200); digitalWrite(pin_rly_alarm, LOW); } if (digitalRead(pin_remote_unLock) == 1 && key == 0) { key = 1; if (error == 1) { digitalWrite(pin_rly_alarm, LOW); delay(200); } start_alarm = 0; start_time = 0; alarm = 0; error = 0; digitalWrite(pin_rly_alarm, HIGH); delay(100); digitalWrite(pin_rly_alarm, LOW); delay(50); digitalWrite(pin_rly_alarm, HIGH); delay(100); digitalWrite(pin_rly_alarm, LOW); } if (start_alarm == 1 && alarm == 0) { currentMillis = millis(); if (currentMillis > start_time) { alarm = 1; } } } //*****************************************void Error_control() void Error_control() { if (error == 1) { digitalWrite(pin_rly_alarm, HIGH); currentMillis = millis(); if (currentMillis > start_time) { error = 0; digitalWrite(pin_rly_alarm, LOW); } } } |
با سلام تمام قطعات بجز اردینو رو موجود دارید؟و بفرمایید چند میشه ممنون مهندس جان
با سلام و احترام
خیلی ممنون از لطف و محبت شما.
لیست قطعات به صورت کامل در توضیحات درج شده است برای استعلام قیمت تنها کافیست لیست قطعات را از طریق اینترنت در فروشگاه های اینترنتی جستجو کنید.
سلام وقت بخیر
یه چند تا سوال داشتم ببخشید ماژول گیرنده 2 تا پایه خروجی دیتا داره جفتش باید به ایسی دیکودر وصل شه یه یکیش بعد ببخشید من اون مقاومت توی ریموت که گفتید مقدارش باید عوض بشه رو نمی دونم کجای ریموت باید بذارم ؟
با سلام و احترام
دو پایه مربوط به دیتا در ماژول گیرنده مشترک هستند و فرقی نمی کند از کدام استفاده کنید.
برای مقاومت مربوط به تراشه ریموت کنترل نیز ابتدا، ریموت کنترل خود را باز کنید و تراشه PT2262 را در آن پیدا کنید، سپس بررسی کنید که مقاومت متصل به پایه 15 و 16 این تراشه دارای چه مقدار اهمی است، سپس مقاومت R11 در نقشه شماتیک دزدگیر را نیز به همان مقدار تغییر دهید.
سلام برد اردوینو نانو کدام مدل را تهیه کنیم
با سلام و احترام
پیشنهاد می کنیم برد Arduino NANO R3 با درایور FT232 را تهیه کنید.
سلام وقت بخیر
بسیار ممنون از آموزش ها…
با سلام و احترام
خیلی ممنون از لطف و محبت شما
سلام وقت بخیر
این کد رو با تغییر شماره پایه ها میخوام روی nodemcu آپلود کنم !
اما در قسمت لوپ کد ارور میده Relay_control();
Zone_control();
Alarm_control();
Error_control();
در آردوینو مشکلی نداره اما برای nodemcu اینها رو نمیشناسه و نیاز به معرفی قبل از حلقه لوپ داره
اگر مقدوره راهنمایی بفرمایید
قسمت لوپ رو به انتهای کد انتقال دادم و خطای کد رفع شد
قسمت رله ها و رله آژیر و led زونها به چه صورت active high یا Low هستند؟