در این آموزش، درواقع، با تشخیص حضور فرد در اتاق توسط سنسور تشخیص حرکت PIR دوربین رسپبریپای شروع به فیلم گرفتن میکند. معرفی سنسور تشخیص حرکت PIR را میتوانید در دو آموزش "معرفی و نحوه راهاندازی سنسور تشخیص حرکت PIR : بخش اول" و "معرفی و نحوه راهاندازی سنسور تشخیص حرکت PIR : بخش دوم" مطالعه کنید. همچنین، راهاندازی این سنسور با برد رسپبریپای (رزبریپای) را میتوانید در آموزش "راهاندازی سنسور تشخیص حرکت با برد رسپبریپای | درس سیزدهم" دنبال کنید. بهعلاوه، برای مطالعه در رابطه با استفاده از دوربین رسپبریپای و راهاندازی اولیه آن، میتوانید به دو آموزش "شروع کار با دوربین رسپبریپای با زبان برنامهنویسی پایتون (قسمت اول)" و "شروع کار با دوربین رسپبریپای با زبان برنامهنویسی پایتون (قسمت دوم)" مراجعه نمایید.
قطعات موردنیاز
ماژول دوربین رسپبریپای |
1 عدد | |
برد رسپبری پای 3 تولید Raspberry Pi 3 model B RS |
1 عدد | |
سنسور تشخیص حرکت PIR | 1 عدد |
ماژول دوربین از بهترین لوازم جانبی رسپبریپای است که به کاربران اجازه عکس گرفتن و ضبط ویدئو باکیفیت full HD را میدهد. همچنین، این ماژول برای شما امکان دیدن و تصویربرداری در تاریکی را با استفاده از روشنایی اینفرارد فراهم میکند. اگرچه سنسور PIR به منبع توان 5V احتیاج دارد، ولی خروجی آن 3.3V بوده که با برد رسپبریپای سازگاری دارد، لذا میتواند بهطور مستقیم به ورودی GPIO متصل گردد.
اتصال سنسور تشخیص حرکت PIR به برد رسپبریپای
به همراه سنسور تشخیص حرکت PIR یک سیم سوکت دار وجود دارد. سوکت را مطابق شکل به سنسور PIR متصل کنید، سیم قرمز برای 5 ولت، سیم مشکی برای GND و سیم زرد را هم به GPIO 4 برد رسپبریپای وصل کنید. این خروجی سنسور، بهمحض اینکه سنسور حرکتی را تشخیص دهد یک ولتاژی را به این پین رسپبریپای میدهد.
پتانسیومترهایی که بر روی این سنسور تعبیهشدهاند و در شکل زیر نمایش داده شدهاند به این منظور استفاده میشود که آنها اجازه میدهند حساسیت و زمان تشخیص سنسور را تنظیم کنید. شما باید با تنظیم پتانسیومتر حساسیت، به حداکثر خود و پتانسیومتر زمان تا حداقل آن کار را آغاز کنید. اگر بخواهید، میتوانید بعداً آن را تغییر دهید.
اتصال ماژول دوربین رسپبریپای
قبل از روشن کردن رسپبریپای خود، ماژول دوربین آن را متصل کنید. برای اتصال و راهاندازی ماژول دوربین رسپبریپای به آموزش "شروع کار با دوربین رسپبریپای با زبان برنامهنویسی پایتون (قسمت اول)" مراجعه کنید.
آزمایش سنسور تشخیص حرکت PIR
در این مرحله از آموزش، قرار است تا چند خط برنامه در رسپبریپای بنویسیم تا بهمحض تشخیص حرکت، جمله “Motion detected” نمایش داده شود. برای این منظور برد رسپبریپای خود را روشن کرده و در محیط Python3 (IDLE) فایل جدیدی با نام parent-detector.py ذخیره کنید.
برنامه زیر بهمنظور فهماندن رسپبریپای که سنسور به پین GPIO 4 متصل شده است را بنویسید:
from gpiozero import MotionSensor
pir = MotionSensor (4)
حال، چند خط برنامه دیگر زیر را نیز بنویسید تا در صورت تشخیص حرکت توسط سنسور، در صفحهنمایش “Motion detected!” نشان داده شود.
pir.wait_for_motion()
print(“Motion detected!”)
برای یادگیری نحوه استفاده از دستور pir.wait_for_motion() به gpio zero مراجعه کنید.
برنامه را ذخیره کنید و F5 را فشار دهید تا برنامه اجرا شود. خواهید دید که جمله Motion detected! در صفحهنمایش نشان داده خواهد شد.
برای اجرای مداوم برنامه، آن را در یک حلقه بینهایت قرار دهید. برای این منظور از دستور زیر میتوانید در ابتدای برنامه خود استفاده کنید.
While True:
pir.wait_for_motion()
print(“Motion detected!”)
برای خارج شدن از برنامه نیز Ctrl+F6 را بزنید.
پیشنمایش دوربین رسپبریپای با سنسور تشخیص حرکت PIR
پیشنمایش دوربین رسپبریپای (رزبریپای) قبلاً بهطور کامل در آموزش "شروع کار با دوربین رسپبریپای با زبان برنامهنویسی پایتون (قسمت اول)" آورده شده است. در این آموزش قرار است تا با تشخیص حرکت توسط سنسور، پیشنمایش دوربین رسپبریپای اجرا شود. برای این منظور برنامه زیر را نوشته و ذخیره و با زدن دکمه F5 اجرا نمایید.
While True:
pir.wait_for_motion()
print(“Motion detected!”)
camera.sart_preview()
pir.wait_for_no_motion()
camera.stop_preview()
بنابراین، با این برنامه تا زمانی که سنسور حرکتی را تشخیص دهد پیشنمایش دوربین اجرا میماند و زمانی که دیگر تشخیص حرکتی رخ ندهد پیشنمایش دوربین متوقف خواهد شد.
ضبط ویدئو
در قسمت قبلی آموزش دیدیم که با تشخیص حرکت، پیشنمایش دوربین رسپبریپای فعال میشد. در این قسمت میخواهیم این فیلم را ذخیره کنیم تا بعداً هم قابلنمایش باشد. برای این منظور دستورات زیر را وارد نمایید:
While True:
filename = "intruder.h264"
pir.wait_for_motion()
print(“Motion detected!”)
camera.start_recording(filename)
pir.wait_for_no_motion()
camera.stop_ recording ()
خط اول این برنامه در داخل حلقه بینهایت، متغیری با نام intruder را ایجاد میکند که .h264 پسوند نوع فایل ویدئوی ضبطشده با رسپبریپای (رزبریپای) است. برنامه را ذخیره و برای اجرای آن F5 را بزنید. خواهید دید که فایلی با نام intruder.h264 هم در کنار فایل parent-detector.py ایجاد خواهد شد.
با اجرای این برنامه هرزمان که سنسور تشخیص حرکت، حرکتی را تشخیص دهد ویدئوی جدیدی ضبطشده و بر روی فایل قبلی ذخیره میشود. برای اینکه ویدئو را نمایش دهید کافی است تا یک پنجره ترمینال (terminal window) را با کلیک کردن روی آیکون مانیتور مشکی در نوار بازکنید. بهمنظور پخش ویدئو دستوری که در ادامه آمده است را تایپ کرده و Enter را بزنید:
omxplayer intruder.h264
ویدئو باید پخش شود. ممکن است درواقع با سرعتی سریعتر آنچه ضبطشده است پخش شود که به دلیل نرخ فریم سریعتر omxplayer است.
همانطور که گفتیم، با اجرای این برنامه هرزمان که سنسور تشخیص حرکت، حرکتی را تشخیص دهد ویدئوی جدیدی ضبطشده و بر روی فایل قبلی ذخیره میشود. اگر بخواهید ویدئوهای ضبطشده براثر تمامی حرکات را نگهدارید تا بعداً به همگی آنها دسترسی داشته باشید، آیا میتوانید یک برنامه برای نوشتن تاریخ و زمان فعلی خود بنویسید و آن را به نام فایل ویدئویی اضافه کنید؟ سپس، هر ویدیویی که ضبط میکنید یک نام فایل متفاوت خواهد داشت!
شما میتوانید LED قرمز را در برد دوربین غیرفعال کنید که بهطورمعمول هنگام شروع برنامه Python شما روشن میشود، آیا میتوانید برنامه مرتبط با آن را بنویسید؟
پاسخ این دو سؤال و همچنین، تصاویر و فیلمهای اجرای این پروژه را با ما به اشتراک بگذارید و پاسخ گوی سؤالات و پیشنهادهای شما عزیزان خواهیم بود.
ترجمه شده توسط تيم الکترونيک صنعت بازار | منبع: سايت raspberrypi.org
نظرات (2)