مقدمه
سنسورهای تشخیص حرکت (Motion Detector) از المانهای پرکاربرد الکترونیک محسوب میشوند، مخصوصا در زمینه سیستمهای هوشمند و امنیتی.
برخی از کاربردهای سنسور تشخیص حرکت: هشدار حضور کسی در منزل یا محل کارتان در زمانی که جای دیگری هستید، تشخیص حرکت در راهرو و راهپله برای کنترل هوشمند سیستم روشنایی، تشخیص عبور خودرو یا انسان در مکانهای امنیتی.
وظیفه اصلی این سنسورها، همانطور که از نامشان پیداست، تشخیص اجسام (و یا جاندار) متحرک است. برای این منظور، سنسورها و ماژولهای مختلفی با دقت و رنج اندازهگیریهای بسیار متفاوتی طراحی و تولید شدهاند. سیستمهای راداری که به طور گستردهای در صنایع کشتیرانی، هواپیمایی و نظامی کاربرد دارند نیز در واقع از این دسته از سنسورها به شمار میآیند.
در این مقاله به راهاندازی و شرح عملکرد ماژول HW-MS03 که میتواند حرکت (رادار) مایکروویو را تشخیص دهد خواهیم پرداخت. همچنین نحوه استفاده از آن در یک سیستم هوشمند را به شما آموزش خواهیمداد.
معرفی ماژول تشخیص حرکت مایکروویو HW-MS03
مایکرو ویو (MicroWave) چیست؟
مایکروویو، نوعی تابش الکترومغناطیسیت با طول موجی بین یک متر تا یک میلیمتر که متناسب است با رنج فرکانسی بین 300 مگاهرتز تا 300 گیگا هرتز.
در تصویر زیر، طیف کامل امواج الکترو مغناطیسی نشان داده شده که امواج مایکروویو هم بخشی از آن است، طول موج امواج مایکروویو از نور مرئی بیشتر و در نتیجه انرژی و فرکانس آن از نور مرئی کمتر است.
این دسته امواج الکترومغناطیسی در زمینه ارتباطات، علوم فضایی، حسگرهای از راه دور، رادار و البته در دستگاههای پخت و پز مورد استفاده قرار میگیرند.
در این مقاله، تمرکز ما بر روی کاربرد راداری مایکرویو است که در ماژول HW-MS03 بکار گرفته میشود.
رادار چیست؟
رادرا (RADAR) مخفف عبارت Radio Detection and Ranging به معنی “تشخیص و فاصله سنجی رادیویی” است. رادارها با ارسال یک موج الکترومغناطیسی و دریافت بازتاب آن از منبع بازتابدهنده، اطلاعاتی نظیر فاصله و سرعت جسم را محاسبه میکنند.
صنایع بزرگی مانند صنایع نظامی، دفاعی، کشتیرانی، هوایی و اکتشافی از این تکنولوژی بهره میبرند. شاید برایتان جالب باشد که بدانید دوربینهای راهور نیز با این سیستم کار میکنند.
ماژول رادار HW-MS03
ماژول HW-MS03 همانطور که از نامش پیداست یک سنسور راداری است با قابلیت تشخیص حرکت اجسام.
عملکرد آن به این صورت است که به محض تشخیص جسم متحرک در محدوده شناسایی سنسور، پایه خروجی آن فعال، و پس از مدت زمان مشخصی، اگر جسم متحرکی در محدوده نباشد، غیر فعال میشود. با اتصال خروجی این سنسور به میکرو یا اتصال مستقیم آن به مدارات کنترلی، همچون رله، میتوان از این آنها در کاربردهای مختلف خانگی، سیستمهای امنیتی، سیستمهای روشنایی و … استفاده نمود.
ولتاژ تغذیه این ماژول 3.7 تا 24 ولت، و ولتاژ پایه خروجی آن، در صورت اکتیو بودن، 3.3 ولت است.
فرکانس موج تولیدی این ماژول، 2.5 تا 5.8 گیگاهرتز و رنج شناسایی آن یک کره به شعاع 10 متر است.
مشخصات فنی ماژول تشخیص حرکت مایکروویو HW-MS03
- ولتاژ ورودی: 3.7 الی 24 ولت
- جریان ورودی: کوچکتر مساویِ 6 میلی آمپر
- ولتاژ خروجی: 3.3 ولت (در صورت اکتیو بودن)
- رنج اندازهگیری: 10 متر (تست شده در محیط بسته)
- زمان تاخیر خروجی: به صورت نرمال 2 ثانیه
- فرکانس کاری: 2.5 الی 5.8 گیگاهرتز
- ابعاد: 20*40 میلیمتر
معرفی پایههای (Pinout) ماژول تشخیص حرکت HW-MS03
ماژول تشخیص حرکت HW-MS03 تنها 3 پایه دارد :
- VCC: تغذیه ماژول (3.7 الی 24 ولت)
- GND: زمین
- OUT: پایه خروجی، 3.3 ولت (Active High)
لوازمی که به آن احتیاج دارید
قطعات مورد نیاز برای راهاندازی ماژول تشخیص حرکت HW-MS03
نرم افزارهای مورد نیاز
راهاندازی ماژول تشخیص حرکت HW-MS03 با آردوینو
گام اول: سیم بندی
مدار را مطابق شکل زیر ببندید.
مقاومت مورد استفاده 220 اهم است.
گام دوم: کد
کد زیر را در آردوینو کپی و اجرا کنید.
#define Radar_pin 2
#define LED_pin 4
volatile byte state = LOW; // variable to define the state of Radar_pin
void setup() {
Serial.begin(9600);
pinMode(Radar_pin,INPUT_PULLUP);
pinMode(LED_pin, OUTPUT);
attachInterrupt(digitalPinToInterrupt(Radar_pin), radar_change, CHANGE);
//due to any change on Radar_pin, radar_change Function will be called
}
void loop() {
digitalWrite(LED_pin, state);
/*
YOUR OTHER CODE
*/
}
void radar_change(){ // Interrupt ISR
state= digitalRead(Radar_pin);
if (state==1) Serial.println("Motion Detected");
else Serial.println("There is No Motion");
}
با استفاده از کد بالا، در صورت تشخیص حرکت توسط ماژولِ رادار ، الایدی روشن میشود و در زمانی که جسم متحرکی در محدوده نباشد این الایدی خاموش خواهد بود.
توضیح مختصری از کد بالا:
radar_change()
فراخوانده میشود.
attachInterrupt(digitalPinToInterrupt(Radar_pin), radar_change, CHANGE);
با فراخواندن تابع radar_change()
وضعیت پین شماره 2 به عنوان خروجی خوانده شده و در متغیر state
ذخیره میگردد (صفر یا یک). همچنین با چک کردن وضعیت ورودی، یک پیام در پورت سریال نیز نمایش داده میشود که نشان دهنده تشخیص یا عدم تشخیص حرکت است.
سپس با دستور digitalWrite(LED_pin, state);
در حلقه اصلی، پین شماره 4 که قبلا به عنوان خروجی برای پایه الایدی تعریف شده، متناسب با متغیر state
مقداردهی (فعال یا غیر فعال) میگردد. به یاد داشته باشید که در آردوینو UNO تنها میتوانیم برای پایههای شماره 2 و 4 روتین وقفه را فعال کنیم.
یک گام جلوتر
سعی کنید یک یا چند خروجی، مثل یک لامپ یا آژیر خطر، را با استفاده از این ماژول، برد آردوینو و ماژول رله، راهاندازی کنید.
سعی کنید بدون استفاده از میکروکنترلر، یک سیستم هشدار بسازید. (کافیست خروجی سنسور را به یک مدار ترانزیستور و یا رله بدهید.)