ساخت استراب لایت با رزبری پای + کد پایتون

ساختن استراب لایت با استفاده از رزبری پای و ترانزیستور

با استفاده از ترانزیستور میتوانیم LED های زیادی را کنترل کنیم. در این آموزش می خواهیم ساخت استراب لایت با رزبری پای را با کد پایتون بررسی کنیم.

 

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

  • LED های سفید (از 1 تا 20)
  • برد بورد
  • ترانزیستور PNP (2N2907)
  • 2 پوش باتن
  • کابل های جامپر
  • مقاومت (دو عدد یک کیلو اهم  و 22 اهم برای LED ها)

 

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

ساخت استراب لایت با رزبری پای پایتون

قدم 01: استفاده از ترانزیستور ها

یک LED معمولاً 20 میلی آمپر جریان میکشد. از آنجا که پین های GPIO نمی توانند جریان کافی را برای روشن کردن همزمان تعداد زیادی LED ارائه دهند، ما برای حل کردن این مشکل از ترانزیستور استفاده می کنیم. ترانزیستور 2N2907 می تواند 600میلی آمپر را از خود عبور دهد. که برای نیازهای ما کافی است. ترانزیستور PNP دارای سه پایه است: امیتر، بیس و کلکتور. در اینجا امیتر و بیس از طریق مقاومت یک کیلو اهمی به ترتیب به منبع 3.3 ولتی و یکی از پینهای GPIO متصل می شوند. این پین برای روشن و خاموش کردن ترانزیستور استفاده می شود. هنگامی که ولتاژ پین صفر ولت باشد، جریان می تواند عبور کند. و هنگامی که 3.3 ولت است، هیچ جریانی نمی تواند عبور کند. بنابراین این مدار یک مدار inverting میباشد: این بدان معناست که وقتی GPIO روی ولتاژ کمی است، ترانزیستور روشن است و LED ها نیز روشن می شوند. از آنجا که جریان عبوری از کلکتور ترانزیستور نسبت به بیس آن تقویت میشود، می خواهیم آن را با استفاده مقاومت محدود کنیم. سرانجام، پین کلکتور ترانزیستور به LED ها متصل می شود و در نهایت به زمین ختم می شود.

قدم02: مسیر مدار

هر مسیر LED، از طریق یک مقاومت 22 اهم برای محدود کردن جریان گذرنده از LED از ترانزیستور عبور می کند. و سپس به زمین می رود. با توجه به معادله مقاومت LED از آموزش قبلی، به دلیل اینکه LED های سفید دارای ولتاژ فوروارد درحدود 3 ولت و جریان 20میلی آمپر هستند. فقط به یک مقاومت کوچک نیاز داریم.

R = (POWER_RAIL – LED VOLTAGE) / LED CURRENT à

R = (3.3V – 3V) / 0.020

(که در اینجا 15 اهم است. به نزدیکترین مقدار عملی گرد شده است).

 

قدم 03: کارکردن با پوش باتن ها

برق همیشه راهی را انتخاب میکند که کمترین مقاومت را در پیش رویش داشته باشد. در نمودار مدار می بینید که به هرپایه از شستی ها یک پایه GPIO متصل است. پایه نیز از طریق مقاومت 1کیلو اهمی به زمین (صفر ولت) متصل می شود. این را مقاومت pull-down می نامند زیرا وقتی دکمه فشار داده نشود، سیگنال به زمین کشیده می شود. پایه ی دیگر به 3.3 ولت متصل است. با فشردن دکمه ، دو طرف دوباره به هم متصل می شوند. مقاومت کمتری در برابر پایه ی 3.3 ولتی وجود دارد و ورودی GPIO نیز زیاد است. که می توانیم آن را در کد خود تشخیص دهیم.

 

قدم 04: مدار را وصل کنید

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

 

قدم 05: تشخیص وقفه

کد این آموزش مشابه کد شمع در چندین مقاله ی قبل است، با یک تفاوت کلیدی: ما از وقفه ها استفاده می کنیم. عملکردهایی که باعث افزایش یا کاهش سرعت نور استراب لایت  می شوند. تنها زمانی فراخوانی میشوند که افزایش ولتاژ روی لبه ی پین های شستی ها تشخیص داده شود (انتقال از 0V به 3.3V). این کار، روش مناسبی برای کنترل فشارهای دکمه های شستی است بدون اینکه نیازی به بررسی مداوم آنها در حلقه اصلی داشته باشیم.

 

قدم06: سازه ی خود را آزمایش کنید

کد را ایجاد و ذخیره کنید. سپس آن را با استفاده از sudo python2 strobe.py آزمایش کنید. با فشردن دکمه سمت راست سرعت استرابلایت افزایش می یابد. با فشردن دکمه سمت چپ، سرعت آن کاهش خواهد یافت. توجه داشته باشید که چون تاخیر ایجاد شده دارای تغییرات اندکی است، باید دکمه ها را چندین بار فشار دهید. مثل همیشه، وقتی رزبری پای را روشن می کنید اسکریپت را با افزودن آن به rc.local شروع کنید:

sudo nano /etc/rc.local

خط زیر را (قبل از exit 0 ) اضافه کنید و سپس تغییرات را ذخیره کنید:

python2 /home/pi/strobe.py &

 

کد پایتون پروژه ساخت استراب لایت با رزبری پای

import RPi.GPIO as GPIO
import time

 

TRANSISTOR = 17
BTN_SPEED_UP = 27
BTN_SLOW_DOWN = 22
DELAY_CHANGE = 0.005

 

DELAY_MIN = 0.125
delay = 0.2
:()def setup

GPIO.setmode(GPIO.BCM)
GPIO.setup(TRANSISTOR, GPIO.OUT)
GPIO.setup(BTN_SPEED_UP, GPIO.IN)
GPIO.setup(BTN_SLOW_DOWN, GPIO.IN)

GPIO.add_event_detect(BTN_SPEED_UP, GPIO.RISING)

GPIO.add_event_detect(BTN_SPEED_UP, speed_up)
GPIO.add_event_detect(BTN_SLOW_DOWN, GPIO.RISING)

GPIO.add_event_detect(BTN_SLOW_DOWN, slow_down)

:def speed_up(channel)
global delay

delay = delay – DELAY_CHANGE
:if delay < DELAY_MIN
delay = DELAY_MIN
:def slow_down(channel)
global delay

delay = delay + DELAY_CHANGE
:()def loop

:try

:while True

GPIO.output(TRANSISTOR, False)
time.sleep(delay)

GPIO.output(TRANSISTOR, True)
time.sleep(delay)
:except keyboardInterrupt
pass
:finally
()GPIO.cleanup

()setup
()loop

هر سه شنبه با مقالات رزبری پای همراه توسکانیک باشید

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

منبع: مجله MagPi

 

کتاب راهنمای رسمی شروع کار با رزبری پای

 

آخرین مقالات

مقالات مرتبط