رزبری پای پیکو قابلیت کدنویسی به زبان برنامه نویسی پایتون را دارد و به همین دلیل از Micropython و Circuitpython برای برنامه نویسی میکروکنترلرها استفاده میکنیم. راه اندازی سنسورهای کاربردی و محبوب مانند مادون قرمز PIR تشخیص حرکت انسان برای همه جذاب خواهد بود. در این آموزش روش کدنویسی به سبک پایتون و راه اندازی سنسور pir با رزبری پای پیکو را یاد خواهیم گرفت.
رزبری پای پیکو از ۴۰ پایه GPIO تشکیل شده است و به همین دلیل در کدنویسی با پایتون دست ما را بسیار باز گذاشته است. از پایه های GPIO در نقش ورودی و خروجی به عنوان ارسال کننده و دریافت کننده پیام میتوانیم استفاده کنیم. در این آموزش سنسور تشخیص حرکت PIR و یا هر سنسور مادون قرمزی که با سیگنال دیجیتال کار کرده و حساسیت آن قابل تنظیم است، میتوانیم پروژه ی تشخیص حرکت را اجرا کنیم. سنسور اینفرارد پسیو مادون قرمز PIR در بسیاری از پروژه ها برای تشخیص استفاده میشود. در این پروژه در صورت تشخیص شی توسط سنسور که به عنوان ورودی در برنامه تعریف شده است، در خروجی یک ال ای دی یا یک رله به صورت نمادین میتوانید استفاده کنید. پس از تشخیص سنسور فعال شده و خروجی ال ای دی روشن میشود.
رزبری پای پیکو Pico
رزبری پای Pico یک برد توسعه یافته بر پایه تراشه RP2040 است. RP2040 یک پردازنده ی ۳۲ بیتی dual ARM Cortex-M0+ Microcontroller است. تراشه از یک سیلیکون ۴۰nm با ابعاد ۷X7 میلی متری از پکیج QFN-56 SMD است. فرکانس پردازنده ۱۳۳MHz و حافظه SRAM برابر با ۲۶۴KB است. این تراشه فاقد حافظهی EEPROM و FLASH داخلی است و پس از ریست بوت لدر فایرمور را از حافظه فلش خارجی و یا از حافظه SRAM درگاه USB بارگیری میکند.
سنسور PIR INFRARED
تشخیص دهنده های حرکتی دارای یک چشم الکترونیک کوچک در ساختار خود هستند که اشعه اینفرارد را تشخیص میدهند یا به عبارتی امواج گرمایی که از اشیا تابش میکند را دریافت میکند. هدف اصلی سنسورهای تشخیص حرکت، ارسال فرمان است حال این فرمان میتواند چراغ باشد، زنگ آلارم و … در برخی از سیستم های امنتی در صورت فعال بودن سنسورهای حرکتی امکان ثبت و ضبط وقایع فراهم است. سنسورهای حرکتی حالت Stand Guard هستند و در مقابل حضور انسان، باز شدن درب و حتی پنجره ها واکنش نشان میدهند. الیته در این مورد میتوان بر اساس زاویه دید هر سنسور، جهت استفاده در مکان های مختلف انتخاب دقیق تری داشت. به عنوان مثال میتوانید سنسور حرکتی را در ورودی درب قرار داده و پس از تشخیص فرد در محل از طریق ایمیل، تلگرام و حتی اسمس به شما اطلاع دهد. یکی از مهم ترین دلیل استفاده از سنسورهای حرکتی صرفه جویی در مصرف انرژی است و تنها در زمانی که نیاز به آن داریم، فعال است. سنسورهای حرکتی دارای چند مدل مختلف است.
- مادون قرمز پسیو یا غیرفعال Passive Infrared
- آلتراوسونیک Ultrasonic
- لرزشی Vibration
- مایکرویو Microwave
در این آموزش ما از سنسور مادون قرمز پسیو یا همان PIR استفاده میکنیم که دارای مدل های مختلفی است. مانند HR501, HR502, PIR602 و …. مدل های دیگر که از طریق لینک زیر میتوانید بررسی و انتخاب کنید. خرید سنسور مادون قرمز
نصب Thonny Python
نرم افزار Thonny بر پایه پایتون و برای مبتدیان طراحی و توسعه داده شده است. این نرم افزار از پایتون Python 3.7 بهره برده و دیگر نیازی به نصب پایتون به صورت جداگانه نیست. نصب کنید و برنامه نویسی را آغاز کنید. برای نصب Thonny Python از لینک زیر استفاده کنید. دانلود ادیتور Thonny Python
گوشه ی تصویر پایین سمت راست را نگاه کنید. بایستی در این بخش پکیج MicroPython را برای Thonny نصب کنید. روش نصب Thonny Python قبلا آموزش داده شده است، کلیک کنید.
کدنویسی PIR با پایتون
برای کدنویسی به پین های ورودی و خروجی نیاز داریم. پس قدم اول فراخوانی کلاس PIN از کتابخانه ماشین MACHINE است.
from machine import Pin
برای ایجاد تاخیر DELAY در برنامه از دستور زیر استفاده کنید.
import utime
در مرحله بعدی یک آبجکت برای ال ای دی در کدها تعریف میکنیم. آبجکت تعریف شده با نام دلخواه ارتباط فیزیکی بین پایه gpio و کد را ایجاد میکند. برای ال ای یک خروجی در کدها تعریف میکنیم و برای ورودی یک پایه برای سنسور تشخیص حرکت در نظر میگیریم.
led = Pin(15, Pin.OUT) pir = Pin(16, Pin.IN, Pin.PULL_UP)
در قدم اول مطمئن شوید، LED در ابتدای پروژه خاموش است ، سپس سه ثانیه قبل از حرکت منتظر بمانید. با اضافه شدن دو خط زیر در برنامه از ایجاد FALSE TRIGGER در برنامه خودداری کرده و و به سنسور کمی زمان می دهیم تا قبل از استفاده ثابت شود.
led.low() utime.sleep(3)
در قدم بعدی برای نمایش آخرین وضعیت پایه ی GPIO برای سنسور PIR از PRINT استفاده میکنیم. دستور را در شرط حلقه با WHILE TRUE مینویسیم.
while True: print(pir.value())
از یک دستور شرطی برای مقادیر وضعیت تابع PIR VALUE در برنامه استفاده میکنیم. اگر مقدار Value صفر باشد، تشخیص حرکت صورت گرفته و سپس در پایتون شل نمایش میدهد.سپس ال ای دی روشن شده و برای ۵ ثانیه متوقف میشود.
if pir.value() == 0: print("LED On") led.high() utime.sleep(5)
در قدم آخر برای عدم تشخیص در برنامه شرط نویسی انجام میدهیم.برای اینکار از دستور else استفاده میکنیم. سپس برای خاموش شدن ال ای دی دستور اضافه میکنیم که به مدت ۲ ثانیه قطع میشود.
else: print("Waiting for movement") led.low() utime.sleep(0.2)
سپس برنامه را در Thonny Python ذخیره کرده و نوع میکروکنترلر و نوع کدنویسی را برای رزبری پای پیکو و Micropython انتخاب کنید. سپس یک اسم دلخواه برای برنامه انتخاب و اجرا کنید. کد کامل برنامه به صورت زیر است.
from machine import Pin import utime led = Pin(15, Pin.OUT) pir = Pin(16, Pin.IN, Pin.PULL_UP) led.low() utime.sleep(3) while True: print(pir.value()) if pir.value() == 0: print("LED On") led.high() utime.sleep(5) else: print("Waiting for movement") led.low() utime.sleep(0.2)
اتصال سنسور pir با رزبری پای Pico
برای اتصال سنسور تشخیص حرکت pir به رزبری پای پیکو از پایه های gpio استفاده میکنیم. تمامی پایه های سبز رنگ در تصویر زیر مجاز برای استفاده است.
در این پروژه از پایه های GP15, GP16 استفاده میکنیم.
- ال ای دی به پایه شماره ۱۵ متصل شده است.
- ال ای دی به پایه شماره ۱۶ متصل شده است.
- پایه های VCC به ۳٫۳ ولت OUT و پایه GND به GND متصل شده است.
وسایل مورد نیاز
رزبری پای پیکو Raspberry Pi Pico
دیگر آموزشهای مرتبط با سنسور PIR
معرفی سنسور PIR چگونگی کار و آموزش راه اندازی با برد آردوینو
آموزش ساخت چشمی راه پله با آردوینو و سنسور تشخیص حرکت PIR
طراحی و پیاده سازی سنسور راه پله هوشمند بدون آردوینو و برنامه نویسی
طراحی و پیاده سازی سیستم هشدار قطعی برق آسانسور در زمان حضور انسان
پروژهی سیستم تشخیص حرکت انسان با میکروپایتون و رزبری پای پیکو
آموزش ساخت دوربین مخفی امنیتی با برد ESP32-Cam و سنسور PIR
طراحی و پیاده سازی سیستم خوش آمدگویی به کمک آردوینو و DFPLAYER
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی از وبسایت دیجی اسپارک حمایت کنید.
سلام آیا همه ی پایه های GPIO رزبری زیرو برای متصل کردن pir مناسب است؟
و قسمت pull up در کد لازم است حتما استفاده شود؟
با سلام
از پایه های gp فقط باید استفاده کنید. برای پول آپ کردن در صورتیکه بخواهید ورودی در شروع برنامه پیشفرض فعال باشد، از آن میتوانید استفاده کنید.
سلام
آیا امکان استفاده از سنسور دیگری به غیر از pir برای این پروژه وجود دارد
با سلام
بله محدودیتی برای تست ماژول با این کد وجود ندارد.
سلام
سنسور من درست کار نمیکنه .و خطاا داره مدلش hcsr501 هست
با سلام
دقت داشته باشید سنسور دو مولتی ترن دارد یکی برای تنظیم حساسیت و دیگری برای تنظیم تاخیر در تشخیص مانع است.
سلام و عرض ادب
بنده وقتی که برنامه را اجرا میکنم ال ای دی به صورت مرتب با توجه به تاخیرها روشن و خاموش میشه در حالی که فاصله زیادی از سنسور دارم ولی همچنان در حال چشمک زدن هست، مشکل از چی میتونه باشه؟!
یک سوال دیگر اینکه این سنسور فقط حساس به حرکت انسان هست؟
ممنونم
با سلام
سنسور PIR نیاز به تنظیم دقیق دارد. دو مولتی ترن بر روی ماژول قرار دارد. یکی برای تنظیم حساسیت و دیگری برای تنظیم زمان تاخیر. با چرخش در جهت ساعتگرد دقت ها افزایش و با چرخش در جهت پادساعتگرد دقت اندازه گیری کاهش مییابد.
سلام
ماژول بنده از نوع PIR MINI SR505 بوده و مولتی ترن روی اون قرار نداره، با توجه به توضیحات شما باید کد برنامه تغییر کنه با در نظر گرفتن اینکه مولتی ترن نداره؟
با سلام
خیر نیازی به تغییر در کد نیست. برای ماژول مورد نظر فقط پایه سیگنال را متصل کنید.