آموزش رزبری پای رزبری پای پروژه رزبری پای

پروژه راه اندازی سنسور PIR با برد رزبری پای پیکو Pico و Thonny Python

pir-motion-detection-with-raspberry-pi-pico-and-thonny-python-digispark
نوشته شده توسط پریسا پوربلورچیان

رزبری پای پیکو قابلیت کدنویسی به زبان برنامه نویسی پایتون را دارد و به همین دلیل از Micropython و Circuitpython برای برنامه نویسی میکروکنترلرها استفاده می‌کنیم. راه اندازی سنسورهای کاربردی و محبوب مانند مادون قرمز PIR تشخیص حرکت انسان برای همه جذاب خواهد بود. در این آموزش روش کدنویسی به سبک پایتون و راه اندازی سنسور pir با رزبری پای پیکو را یاد خواهیم گرفت.

رزبری پای پیکو از ۴۰ پایه GPIO تشکیل شده است و به همین دلیل در کدنویسی با پایتون دست ما را بسیار باز گذاشته است. از پایه های GPIO در نقش ورودی و خروجی به عنوان ارسال کننده و دریافت کننده پیام میتوانیم استفاده کنیم. در این آموزش سنسور تشخیص حرکت PIR و یا هر سنسور مادون قرمزی که با سیگنال دیجیتال کار کرده و حساسیت آن قابل تنظیم است، میتوانیم پروژه ی تشخیص حرکت را اجرا کنیم. سنسور اینفرارد پسیو مادون قرمز PIR در بسیاری از پروژه ها برای تشخیص استفاده می‌شود. در این پروژه در صورت تشخیص شی توسط سنسور که به عنوان ورودی در برنامه تعریف شده است، در خروجی یک ال ای دی یا یک رله به صورت نمادین میتوانید استفاده کنید. پس از تشخیص سنسور فعال شده و خروجی ال ای دی روشن می‌شود.

پروژه راه اندازی سنسور PIR با برد رزبری پای پیکو Pico و Thonny Python - دیجی اسپارک

 


رزبری پای پیکو Pico


رزبری پای Pico یک برد توسعه یافته بر پایه تراشه RP2040 است. RP2040 یک پردازنده ی ۳۲ بیتی dual ARM Cortex-M0+ Microcontroller است. تراشه از یک سیلیکون ۴۰nm با ابعاد ۷X7 میلی متری از پکیج QFN-56 SMD است. فرکانس پردازنده ۱۳۳MHz و حافظه SRAM برابر با ۲۶۴KB است. این تراشه فاقد حافظه‌ی EEPROM و FLASH داخلی است و پس از ریست بوت لدر فایرمور را از حافظه فلش خارجی و یا از حافظه SRAM درگاه USB بارگیری می‌کند.

رزبری پای پیکو Pico - دیجی اسپارک

 


سنسور PIR INFRARED


تشخیص دهنده های حرکتی دارای یک چشم الکترونیک کوچک در ساختار خود هستند که اشعه اینفرارد را تشخیص میدهند یا به عبارتی امواج گرمایی که از اشیا تابش میکند را دریافت می‌کند. هدف اصلی سنسورهای تشخیص حرکت، ارسال فرمان است حال این فرمان میتواند چراغ باشد، زنگ آلارم و … در برخی از سیستم های امنتی در صورت فعال بودن سنسورهای حرکتی امکان ثبت و ضبط وقایع فراهم است. سنسورهای حرکتی حالت Stand Guard هستند و در مقابل حضور انسان، باز شدن درب و حتی پنجره ها واکنش نشان میدهند. الیته در این مورد میتوان بر اساس زاویه دید هر سنسور، جهت استفاده در مکان های مختلف انتخاب دقیق تری داشت. به عنوان مثال میتوانید سنسور حرکتی را در ورودی درب قرار داده و پس از تشخیص فرد در محل از طریق ایمیل، تلگرام و حتی اسمس به شما اطلاع دهد. یکی از مهم ترین دلیل استفاده از سنسورهای حرکتی صرفه جویی در مصرف انرژی است و تنها در زمانی که نیاز به آن داریم، فعال است. سنسورهای حرکتی دارای چند مدل مختلف است.

  • مادون قرمز پسیو یا غیرفعال Passive Infrared
  • آلتراوسونیک Ultrasonic
  • لرزشی Vibration
  • مایکرویو Microwave

در این آموزش ما از سنسور مادون قرمز پسیو یا همان PIR استفاده می‌کنیم که دارای مدل های مختلفی است. مانند HR501, HR502, PIR602 و …. مدل های دیگر که از طریق لینک زیر میتوانید بررسی و انتخاب کنید. خرید سنسور مادون قرمز

خرید سنسور تشخیص حرکت PIR Mini - دیجی اسپارک

 


نصب Thonny Python


نرم افزار Thonny بر پایه پایتون و برای مبتدیان طراحی و توسعه داده شده است. این نرم افزار از پایتون Python 3.7 بهره برده و دیگر نیازی به نصب پایتون به صورت جداگانه نیست. نصب کنید و برنامه نویسی را آغاز کنید. برای نصب Thonny Python از لینک زیر استفاده کنید. دانلود ادیتور Thonny Python

گوشه ی تصویر پایین سمت راست را نگاه کنید. بایستی در این بخش پکیج MicroPython را برای Thonny نصب کنید. روش نصب Thonny Python قبلا آموزش داده شده است، کلیک کنید.

نصب 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 استفاده می‌کنیم. تمامی پایه های سبز رنگ در تصویر زیر مجاز برای استفاده است.

اتصال سنسور pir به رزبری پای Pico - دیجی اسپارک

در این پروژه از پایه های GP15, GP16 استفاده می‌کنیم.

  •  ال ای دی به پایه شماره ۱۵ متصل شده است.
  • ال ای دی به پایه شماره ۱۶ متصل شده است.
  • پایه های VCC به ۳٫۳ ولت OUT و پایه GND به GND متصل شده است.

راه اندازی سنسور تشخیص حرکت PIR به برد رزبری پای پیکو Pico - دیجی اسپارک

 


وسایل مورد نیاز


رزبری پای پیکو Raspberry Pi Pico

سنسور تشخیص حرکت pir

کابل فلت

برد بورد

 وسایل لازم پروژه pir با رزبری پای پیکو - دیجی اسپارک

 

چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند می‌توانید از همین طریق اطلاع رسانی کنید.

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی از وبسایت دیجی اسپارک حمایت کنید.

 

درباره نویسنده

پریسا پوربلورچیان

تولید کننده محتوا / کارشناس IOT

زندگی یعنی پژوهش و فهمیدن چیزی جدید

تلاشم بر این است تجربیاتم در زمینه IOT‌ را به بهترین شکل با شما در میان بگذارم.

تبادل نظر و رفع عیب با ثبت دیدگاه

۱۰ دیدگاه

  • سلام آیا همه ی پایه های GPIO رزبری زیرو برای متصل کردن pir مناسب است؟
    و قسمت pull up در کد لازم است حتما استفاده شود؟

    • با سلام
      از پایه های gp فقط باید استفاده کنید. برای پول آپ کردن در صورتیکه بخواهید ورودی در شروع برنامه پیشفرض فعال باشد، از آن میتوانید استفاده کنید.

    • با سلام
      دقت داشته باشید سنسور دو مولتی ترن دارد یکی برای تنظیم حساسیت و دیگری برای تنظیم تاخیر در تشخیص مانع است.

  • سلام و عرض ادب
    بنده وقتی که برنامه را اجرا می‌کنم ال ای دی به صورت مرتب با توجه به تاخیر‌ها روشن و خاموش میشه در حالی که فاصله زیادی از سنسور دارم ولی همچنان در حال چشمک زدن هست، مشکل از چی میتونه باشه؟!
    یک سوال دیگر اینکه این سنسور فقط حساس به حرکت انسان هست؟
    ممنونم

    • با سلام
      سنسور PIR نیاز به تنظیم دقیق دارد. دو مولتی ترن بر روی ماژول قرار دارد. یکی برای تنظیم حساسیت و دیگری برای تنظیم زمان تاخیر. با چرخش در جهت ساعتگرد دقت ها افزایش و با چرخش در جهت پادساعتگرد دقت اندازه گیری کاهش می‌یابد.

      • سلام
        ماژول بنده از نوع PIR MINI SR505 بوده و مولتی ترن روی اون قرار نداره، با توجه به توضیحات شما باید کد برنامه تغییر کنه با در نظر گرفتن اینکه مولتی ترن نداره؟

        • با سلام
          خیر نیازی به تغییر در کد نیست. برای ماژول مورد نظر فقط پایه سیگنال را متصل کنید.