رزبری پای میکروپایتون Micropython پروژه رزبری پای

پروژه کنترل شدت نور محیط با میکروپایتون و رزبری پای پیکو

create-light-meter-with-bh1750-raspberry-pi-pico-and-micropython-digispark
نوشته شده توسط پریسا پوربلورچیان

سنجش پارامترهای محیطی نیازمند سنسورهای مختلفی است. یکی از سنسورها پرکاربرد تشخیص شدت نور محیط است. سلامت و پایش وضعیت گیاهان در گلخانه‌ها به کمک سنسورهای نوری انجام می‌شود. سنسور نوری Light جهت اندازه گیری شدت نور محیط طراحی و در مدل‌های مختلف عرضه شده است. سنسور سطح نور یا Light Level Sensor در سطح‌های مختلف مقادیر نور محیط را اندازه‌گیری کرده و به صورت پارامتر Lux ارسال می‌کند. در این آموزش این بار با زبان میکروپایتون و توسط رزبری پای پیکو سنسور را راه اندازی کرده و عدد لایت را بر واحد لوکس بر روی نمایشگر OLED دریافت خواهیم کرد. در ادامه پروژه شدت نور محیط با میکروپایتون با مرجع تخصصی میکروپایتون به زبان فارسی، دیجی اسپارک همراه باشید.

پروژه کنترل شدت نور محیط با میکروپایتون و رزبری پای پیکو - دیجی اسپارک

 


سنسور BH1750 شدت نور


سنسور BH1750 از خانواده سنسورهای فتو رزیستوری است. این سنسور شدت نور محیط را سنجیده و بر اساس پارامتر Lux به عنوان دیتا تبدیل می‌کند. مقادیر لوکس از ۰ تا ۶۵۵۳۵ واحد لوکس است. با سنسور BH1750 این مقادیر قابل اندازه گیری است. سنسور دارای ۴ پایه VCC, GND, SCL, SDA است. به تصویر زیر دقت کنید.

سنسور BH1750 شدت نور - دیجی اسپارک

معرفی پایه‌های سنسور BH1750

  • پایه VCC تغذیه سنسور است که بین ۲٫۴ تا ۳٫۶ ولت است.
  • پایه GND زمین است و به زمینGND میکروکنترلر متصل می‌شود.
  • پایه SCL پایه Serial Clock است و پالس کلاک را برای ارتباط I2C فراهم می‌کند.
  • پایه SDA پایه Serial Data است و جهت ارسال دیتا در رابط I2C استفاده می‌شود.
  • پایه ADDR پین آدرس است و برای زمانیکه بیش از دو ماژول متصل است جهت آدرس دهی استفاده می‌شود.
  • تعذیه: ۲٫۴ – ۳٫۶ ولت
  • مصرف جریان در کمترین حالت: ۰٫۱۲ میلی آمپر
  • رنج اندازه گیری: ۱ – ۶۵۵۳۵lx
  • رابط: I2C BUS
  • دقت اندازه گیری: +/-۲۰%
  • مبدل A/D برای تبدیل مقادیر آنالوگ به دیجیتال
  • تاثیر پذیری کم تابش IR

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

سنسور BH1750 شدت نور در پروژه میکروپایتون - دیجی اسپارک

 


نرم افزار Thonny IDE


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

نصب میکروپایتون Thonny در ویندوز

قبل از اتصال رزبری پای پیکو به سیستم کلید BOOTSEL را نگه داشته و پس از اتصال کابل MICRO USB و اتصال به سیستم دست خود را از کلید بردارید. با اینکار رزبری پای پیکو شناسایی شده و پنجره ی آن باز می‌شود.

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

در نرم افزار Thonny بر روی نوار سمت راست پایین صفحه کلیک کنید.

نرم افزار Thonny برد رزبری پای پیکو - دیجی اسپارک

 

سپس بر روی Configure Interpreter کلیک کنید.

تنظیمات نرم افزار Thonny برد رزبری پای پیکو - دیجی اسپارک

 

سپس پس از شناسایی رزبری پای پیکو، صفحه ی زیر باز شده و پکیج را نصب کنید.

 

حالا Thonny Python آماده برنامه نویسی برای رزبری پای پیکو است.

 


نصب درایور میکروپایتون BH1750


جهت نصب درایور BH1750 بر روی نرم افزار Thonny IDE باید به صورت دستی اقدام کنیم و مستقیم درایور را بر روی رزبری پای پیکو Raspberry Pi Pico ذخیره کنیم. جهت سهولت در ادامه درایور BH1750 قرار گرفته شده است. یک تب جدید در Thonny IDE باز کنید. کد را انتقال دهید. با نام BH1750.py در محل RASPBERRY PI PICO ذخیره کنید.

"""
Micropython BH1750 ambient light sensor driver.
"""

from utime import sleep_ms


class BH1750():
    """Micropython BH1750 ambient light sensor driver."""

    PWR_OFF = 0x00
    PWR_ON = 0x01
    RESET = 0x07

    # modes
    CONT_LOWRES = 0x13
    CONT_HIRES_1 = 0x10
    CONT_HIRES_2 = 0x11
    ONCE_HIRES_1 = 0x20
    ONCE_HIRES_2 = 0x21
    ONCE_LOWRES = 0x23

    # default addr=0x23 if addr pin floating or pulled to ground
    # addr=0x5c if addr pin pulled high
    def __init__(self, bus, addr=0x23):
        self.bus = bus
        self.addr = addr
        self.off()
        self.reset()

    def off(self):
        """Turn sensor off."""
        self.set_mode(self.PWR_OFF)

    def on(self):
        """Turn sensor on."""
        self.set_mode(self.PWR_ON)

    def reset(self):
        """Reset sensor, turn on first if required."""
        self.on()
        self.set_mode(self.RESET)

    def set_mode(self, mode):
        """Set sensor mode."""
        self.mode = mode
        self.bus.writeto(self.addr, bytes([self.mode]))

    def luminance(self, mode):
        """Sample luminance (in lux), using specified sensor mode."""
        # continuous modes
        if mode & 0x10 and mode != self.mode:
            self.set_mode(mode)
        # one shot modes
        if mode & 0x20:
            self.set_mode(mode)
        # earlier measurements return previous reading
        sleep_ms(24 if mode in (0x13, 0x23) else 180)
        data = self.bus.readfrom(self.addr, 2)
        factor = 2.0 if mode in (0x11, 0x21) else 1.0
        return (data[0]<<8 | data[1]) / (1.2 * factor)

 

نصب درایور میکروپایتون BH1750

 


نصب درایور میکروپایتون SSD1306


برای استفاده از سخت افزارها بایستی در ایتدا درایور آن ها برای میکروکنترلر نصب شود. این مورد کاملا وابسته به زبان برنامه نویسی مورد نظر و انتخاب نرم افزار است. در پروژه شدت نور محیط با میکروپایتون از زبان برنامه نویسی میکروپایتون و نرم افزار THONNY IDE برای نمایش دیتا در نمایشگر OLED استفاده می‌کنیم قدم اول برای معرفی نمایشگر OLED به نرم افزار THONNY IDE اضافه کردن درایور مورد نظر است. درایور نمایشگر OLED درایور SSD1306 است. به ترتیب زیر درایور را به نرم افزار و برد رزبری پای پیکو اضافه کنید.

نصب درایور میکروپایتون برای OLED در رزبری پای پیکو - دیجی اسپارک

 

  • در بخش درایورهای نمایشگر درایور SSD1306 را انتخاب کنید.

  •  پس از انتخاب درایور SSD1306، نرم افزار THONNY IDE را باز کنید.

کدنویسی میکروپایتون در Thonny برای OLED - دیجی اسپارک

 

  • درایور را کپی و در یک تب جدید در نرم افزار انتقال دهید. آن را با نام main.py در رزبری پای پیکو Raspberry Pi PICO ذخیره کنید.

انتقال درایور با نام main.py در رزبری پیکو - دیجی اسپارک

 

  • تا این مرحله درایور SSD1306 در برد رزبری پای پیکو تعریف و ذخیره شده است. حالا میتوانید یک برنامه جداگانه در یک تب جداگانه برای نمایشگر OLED بنویسید.

 

محدودیت در دسترسی کامل به این مجموعه آموزش

 

دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندس‌های دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید.

 

برای مطالعه کامل آموزش راه اندازی نمایشگر OLED با رزبری پای پیکو PICO و میکروپایتون کلیک کنید.

پروژه میکروپایتون رزبری پای با OLED و ماژول Lux متر - دیجی اسپارک

 


اتصالات پروژه شدت نور محیط با میکروپایتون


برای انچام شدت نور محیط با میکروپایتون اتصالات به GP هایی که از I2C پشتیبانی می‌کنند، نیاز داریم.

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

 

در این آموزش از پایه های ۱۷ و ۱۶ استفاده شده است که به ترتیب پایه SDA سنسور BH1750 و پایه SDA نمایشگر OLED به پایه GP16 متصل شده است. پایه SCL نمایشگر OLED و پایه SCL سنسور BH1750 به پایه GP17 متصل شده است.

پروژه کنترل شدت نور محیط با میکروپایتون و رزبری پای پیکو - دیجی اسپارک

 


کد میکروپایتون پروژه شدت نور محیط


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

 

محدودیت در دسترسی کامل به این مجموعه آموزش

 

دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندس‌های دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید.

 


تحلیل کد میکروپایتون


برای شروع کدنویسی به فراخوانی دستورات و کلاس ها نیاز داریم و از ماژول machine استفاده می‌کنیم. ماژول machine از چندین دستور برای استفاده سخت افزاری از بردها تشکیل شده است. اکثر توابع موجود در این ماژول امکان دست یابی مستقیم بدون محدودیت به بلوک های سخت افزاری را در سیستم برای ما فراهم می‌کند.

 

محدودیت در دسترسی کامل به این مجموعه آموزش

 

دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندس‌های دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید.

 

برای خواندن داده از سنسور از کلاس BH1750 استفاده می‌کنیم.

light = BH1750(i2c)

lux=light.luminance(BH1750.ONCE_HIRES_1)  ## Sample luminance in lux
    lux = str(round(lux, 1))

به همین ترتیب میتوانید این پروژه را با میکروپایتون اجرا کنید.

 



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

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

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

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

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

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

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

۲ دیدگاه