نوشتن برنامه PHP برای رزبری پای آسان است. در این نوشته به شما نشان میدهیم که یک برنامه ساده PHP برای کنترل یک LED بسازید.
زبان برنامه نویسی پایتون و اسکراچ محبوب ترین زبان ها برای نوشتن برنامه برای رزبری پای هستند. اما به دو لیل شاید شما علاقه داشته باشید تا از زبان PHP استفاده کنید. دلیل اول شما با PHP آشنا باشید و برنامه آماده داشته باشید که بخواهید روی رزبری پای اجرا کنید و یا علاقه مند باشید تا یک زبان برنامه نویسی جدید رو امتحان کنید.
قبل از شروع به کار و نوشتن برنامه PHP روی رزبری پای اول باید PHP را روی رزبری پای نصب کنیم در بیشتر مواقع باید PHP را همراه وب سروری مثل نصب کرد. برای نصب این آپاچی و PHP از دستورات زیر استفاده کنید.
1 |
sudo apt-get install apache2 php5 |
به جای استفاده از آپاچی می توانید از وب سرور های سبک تر مثل lighttpd استفاده کنید. که از طریق دستور زیر نصب می شود.
1 |
sudo apt-get install lighttpd php5 |
ایجاد راتباط مابین رزبری پای وPHP
ساده ترین راه برای برای ارتباط بین PHP و رزبری پای استفاده از تابع shell_exec()
است. این تابع به شما اجازه می دهد تا دستورات شل یا همان خط فرمان لینوکس را اجرا کنید. بنابر این مثل یک پل بین رزبری پای و PHP عمل می کند. در حالت ساده می توانید توسط shell_exec
اسکریپت پایتون را برای کنترل GPIO رزبری پای فراخوانی کنید.
راه حل دیگر استفاده از کتابخانه Wiring Pi برای کار با GPIO رزبری پای و استفاده از این کنابخانه توسط PHP و تابع shell_exec
است. به این منظور شما نیاز دارید تا Wiring Pi را اول روی رزبری پای نصب کنید. این کتابخانه به صورت بسته باینری در دسترس نیست پس شما باید آن را از منبع کامپایل و نصب کنید. خوشبختانه این کار نسبتا ساده است. با نصب برنامه Git کار را شروع می کینم:
1 |
sudo apt-get install git-core |
در ادامه Wiring Pi را با اجرای Git روی رزبری پای کپی می کنیم.
1 |
git clone git://git.drogon.net/wiringPi |
به پوشه wiringPi
می رویم و با دستور ./build
آن را کامپایل می کنیم.
1 |
cd wiringPi ./build |
برای این که مطمئن شویم Wiring Pi درست نصب و اجرا می شود از دستور gpio -v
را اجرا می کینم باید ورژن Wiring Pi و اطلاعات مختصری در مورد رزبری پای نمایش داده شود.
و با اجرای دستور gpio readall
دیاگرام و جرئیات GPIO رزبری پای نمایش داده می شود.
برای نمایش کاربرد Wiring Pi یک مثال ساده برای کنترل یک LED را دنبال می کنیم. led را به همراه مقاومت را به پایه 17 برد رزبری پای و زمین وصل کنید طبق شکل زیر ترمینال را باز کنید و با دستور cd به پوشه /var/www منتقل شوید. سپس توسط دستور sudo nano gpio.php فایل gpio.php را ایجاد کنید و کد زیر را در آن کپی و ذخیره کنید. به وسیله CNTRL + X
1 2 |
cd /var/www/ nano gpio.php |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<html> <head> <meta name="viewport" content="width=device-width" /> <title>LED Control</title> </head> <body> LED Control: <form method="get" action="gpio.php"> <input type="submit" value="ON" name="on"> <input type="submit" value="OFF" name="off"> </form> <?php $setmode17 = shell_exec("/usr/local/bin/gpio -g mode 17 out"); if(isset($_GET['on'])){ $gpio_on = shell_exec("/usr/local/bin/gpio -g write 17 1"); echo "LED is on"; } else if(isset($_GET['off'])){ $gpio_off = shell_exec("/usr/local/bin/gpio -g write 17 0"); echo "LED is off"; } ?> </body> </html> |
اتصال led به رزبری پای
کلید های ON و OFF این برنامه شامل فرم های HTML است وقتی شما یکی از کلید ها را فشار می دهید با توجه به عنوان کلید قسمتی از آدرس URL تغییر می کند. (gpio.php?on=ON
and gpio.php?off=OFF
) و پایه ۱۷ gpio از طرق PHP و دستور shell_exec کنترل می شود.برنامه سطر های ۱۴ تا ۲۱ مقدار کلید را از URL می خواند و توسط تابع shell_exec پین را روشن و خاموش می کند.
برای دسترسی به صفحه طراحی شده کافی است آدرس IP رزبری پای را همراه gpio.php\ وارد کنید به عنوان مثال
1 |
192.168.1.1/gpio.php |
برای بدست آوردن IP رزبری پای می توانید از دستور ifconfig در ترمینال استفاده کنید.
اگر دکمه ها کار نکرد به احتمال زیاد وب سرور اجازه اجرای دستورات شل لینوکس را ندارد. برای تصحیح این مورد دستور sudo visudo
را در ترمینال اجرا کنید. و خط زیر را به فایل sudoers
اضافه کنید.
1 |
www-data ALL=NOPASSWD: ALL |
همچنین مطمئن شوید که var/www/ متعلق به گروه کاربری www-data
باشد برای مطمئن شدن دستور زیر را اجرا کنید.
1 |
chown -R www-data:www-data /var/www |
استفاده از پروژه php-gpio
ما از تابع shell_exec
برای کنترل GPIO رزبری پای استفاده کردیم ولی این تنها راه نیست به عنوان مثال پروژه php-gpio یک کتابخانه PHP برای دسترسی به پین های GPIO رزبری پای است. برای استفاده از php-gpio از دستور زیر برای دریافت و نصب کتابخانه استفاده کنید.
1 |
wget http://getcomposer.org/composer.phar php composer.phar create-project --stability='dev'ronanguilloux/php-gpio |
php-gpio از تعداد کمی API ساده برای استفاده و تغییر وضعیت پین های GPIO رزبری پای اسفاده می کند. اسکریپت باید شامل کد های زیر باشد تا کتابخانه GPIO لود شود و GPIO آماده استفاده
1 2 3 4 |
require 'vendor/autoload.php'; use PhpGpio\Gpio; $gpio = new GPIO(); $gpio->setup(17, "out"); |
در این مثال در سطر آخر GPIO شماره 17 را به عنوان پین خروجی تنظیم کردیم برای کنترل GPIO به دو دستور زیر نیاز داریم
1 2 3 4 5 |
$gpio->output(17, 1) $gpio->output(17, 0) $gpio->unexportAll() |
عبارت اول وضعیت پین 17 را یک می کند یعنی led متصل به آن روشن می شود و عبارت دوم آن را صفر می کند و دستور سطر آخر وضعیت همه پین ها را ریست می کند. برنامه پایین یک برنامه ساده برای راه اندازی یک led چشمک زن به وسیله کتابخانه php-gpio است.
1 2 3 4 5 6 7 8 9 10 11 |
<?php require 'vendor/autoload.php'; use PhpGpio\Gpio; $gpio = new GPIO(); $gpio->setup(17, "out"); while (true){ $gpio->output(17, 1); sleep(1); $gpio->output(17, 0); sleep(1); } |
برای اجرای اسکریپت دستور زیر را در ترمینال اجرا کنید.
1 |
sudo php blinking_led_script.php |
اگر چه با کتابخانه php-gpio به راحتی می توان پایه های GPIO را با اسکرپیت PHP کنترل کرد ولی به یاد داشته باشید که این اسکریپت نیز خود باید به وسیله ی خط فرمان اجرا شود به عبارت دیگر شما نمی توانید آن را از صفحه وبی که به وسیله PHP سرور میزبانی شده اجرا کنید.
راه حل این مشکل ساده است از تابع shell_exec برای اجرای آن در صفحه وب کمک بگیرید.
1 2 |
shell_exec('sudo php path/to/php-gpio/\ blink_led.php > /dev/null 2> /dev/null &'); |
در این نوشته به صورت ساده به نحوه استفاده از php برای کنترل پایه ای GPIO رزبری پای پرداختیم اگر به برنامه نویسی PHP روی رزبری پای علاقه دارید این نوشته می تواند راهنمای شروع خوبی برای شما باشد.
ممنون از سایت خوبتون
ممنون از آموزشتون . فقط ذکر نکردید این مراحل داخل کدوم سیستم عامل انجام شده ؟