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

راه اندازی سنسور نوری فتوسل با رزبری پای پیکو Raspberry Pi Pico

running-ldr-light-sensor-with-raspberry-pi-pico-digispark
نوشته شده توسط پریسا پوربلورچیان

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

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

 


فتوسل Photocell


فتوسل یا LDR با قرار گرفتن در یک محیط کاملا تاریک مقاومت آن تا محدوده ۱ مگااهم می‌رسد. با تابش نور در مقابل سنسور مقاومت آن تا نزدیک به صفر افت پیدا می‌کند اما در شرایط نرمال تابش نور، مقاومت در کمترین حالت خود به ۸ تا ۲۰ کیلو می‌رسد. با ترکیب فتوسل با یک مقاومت استاتیک یک تقسیم ولتاژ ساخته و در نهایت یک ولتاژ متغیر ساخته می‌شود. مقدار عددی سنسور توسط مبدل آنالوگ به دیجیتال میکروکنترلر قابل خواندن است. فتوسل با نام دیگری به اسم LDR هم شناخته شده است و دارای دو ترمینال اسنت که با میزان شدت نور، مقاومت دو سر ترمینال افزایش و کاهش می‌یابد.

سنسور فتوسل LDR - دیجی اسپارک

 


استفاده از ADC رزبری پای پیکو


رابط ADC در RP2040 فاقد رفرنس است و به همین دلیل از تغذیه ۳٫۳ ولت داخلی تراشه استفاده می‌کند. در پیکو پایه ADC_AVDD از SMPS 3.3 ولت با استفاده از فیلتر R-C تغذیه می‌شود. ADC جریان زیادی در مدار مصرف میکند تا جایی که در صورت غیرفعال بودن حسگر دما تا حدود ۱۵۰ میلی آمپر جریان کشیده و به همین دلیل جریان ماسفت برابر ۱۵۰μA*200 = ~30mV خواهد بود. با استفاده از تغییر مقاومت بین پایه VREF و پایه ۳٫۳ ولت میتواند تا حدودی ماسفت و نویز ایجاد شده را کاهش دهد. برای استفاده از پایه های ADC کافیست از پین های GP26 و GP27 و GP28 استفاده کنید.

استفاده از ADC رزبری پای پیکو pico - دیجی اسپارک

 

ترتیب پایه های GP در رزبری پای پیکو به صورت زیر است.

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

 


اتصال فتوسل به رزبری پای پیکو


برای اتصال سنسور فتوسل به رزبری پای پیکو از پایه آنالوگ ADC استفاده می‌کنیم. پایه های ADC به ترتیب GP26 و GP27 و GP28 است. 

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

 

فتوسل دارای دو پایه است. تفاوتی بین دو پایه وجود ندارد. برای اتصال به میکروکنترلر به یک مقاومت ۱۰ کیلواهمی نیاز داریم. مقاومت بایستی به یک پایه سنسور فتوسل و از سمت دیگر به GND متصل شود. از اشتراک پایه فتوسل و پایه مقاومت به پایه ADC رزبری پای پیکو ( GP26) اتصال دهید. پس از انجام اتصالات، توسط کابل MICRO USB رزبری پای پیکو را به سیستم خود وصل کنید.

 


برنامه نویسی با THONNY IDE


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

نرم افزار THONNY IDE - دیجی اسپارک

 

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

برنامه نویسی با THONNY IDE - دیجی اسپارک

 

سپس بر روی Configure Interpreter کلیک کنید. سپس پس از شناسایی رزبری پای پیکو، صفحه ی زیر باز شده و پکیج را نصب کنید. حالا Thonny Python آماده برنامه نویسی برای رزبری پای پیکو است.

بخش Configure Interpreter در thonny IDE - دیجی اسپارک

 

در اولین قدم برای کدنویسی ماژول های مورد نیاز را فراخوانی می‌کنیم. در این برنامه با توجه به اینکه نیاز به استفاده از پایه های آنالوگ adc داریم، ماژول adc همراه با ماژول زمان را در برنامه تعریف می‌کنیم.

from machine import ADC, Pin
from time import sleep

 

در مرحله یعدی پایه ای که به سنسور فتوسل متصل است را به عنوان متغیر در برنامه تعریف می‌کنیم. سپس یک نام دلخواه برای متغیر انتخاب می‌کنیم. در این آموزش از پایه شماره ۲۶ یعنی Adc استفاده شده است.

photocellpin = 26

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

def functionname (parameters):
statments

 

از def برای تعریف تایع استفاده می‌کنیم. functionname نام تابعی است که میخواهید تعریف کنید. parameters لیست پارامترهایی است که تابع باید دریافت کند. در داخل تابع دستوراتی باید اجرا شود که با Statement مشخص شده است. کلاس ADC در پایتون که مبدل آنالوگ به دیجیتال است، به صورت زیر در برنامه تعریف می‌شود.

import machine

adc = machine.ADC(pin)   # create an ADC object acting on a pin
val = adc.read_u16()     # read a raw analog value in the range 0-65535

 

متد کلاس ADC در برنامه به صورت زیر است. رنج این بازه بین ۰- ۶۵۵۳۵ است.

ADC.read_u16()

تابع برای سنسور فتوسل به صورت زیر است.

def readLight(photoGP):
    photoResistor = ADC(Pin(26))

 

طبق متد ADC مقادیر دریافتی از سنسور فتوسل با رزبری پای در یک تابع ۱۶ بیتی به صورت زیر نوشته می‌شود.

    light = photoResistor.read_u16()

 

پس با توجه به اینکه خروجی ۱۶ بیتی و بین ۰ تا ۶۵۵۳۵ متغیر است، مقادیر بایستی به یک عدد درصد تبدیل شود.

light = round(light/65535*100,2)

    return light

 

تا این مرحله مقادیر لایت را از سنسور در برنامه دریافت کردیم. حال برای نمایش اعداد بایستی داده دریافتی راه به استرینگ STRING تبدیل کنیم.

while True:
    print("light: " + str(readLight(photocellpin)) +"%")
    sleep(1)

 

کد نهایی برنامه به صورت زیر است.

from machine import ADC, Pin
from time import sleep

photocellpin = 26

def readLight(photoGP):
    photoResistor = ADC(Pin(26))
        
    light = photoResistor.read_u16()
    
    light = round(light/65535*100,2)
    return light

while True:
    print("light: " + str(readLight(photocellpin)) +"%")
    sleep(1) 

 

برنامه نویسی با thonny IDE - دیجی اسپارک

 

برای اجرای برنامه بر روی کلید run کلیک کنید. سپس برنامه اجرا شده و در shell مقادیر دریافتی یعنی شدت نور دریافتی از محیط را بر حسب درصد نمایش میدهد.

نمایش خروجی سنسور آنالوگ LDR - دیجی اسپارک

 


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


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

فتوسل

مقاومت ۱۰ کیلو

برد بورد Breadboard

کابل فلت نری به نری

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

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

 

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

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

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

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

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

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

۹ دیدگاه