• برچسب ها: رسپبری پای
  • 0.0/5 rating (0 votes)
  • شنبه, 23 مرداد 1395

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

رسپبری پای یک معماریARM است که برای مهندسان الکترونیک و علاقه مندان به رباتیک طراحی شده است. یکی از قابل اعتمادترین پلتفرم های توسعه یافته ای که میتوان به آن اشاره کرد، رسپبری پای است. با استفاده از پردازنده هایی با سرعت بالاتر و 1 GB RAM، رسپبری پای می تواند برای بسیاری از پروژه هایی با پروفایل بالاتر مانند پردازش تصویر و Internet Of Things (IOT) مورد استفاده قرار گیرد.
برای انجام پروژه های رسپبری پای به درکی جامع از نحوه ی عملکردهای اصلی و پایه ای آن نیاز است. به همین دلیل در اینجا تمام ویژگی های اساسی رسپبری پای آموزش داده شده است. در هر یک از آموزش ها در مورد یکی از عملکرد های رسپبری پای صحبت خواهد شد. در پایان این سری آموزش ها قادر خواهید بود تا پروژه های بزرگی بسازید. قبل از شروع به کار قسمت دوم آموزش کار با رسپبری پای (تنظیمات) را مشاهده کنید.
در آموزش های قبل در مورد LED چشمک زن و اتصال یک کلید به رسپبری پای صحبت شد. در این آموزش در مورد کار با PWM و نحوه ی گرفتن خروجی PWM با استفاده از رسپبری پای صحبت خواهد شد. PWM مخفف مدولاسیون عرض پالس است . PWM روشی است که برای گرفتن ولتاژ متغیر از یک منبع تغذیه ثابت استفاده می شود. در این آموزش ابتدا با استفاده از رسپبری پای سیگنال PWM تولید شده و سپس توسط تغییر نور LED متصل به رسپبری پای نشان داده خواهد شد.

مدولاسیون عرض پالس:

مدولاسیون عرض پالس با ATmega32 ، آردوینو Uno ، آی سی تایمر 555 و آردوینو Due نیز امکان پذیر است.
academy 950523 raspberry pi pwm tutorial 02
در شکل بالا، اگر کلید به صورت مداوم در یک دوره زمانی بسته باشد، LED در طول این مدت روشن خواهد بود. اگر سوئیچ در نیمه ی دوره بسته باشد و در نیمه ی بعدی باز باشد، LED تنها در نیمه ی اول روشن می ماند. نسبت روشن بودن LED به کل زمان، چرخه ی کار نامیده می شود که از طریق زیر محاسبه می شود.

Duty Cycle =Turn ON time/ (Turn ON time + Turn OFF time)
Duty Cycle = (0.5/ (0.5+0.5)) = 50%

بنابراین ولتاژ خروجی میانگین 50% ولتاژ باتری خواهد شد.
این مورد برای یک ثانیه است و می توان دید که LED برای نیمی از ثانیه خاموش و برای نیمه ی دیگر روشن می شود. اگر فرکانس خاموش و روشن شدن LED از یک بار در ثانیه به 50 بار در ثانیه افزایش یابد، چشم انسان دیگر قادر به تشخیص آن نخواهد بود. چشم سالم، LED را به عنوان چراغ روشنی می بیند که نیمی از روشنایی LED معمولی را داراست. بنابراین با کاهش بیشتر روشنایی LED کم نورتر به نظر می رسد.
رسپبری پای باید برای گرفتن یک PWM و اتصال LED که طبق بالا کار می کند، برنامه ریزی شود.
academy 950523 raspberry pi pwm tutorial 03
همانطور که در شکل بالا نشان داده شده است، 40 پین خروجی روی رسپبری پای وجود دارد. اما وقتی به تصویر دوم نگاه می کنید، می بینید که تنها 26 پین از این 40 پین می توانند برای برنامه ریزی استفاده شوند که پین های GPIO2 تا GPIO27 هستند. برای اطلاعات بیشتر در مورد پین های GPIO به قسمت چهارم آموزش رسپبری پای مراجعه کنید.

گام اول : قطعات مورد نیاز

در اینجا از رسپبری پای 2 مدل B+ با سیستم عامل Raspbian Jessie استفاده شده است. در مورد نرم افزارها و سخت افزارهای پایه ی مورد نیاز قبلا صحبت شد، می توانید به معرفی رسپبری پای مراجعه کنید. دیگر قطعات مورد نیاز:

  1. پین های اتصال
  2. مقاومت 220 اهم یا 1 کیلواهمی
  3. LED
  4. بردبورد

گام دوم: توضیح مدار

academy 950523 raspberry pi pwm tutorial 04

همانطور که در شکل نشان داده شده است LED باید به پین 35 ( GPIO19) و پین 39 (زمین) متصل شود. همانطور که قبلا گفته شد، نمی توان- از هر یک از این پین ها بیشتر از 15mA کشید - در نتیجه محدود کردن جریان از مقاومت 220 اهمی یا یک کیلو اهمی به صورت سری با LED استفاده می شود.

گام سوم: توضیح کار

بعد از انجام اتصالات، می توانید رسپبری پای را روشن کنید و برنامه ی پایتون را روی آن رایت کرده و اجرا کنید.
بهتر است در مورد چند دستور که در زبان برنامه نویسی پایتون استفاده می شود، صحبت شود.
تابع زیر قابلیت برنامه ریزی پین های GPIO رسپبری پای را به کاربرد می دهد، در این قسمت فایل GPIO را از کتابخانه وارد (import) کنید. همچنین نام " GPIO " را به "IO" تغییر دهید، بنابراین برای اشاره به پین های GPIO از کلمه ی IO استفاده خواهد شد.


import RPi.GPIO as IO
 

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


IO.setwarnings(False)
 

با استفاده از شماره ی پین روی برد یا شماره ی عملکرد آنها، می توان به پین های GPIO رسپبری پای اشاره کرد. در دیاگرام پین، شما پین 35 را روی برد GPIO19 میبینید. بنابراین در اینجا می توان با استفاده از عدد "35" یا "19" به پین اشاره کرد.


IO.setmode (IO.BCM)
 

GPIO19 یا پین 35 را به عنوان پین خروجی تنظیم کرده تا خروجی PWM را از این پین بگیرید.


IO.setup(19,IO.IN)
 

بعد از تنظیم پین به عنوان خروجی نیاز به تنظیم پین به عنوان پین خروجی PWM دارید.


p = IO.PWM(output channel , frequency of PWM signal)
 

دستور فوق برای تنظیم کانال و همچنین فرکانس سیگنال PWM مورد استفاده قرار میگیرد. در اینجا "p" متغیری است که می تواند هر چیز دیگری باشد. از GPIO19 به عنوان کانال خروجی PWM استفاده می کنیم. همچنین از آنجایی که نمی خواهیم چشمک زدن LED را ببینیم، فرکانس سیگنال PWM روی 100 انتخاب شده است.
دستور زیر برای آغاز تولید سیگنال PWM مورد استفاده قرار می گیرد. " DUTYCYCLE" برای تنظیم نرخ روشنایی است و 0 به این معنی است که LED برای 0% زمان روشن می ماند، 30 به معنی روشن ماندن LED در 30% زمان است و 100 به معنی روشن ماندن کامل LED خواهد بود.


p.start(DUTYCYCLE)
 

این دستور حلقه را برای 50 بار اجرا می کند و در آن x از 0 تا 49 افزایش پیدا می کند:


for x in range (50):
 

While 1:برای حلقه های بی نهایت استفاده می شود. با این دستور عبارات داخل حلقه به صورت مداوم اجرا خواهند شد.
با اجرای این برنامه ، چرخه ی وظیفه باعث افزایش سیگنال PWM می شود و بعد از رسیدن به 100% کاهش می یابد. با LED متصل شده به این پین، ابتدا روشنایی LED افزایش پیدا کرده و سپس کاهش می یابد.

کد :

 


import RPi.GPIO as IO          #calling header file which helps us use GPIO’s of PI
import time                            #calling time to provide delays in program
IO.setwarnings(False)           #do not show any warnings
IO.setmode (IO.BCM)         #we are programming the GPIO by BCM pin numbers. (PIN35 as ‘GPIO19’)
IO.setup(19,IO.OUT)           # initialize GPIO19 as an output.
p = IO.PWM(19,100)          #GPIO19 as PWM output, with 100Hz frequency
p.start(0)                              #generate PWM signal with 0% duty cycle
while 1:                               #execute loop forever
    for x in range (50):                          #execute loop for 50 times, x being incremented from 0 to 49.
        p.ChangeDutyCycle(x)               #change duty cycle for varying the brightness of LED.
        time.sleep(0.1)                           #sleep for 100m second
      
    for x in range (50):                         #execute loop for 50 times, x being incremented from 0 to 49.
        p.ChangeDutyCycle(50-x)        #change duty cycle for changing the brightness of LED.
        time.sleep(0.1)                          #sleep for 100m second
 

 

ویدیو:

 

منبع : سایت circuitdigest

افزودن نظر
  • مهمان - احمد

    گزارش

    بسیار عالی وقابل فهم بود' از زحماتی که بابت نگارش این آموزش کشیده اید صمیمانه سپاسگذارم و منتظر آموزشای بعدیتون هستم' لطفا اطلاعاتی در مورد ساخت پرینتر سه بعدی با رسپبری پای رو هم در حد توضیحات خلاصه بیان کنید' و اینکه سیستم عامل retropi دقیقا چیه?فقط مال بازیه یا محیط برنامه نویسی هم آیا داره' و اینکه نحوه ریختن بازیها به چه صورت هست? چون من قصد ساخت یک دستگاه arcade با برد رسپبری پایو دارم ' ممنون میشم راهنمایی بفرمایید

    0 لینک کوتاه: پاسخ
  • مهمان - منصور

    گزارش

    خیلی هم عااالی .

    0 لینک کوتاه: پاسخ