معرفی زبان برنامه نویسی Raspberry Pi به زبان ساده
همه چیز در مورد زبان برنامه نویسی Raspberry Pi
Raspberry Pi (رزبری پای) در اصل یک برد میکروکنترلر میباشد که قابل برنامهریزی است که دستورات را روی یک تراشه میگیرد و اجرا میکند. شما با برنامه نویسی Raspberry Pi روی این تراشه میتوانید رزبری پای را به هرچیزی که می خواهید تبدیل کنید.
Raspberry Pi در ساختار خود از تراشههای ARM استفاده میکند که از محصولات شرکت برادکام (Broadcom) میباشد. بردهای Raspberry Pi را میتوان یک رایانهی کوچک در نظر گرفت که در نمونههای جدید آن درگاههای ورودی و خروجی نظیر USB ,HDMI و … نیز قرار دادهاند.
بردهای Raspberry Pi
بردهای Raspberry Pi را می توان از طریق کابل HDMI به مانیتور و یا تلویزیون وصل کرد و حتی میتوان با استفاده از کابل اینترنت و ورودی شبکه به اینترنت وصل شد. با وصلشدن به اینترنت میتوان این برد را از راه دور نیز کنترل کرد و دستور داد و یا گزارش گرفت.
هر رایانه برای اینکه بتوان از آن استفاده کند و بین کاربر و آن ارتباط برقرار نماید، نیاز به سیستم عامل دارد که در مورد این رایانههای کوچک نیز مستثنی نیست و سیستم عاملهای زیادی برای آن طراحی و ارائه شدهاند که میتوان از آنها:
- آرچی لینوکس
- Open ELEC
- Pidora
- Rasbbmc
- RISC OS
- Rasbbian
- لینوکس
را نام برد که در نسخههای جدیدتر این بردها ویندوز 10 نیز قابل استفاده میباشد.
ایده اصلی Raspberry Pi برای ایجاد یک وسیلهای مقرون به صرفه بود و فقط شامل مفاهیم پایه باشد. همراه آن یک محیط برنامهنویسی و اتصالات سختافزاری که برای پروژههای الکترونیکی مورد استفاده قرار میگیرد.
طرز کار برنامه نویسی Raspberry Pi
Raspberry Pi یا (برنامه نویسی برد) بصورت Open Source یا متن باز کار میکند. این نمونه از رایانهها هارد دیسک ندارد اما با استفاده از حافظه SD، کار بوت و راه اندازی سیستم را انجام میدهند.
زبان Raspberry Pi دارای حجمی در حدود ۴ گیگابایت میباشد و سرعت پاسخگویی، کارایی و قابلیتهای خوبی دارد. یک شماتیک کلی از رزبری پای را در شکل زیر میتوانید مشاهده کنید.
برنامه نویسی Raspberry Pi با زبان C
در این قسمت ما برای برنامه نویسی رزبری پای قصد داریم با کمک سیستم عامل لینوکس این کار را انجام دهیم و برای دیدن تصویر رابط گرافیکی Raspberry Pi از طریق لپ تاپ با شبکه اترنت استفاده خواهیم کرد. دستورات در سیستم عامل لینوکس بسیار شبیه به (MS-DOS) میباشد که در لینوکس به این خط فرمان ترمینال (TUI) گفته میشود.
در لینوکسی که مخصوص Raspberry Pi طراحی شده است، به طور پیش فرض دو نرم افزار LX Terminal و Root Terminal وجود دارد که برای باز کردن آنها میتوانید با استفاده از موس و زدن دکمهی Applications که در گوشهی سمت چپ و پایین صفحه است استفاده کنید. (مطابق تصویر زیر)
نرم افزار LX Terminal و Root Terminal
همانطور که در تصویر بالا میبینید هر دو نرم افزار LX Terminal و Root Terminal در منو هستند و میتوانید استفاده کنید. بعد از باز کردن برنامه LX Terminal صفحه زیر را خواهید دید که باز میشود و دستورات داخل آن به این معنی هستند:
- Root: سطح دسترسی است که با آن در حال کار در لینوکس هستیم که کاربر Root مانند ادمین در ویندوز است و دسترسی نامحدود به همهی فایلها و تنظیمات در لینوکس است.
- Raspberry Pi: نام رایانه می باشد.
- ” /: “: فایلهای سیستمی است که در پوشه Root قرار دارند.
- Home: نام پوشهای است که اطلاعات هر کاربر لینوکس را میتوان در آن و در پوشهای به نام همان کاربر یافت.
- Pi: پوشهای را نشان می دهد که کاربر pi همه اطلاعاتش را در آن ذخیره می کند.
- Mkdir: دستور ساخت پوشهی جدید در لینوکس (بهتر است هر برنامه را در پوشه ای جدا ذخیره کنیم). این دستور یک پوشه جدید در هر مسیری که قرار دارید ایجاد میکند.
root@raspberrypi:/home/pi# mkdir raspberrypi_c
اگر بخواهید پوشههای موجود در مسیر را ببینید باید از دستور “Is” استفاده کنید و اگر از دستور “ls –color” استفاده کنید پوشهها و فایلهای موجود در هر مسیر با رنگهای مختلف نشان داده میشوند.
(پوشهها با رنگ آبی تیره، فایلهای تصویر با رنگ صورتی و فایلهای اجرایی با سبز، فایلهای زیپ با رنگ قرمز و فایلهای متنی با رنگ سفید خواهند بود)
root@raspberrypi:/home/pi# ls --color
bcm2835-1.26 c_program ocr_pi.png raspberrypi_c try.c
bcm2835-1.26.tar.gz Desktop python_games try
دستور cd در برنامه نویسی Raspberry Pi
با استفاده از دستور cd میتوانید وارد پوشه ها شوید:
root@raspberrypi:/home/pi# cd raspberrypi c/
root@raspberrypi:/home/pi/raspberrypi_c#
الان برای این که بتوانیم شروع به برنامه نویسی کنیم نیاز به یک ویرایشگر خواهیم داشت . برای برنامههای لینوکس یک ویرایشگر بسیار مشهور وجود دارد که برنامه نویسان سرتاسر جهان از آن استفاده میکنند. این ویرایشگر کد VIM میباشد که میتوانید آن را دانلود و روی Ubuntu نصب کنید. برای انجام این کار باید دستور زیر را در خط فرمان بنویسید.
root@raspberrypi:/home/pi/raspberrypi_c# apt-get install vim
الان که کار نصب برنامه تمام شده است برای شروع دستور زیر را تایپ کنید:
VIM <filename>
در دستور بالا به جای filename نام فایل را بنویسید. اگر فایل موجود بود که از آن استفاده میکند اما اگر فایل نبود لینوکس به طور خودکار فایل را ایجاد میکند. در این مثال ما فایل جدیدی با نام “Hello_world.c” را با استفاده از VIM ساختیم که برای انجام برنامه نویسی Raspberry Pi به زبان C آماده است.
یک ویژگی خوب در VIM استفاده از هایلات کننده در متن برنامه نویسی است که برای فعال کردن آن در دستور “syntax on” را وارد کنید. در عکس زیر میتوانید کد مربوط به دستور نوشتن “سلام دنیا” را ببینید.
<include <stdio.h#
()int main
}
;printf ("\nHello World\n")
;retrun 0
{
با تمام شدن کار نوشتن برنامه میتوانید با زدن دکمه Esc به حالت عادی برگردید و اگر خواستید کدهای نوشته شده را ببینید، میتوانید از دستور “set nu” استفاده کنید. جهت ذخیره کردن تغییرات اعمال شده در حالت فرمان باید کلید W را زده و enter کنید همچنین برای خروج از VIM باید کلید q را زده و enter را بزنید.
برنامه نویسی Raspberry Pi با پایتون
زبان برنامه نویسی پایتون امروزه کاربران زیادی دارد و روز به روز هم به تعداد آنها افزوده میشود، شاید برای شروع کمی سخت به نظر برسد ولی با شروع مرحله به مرحله این زبان جذاب خواهد شد. برای اینکه شروع به نوشتن برنامه با این زبان کنید نیاز به برد Raspberry pi دارید.
همچنین باید با پایههای ورودی و خروجی برد Raspberry pi نیز آشنا باشید و یاد بگیرید که چطور آن ها را با زبان پایتون و کتابخانه Gpiozero و Rpi.GPIO کنترل کنید.
معرفی پایه های GPIO رزبری پای
GPIO در اصل مخفف general-purpose input/output میباشد و بردهای رزبری پای 40 پایه دارند که میتوانید از آن ها برای ارتباط با دستگاهها و قطعات دیگر استفاده کنید.
شما اگر روی Raspberry piتان سیستم عامل Raspbian desktop را نصب کرده باشید، با وارد کردن دستور pinout در ترمینال میتوانید ترتیب پایهها را ببینید.
هر کدام از این پایهها قابلیتهای مختلفی دارند که میتوانید از آنها برای اتصال و ارتباط با قطعات جانبی استفاده کنید.
کتابخانه Gpiozero با پایتون
این کتابخانه با استفاده از زبان پایتون نوشته شده است و جهت کنترلکردن پایههای ورودی و خروجی رزبری پای می باشد.
در این کتابخانه برخی از قطعات از قبل تعریف شدهاند مثل کلید، LED های بارگراف، سنسور شدت نور و… که این امر باعث میشود کار کردن با آن آسانتر شود و به راحتی بتوانید قطعات را کنترل کنید.
این کتابخانه روی سیستم عامل رزبین به صورت پیش فرض نصب میباشد اما اگر از سیستم عامل دیگر استفاده میکنید میتوانید با استفاده از دستورات زیر آن را نصب کنید.:
- پایتون 3: sudo pip3 install gpiozero
- پایتون 2: sudo pip install gpiozero
بعد برای استفاده از این کتابخانه کافیست آن را به محیط برنامه نویسی پایتون Import کنید که از دو دستور زیر میتوانید استفاده کنید.
- روش اول:
from gpiozero import [name of class]
- روش دوم:
import gpiozero
در ادامه چند مورد از دستورات پایهای برای این کتابخانه را ارائه میکنیم که کاربرد زیادی دارند.
دستورات مرتبط با LED
تعریف پایهای که LED به آن متصل شده است:
led = LED(# of pin)
- روشن کردن: on()
- خاموش کردن: off()
- تغییر وضعیت: toggle() (عوض کردن وضعیت: اگر روشن باشد خاموش و اگر خاموش باشد، روشن میشود.)
- چشمک زدن: blink()
دستورات مرتبط با کلید
تعریف پایهای که کلید به آن متصل شده است:
button = Button(# of a pin)
صبر میکند تا کلید فشرده شود و سپس دستورات بعدی را انجام میدهد:
wait_for_press ()
میکند تا کلید رها شود و سپس دستورات بعدی را انجام میدهد:
wait_for_release ()
اگر کلید فشرده شده باشد مقدار True و در غیر این صورت False را برمیگرداند:
is_pressed
وقتی کلید فشرده شود، عملی که برای آن تعریف شده را انجام میدهد:
when_pressed
وقتی کلید رها شود، عملی که برای آن تعریف شده را انجام میدهد:
when_released
دستورات مرتبط با بارگراف
تعریف پایههایی که بارگراف به آنها متصل شدهاند:
graph = LEDBarGraph(# of pins)
روشن کردن تعدادی از LEDها
graph.value = value
دستورات مرتبط با بازر
تعریف پایهای که بازر به آن متصل شده است:
buzzer = Buzzer (# of a pin)
- روشن کردن: on()
- خاموش کردن: off()
- تغییر وضعیت: toggle()
دستورات مرتبط با RGB LED
تعریف پایههایی که RGB به آنها متصل شده است:
led = RGBLED(red=#, green=#, blue=#)
- روشن کردن رنگ قرمز: led.red = value
- روشن کردن رنگ سبز: led.green = value
- روشن کردن رنگ آبی: led.blue = value
- روشن کردن تمام رنگها: on()
- خاموش کردن تمام رنگها: off()
- تغییر وضعیت: toggle()
دستورات مرتبط با LDR
تعریف پایهای که سنسور شدت نور به آن متصل شده است:
sensor = LightSensor(# of a pin)
صبر میکند تا محیط تاریک شود و سپس دستورات بعدی را انجام میدهد:
wait_for_dark ()
صبر میکند تا محیط روشن شود و سپس دستورات بعدی را انجام میدهد:
wait_for_light ()
وقتی محیط تاریک باشد، عملی که برای آن تعریف شده را انجام میدهد:
light_detected
وقتی محیط تاریک باشد، عملی که برای آن تعریف شده را انجام میدهد:
when_dark
وقتی محیط روشن باشد، عملی که برای آن تعریف شده را انجام میدهد:
when_light
کتابخانه ی RPi.GPIO با پایتون
این کتابخانه هم روی سیستم عامل رزبین به صورت پیشفرض نصب شده است و شما برای استفاده از آن باید در محیط برنامه نویسی پایتون import کنید که با دستور زیر این کار انجام میشود:
import RPi.GPIO
چند مورد از دستورات پایهی این کتابخانه نیز در ادامه آورده شده است:
– استفاده از شماره ی BCM پایه ها:
GPIO.setmode(GPIO.BCM)
– تعریف پایه به عنوان ورودی:
GPIO.setup(# of pin, GPIO.IN)
– تعریف پایه به عنوان خروجی:
GPIO.setup(# of pin, GPIO.OUT)
– مقداردهی اولیه به خروجی:
GPIO.setup(# of pin, GPIO.OUT, initial=GPIO.HIGH)
خواندن مقدار پایهی ورودی:
GPIO.input(# of pin)
مقداردهی به پایهی خروجی:
GPIO.output(# of pin, state)
به مثالی از این نمونهها دقت کنید:
کلید
سیم بندی:
برای شروع سیمبندی ابتدا کلید را به پایه 2 وصل کنید، این پایه بصورت پیش فرض pull-up میباشد.
کدنویسی مربوط به کتابخانهی Gpiozero
هر بار که دکمه را فشار داده و رها میکنید ، یک بار کار را انجام میدهد:
این کار را با کتابخانهی RPi.GPIO نیز میتوانید به صورت زیر انجام دهید:
دکمه خاموش کردن w / Gpiozero
با فشار دادن و نگه داشتن دکمه به مدت 2 ثانیه، کامپیوتر شما خاموش میشود
مثالی دیگر:
روشن و خاموش کردن بازر با GPIO رزبری پای
شکل سیمبندی به صورت عکس زیر میباشد:
کد این مثال در کتابخانه Gpiozero به صورت زیر میباشد:
ساخت بازی با Raspberry Pi
هدف داشتن یک کنسول بازی که بتوان بازیهای چند کنسول دیگر را در آن اجرا کرد نیت بسیاری از شرکتها بود که امروزه به کمک برد Raspberry Pi و نرم افزار RetroPie میتوان این کار را انجام داد. میتوان با استفاده از این ابزار و نرم افزار یک کنسول طراحی کرد که بازیهای آتاری، سگا، میکرو، نینتندو و حتی پلیاستیشن را اجرا و بازی کرد.
برای راه اندازی و ساخت این کنسول همهکاره باید نرم افزار شبیهساز را روی یک مینی کامپیوتر مانند رزبری پای 3 نصب کرد. رزبری پای یک برد با قیمت تقریبا ارزان میباشد که برای پروژههای کوچک و سبک رایانه ای، آموزشی و سرگرمی مورد استفاده قرار میگیرد.
اما نرم افزارهای شبیهساز کنسول RetroPie نیز به صورت رایگان در اختیار کاربران قرار دارند که تحت سیستم عامل لینوکس کار میکنند.
نرم افزارهای شبیهساز کنسول با توجه به سخت افزار برنامه ریزی میشوند تا بتوانند بازیهای مورد نظر را دقیقا مشابه کنسول اصلی اجرا کنند. روش کار این شبیهساز به این صورت است که ابتدا لیست بازی را نمایش داده و بعد از انتخاب بازی متناسب با کنسول بازی آن را اجرا میکند.
مراحل راهاندازی کنسول بازی با برنامه نویسی Raspberry Pi
- خرید سخت افزار
- نصب نرم افزار
- اسمبل سخت افزار
- تنظیمات نرم افزار ( تنظیمات دسته بازی (سیم دار یا بی سیم) و تنظیمات زمان و صفحهی نمایش
- نصب بازی
کاربرد اسکرچ در برنامه نویسی Raspberry Pi
امروزه نسخه 3 اسکرچ با نام Scratch Desktop بر روی بردهای Raspberry Pi قابل نصب و اجرا میباشد. اسکرچ در اصل یک زبان برنامه نویسی Visual است و بهتر است بدانید Visual یک زبان برنامهنویسی به صورت گرافیکی، دیداری و یا بصری است، یعنی این که در اسکرچ ما دستورات را تایپ نمیکنیم و فقط کافی است دستورات را که به صورت تصویر هستند را جابجا کنیم و در زیر هم با ترتیب خاص قرار دهیم.
به این روش از برنامه نویسی یعنی استفاده از دستورات که به شکل بلوک هستند blockly programming گفته میشود.
با استفاده از اسکرچ که روی Raspberry Pi قابل نصب و اجرا شده است و حتی نسخه 3 Scratch که قابلیت فارسی را نیز دارد، میتوان دست به نوشتن برنامههای ساده و راحت برای سنین پایین زد.
با توجه به گرافیکی و جذاب بودن طراحی و همچین عدم نیاز به تایپ دستورات کار با این زبان برنامه نویسی روی برد های Raspberry Pi، بسیار جذاب خواهد بود. مخصوصا برای سنین پایینتر که یادگیری راحتتری هم بهدنبال خواهد داشت.
در این مقاله سعی کردیم در ارتباط با برنامه نویسی Raspberry Pi و کاربردها و آموزش برخی از موراد استفاده این بردهای پرکاربرد را برای شما عزیزان ارائه دهیم که امیدواریم مفید بوده باشد.
در کل برای شروع یادگیری کامپیوتر وجود و استفاده از این بردهای ارزان قیمت در مقایسه با کامپیوترهای معمولی بسیار مقرونبهصرفه میباشد، مخصوصا برای مناطق محروم و کم درآمد.
همچنین ترکیب و استفاده از قطعات مختلف بر روی Raspberry Pi و همچنین اقدام به برنامه نویسی باعث رشد و شکوفایی استعداد در زمینه الکترونیک و کامپیوتر خواهد بود.