سه شنبه ها با رزبری پای: ساختن فانوس شمعی با PWM

ساختن فانوس شمعی با PWM رزبری پای

لوازم مورد نیاز برای ساختن فانوس شمعی با رزبری پای:

LED رنگی،بردبورد، کابل های جامپر نر به ماده، مقاومت (از 100 تا 330 اهم)

با استفاده از مدلاسیون pwm ، شمع سوسو زن را شبیه سازی کرده و فضایی رمانتیک ایجاد کنید…. با توسکانیک همراه باشید

این آموزش را میتوان به عنوان مقدمه ای مختصر برای معرفی پین های GPIO (ورودی وخروجی) روی رزبری پای و نحوه کنترل آنها در پایتون در نظر گرفت.  با استفاده از مولد اعداد تصادفی، برای ایجاد سوسو زن LED با وقفه های مختلف، روشنایی شمع مانند رمانتیکی را ایجاد خواهیم کرد. علاوه بر این، شدت روشنایی شمع نیز با استفاده از تکنیکی به نام PWM (مدولاسیون عرض پالس) متنوع خواهد بود، که به طور موثری درصد زمان روشن بودن LED را کنترل می کند. همچنین نگاهی به خروجی پین های اسیلوسکوپ خواهیم داشت ، به این ترتیب می توانیم نحوه ترجمه کد به سیگنال های الکتریکی را ببینیم.

 

قدم اول: یک مقاومت برای LED خود انتخاب کنید

مقاومت جریان عبوری از LED را محدود می کند. LED های رنگی مختلف محدودیت جریانی متفاوتی دارند ، بنابراین باید مشخصات را در صورت امکان بررسی کنید. مقاومتهای 100 اهم یا 220 اهم قطعاً کار خواهند کرد اگرچه ممکن است LED ها در نهایت کم نورتر از حد معمول باشند. با استفاده از رابطه ی زیر میتوانید مقدار مقاومت لازم را به دست آورید:

به عنوان مثال LED زرد به ولتاژی بین 2/2-8/1  نیاز دارد و جریان معمولی آن 20 میلی آمپر است ، بنابراین:

مقاومتی با مقداری بین 65 و 130 اهم ایده آل است ، اما مقدار  کمتر باعث روشنایی  بیشتر  LED خواهد شد.

 

قدم دوم: بردبورد را تنظیم کنید.

رزبرپای را از برق بکشید و اتصالات بردبورد را چک کنید. اطمینان حاصل کنید که از همان پین GPIO  گفته شده استفاده کرده اید، (زیرا در نسخه ی B+ فقط یک جفت از خروجیها  قادر به تعدیل عرض پالس هستند). از GPIO شماره 18، که به عنوان PCM_CLK / PWM0 توصیف می شود، برای PWM استفاده خواهیم کرد.

مسیر مدار، همانطور که در شکل ۱ نشان داده شده است، از پایه ی  GPIO 18 شروع شده، مقاومت و پایه ی مثبت LED را طی کرده و درنهایت ، پایه منفی LED به زمین متصل میشود. (پایه ی مثبت LED معمولاً بلندتر است).

شکل ۱

قدم سوم: کد نویسی را آغاز کنید!

برای ساختن فانوس شمعی با رزبری پای، بعد از سیم کشی پروژه، رزبری پای را روشن کرده و با استفاده از یک ویرایشگر (به انتخاب خود) کد نویسی را شروع کنید. ( باز کردن ترمینال و تایپ nano candle.py همین کار را انجام می دهد).

هنگامی که کتابخانه های مورد نیاز خود را وارد کردیم ، تابع setup برنامه را سازمان داده و PWM را شروع می کند. تابع flicker با فراخوانی تابع set_brightness ، شدت روشنایی زمان روشن بودن و سپس مدت زمان خاموش بودن LED را به صورت تصادفی مشخص میکند. سپس این تابع در حلقه ی بی نهایت while  قرار داده میشود.

شکل ۲ نمودار شدت نور تصادفی LED را نشان میدهد.

شکل ۲

قدم چهارم: آزمایش کد نوشته شده

از ویرایشگر خارج شده و کد را با تایپ sudo python2 candle.py در یک ترمینال اجرا کنید. بعد از آزمایش، با فشردن CTRL + C خارج شده و بعدا کد را هنگام بوت اجرا خواهیم کرد. به این ترتیب ، پای می تواند بدون سر و صدا اجرا شده و نیازی به تعامل با  کاربر ندارد. در ترمینال ، عبارت sudo nano /etc/rc.local را تایپ کنید ، سپس خط زیر را اضافه کنید: python2 /home/pi/candle.py & (اما مطمئن شوید که آن را قبل از exit 0 وارد کرده باشید). فراموش نکنید که تغییرات را ذخیره کنید.

& به این معنی است که اسکریپت به پس زمینه می رود و اجازه می دهد روند راه اندازی ادامه یابد. به چگونگی مورد نیاز نبودن sudo توجه کنید، زیرا rc.local به عنوان root اجرا می شود. برای تأیید عملکرد، پای را با reboot sudo راه اندازی مجدد کنید.

 

قدم پنجم: بسته بندی

اکنون که برنامه هنگام بوت آغاز می شود، می توانید آن را در یک نگهدارنده خوب به همراه شارژر تلفن قابل حمل به عنوان منبع تغذیه بسته بندی کنید. جا شمعی های زیادی وجود دارد که اگر در اینترنت جستجو کنید می توانید با کاغذ درست کنید یا طراحی کنید. کاغذ، به خصوص با سوراخ های زیاد  رویش، ایده آل است ، زیرا احتمالاً LED نور زیادی بیرون نمی دهد.

 

قدم ششم: ارائه ، ارائه ، ارائه

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

import RPi.GPIO as GPIO

import time

import random

 Set the PWM output we are using for the LED#

LED = 18

:()def setup

global pwm

GPIO uses broadcom numbering (GPIO numbers)#

GPIO.setmode(GPIO.BCM)

 Set the LED pin as an output#

GPIO.setup(LED, GPIO.OUT)

 Start PWM on the LED pin at 200Hz with a#

 100% duty cycle. At lower frequencies the LED#

 would flicker even when we wanted it on solidly#

pwm = GPIO.PWM(LED, 200)

 #Start at a brightness of 100%

pwm.start(100)

:def set_brightness(new_brightness)

 Sets brightness of the LED by changing duty cycle#

pwm.ChangeDutyCycle(new_brightness)

:()def flicker

 We want a random brightness between 0% and 100%#

# Then then we’ll hold it for a random time

# between 0.01 and 0.1 seconds to get a nice flicker

# effect. Play with these values to make the effect

# suit your liking

set_brightness(random.randrange(0, 100))

time.sleep(random.randrange(1, 10) * 0.01)

The wrapper around the flicker function makes sure the#

 GPIO hardware is cleaned up when the user presses CTRL-C#

:()def loop

:try

:while True

()flicker

:except KeyboardInterrupt

pass

:finally

()GPIO.cleanup

 setup the hardware#

()setup

 start the flickering#

()loop

گردآوری و ترجمه:صبا علیزاده

 

آخرین مقالات

مقالات مرتبط