رزبری پای - Raspberry PIمطالب علمی

زبان برنامه نویسی PHP و رزبری پای

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

زبان برنامه نویسی پایتون و اسکراچ محبوب ترین زبان ها برای نوشتن برنامه برای رزبری پای هستند. اما به دو لیل شاید شما علاقه داشته باشید تا از زبان PHP استفاده کنید. دلیل اول شما با PHP آشنا باشید و برنامه آماده داشته باشید که بخواهید روی رزبری پای اجرا کنید و یا علاقه مند باشید تا یک زبان برنامه نویسی جدید رو امتحان کنید.

قبل از شروع به کار و نوشتن برنامه PHP روی رزبری پای اول باید PHP را روی رزبری پای نصب کنیم در بیشتر مواقع باید PHP را همراه وب سروری مثل نصب کرد. برای نصب این آپاچی و PHP از دستورات زیر استفاده کنید.

sudo apt-get install apache2 php5

به جای استفاده از آپاچی می توانید از وب سرور های سبک تر مثل lighttpd استفاده کنید. که از طریق دستور زیر نصب می شود.

sudo apt-get install lighttpd php5

ایجاد راتباط مابین رزبری پای وPHP

ساده ترین راه برای برای ارتباط بین PHP و رزبری پای استفاده از تابع shell_exec() است. این تابع به شما اجازه می دهد تا دستورات شل یا همان خط فرمان لینوکس را اجرا کنید. بنابر این مثل یک پل بین رزبری پای و PHP عمل می کند. در حالت ساده می توانید توسط shell_exec اسکریپت پایتون را برای کنترل GPIO رزبری پای فراخوانی کنید.

راه حل دیگر استفاده از کتابخانه Wiring Pi برای کار با GPIO رزبری پای و استفاده از این کنابخانه توسط PHP و تابع shell_exec است. به این منظور شما نیاز دارید تا Wiring Pi را اول روی رزبری پای نصب کنید. این کتابخانه به صورت بسته باینری در دسترس نیست پس شما باید آن را از منبع کامپایل و نصب کنید. خوشبختانه این کار نسبتا ساده است. با نصب برنامه Git کار را شروع می کینم:

sudo apt-get install git-core

در ادامه Wiring Pi را با اجرای Git روی رزبری پای کپی می کنیم.

git clone git://git.drogon.net/wiringPi

به پوشه wiringPi می رویم و با دستور ./build آن را کامپایل می کنیم.

cd wiringPi ./build

برای این که مطمئن شویم Wiring Pi درست نصب و اجرا می شود از دستور gpio -v را اجرا می کینم باید ورژن Wiring Pi و اطلاعات مختصری در مورد رزبری پای نمایش داده شود.

gpio v

و با اجرای دستور gpio readall دیاگرام و جرئیات GPIO رزبری پای نمایش داده می شود.

gpio readall

برای نمایش کاربرد Wiring Pi یک مثال ساده برای کنترل یک LED را دنبال می کنیم. led را به همراه مقاومت را به پایه ۱۷ برد رزبری پای و زمین وصل کنید طبق شکل زیر ترمینال را باز کنید و با دستور cd به پوشه /var/www منتقل شوید. سپس توسط دستور sudo nano gpio.php فایل gpio.php را ایجاد کنید و کد زیر را در آن کپی و ذخیره کنید. به وسیله CNTRL + X

cd /var/www/
nano gpio.php
 <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 به رزبری پای

Figure

کلید های ON و OFF این برنامه شامل فرم های HTML است وقتی شما یکی از کلید ها را فشار می دهید با توجه به عنوان کلید قسمتی از آدرس URL تغییر می کند. (gpio.php?on=ON and gpio.php?off=OFF) و پایه ۱۷ gpio از طرق PHP و دستور shell_exec کنترل می شود.برنامه سطر های ۱۴ تا ۲۱ مقدار کلید را از URL می خواند و توسط تابع shell_exec پین را روشن و خاموش می کند.

برای دسترسی به صفحه طراحی شده کافی است آدرس IP رزبری پای را همراه gpio.php\ وارد کنید به عنوان مثال

192.168.1.1/gpio.php

برای بدست آوردن IP رزبری پای می توانید از دستور ifconfig در ترمینال استفاده کنید.

Figure

اگر دکمه ها کار نکرد به احتمال زیاد وب سرور اجازه اجرای دستورات شل لینوکس را ندارد. برای تصحیح این مورد دستور sudo visudo را در ترمینال اجرا کنید. و خط زیر را به فایل sudoers اضافه کنید.

www-data ALL=NOPASSWD: ALL

همچنین مطمئن شوید که var/www/ متعلق به گروه کاربری www-data باشد برای مطمئن شدن دستور زیر را اجرا کنید.

chown -R www-data:www-data /var/www

استفاده از پروژه php-gpio

ما از تابع shell_exec برای کنترل GPIO رزبری پای استفاده کردیم ولی این تنها راه نیست به عنوان مثال پروژه php-gpio یک کتابخانه PHP‌ برای دسترسی به پین های GPIO رزبری پای است. برای استفاده از php-gpio از دستور زیر برای دریافت و نصب کتابخانه استفاده کنید.

wget http://getcomposer.org/composer.phar php composer.phar create-project --stability='dev'ronanguilloux/php-gpio

php-gpio از تعداد کمی API ساده برای استفاده و تغییر وضعیت پین های GPIO رزبری پای اسفاده می کند. اسکریپت باید شامل کد های زیر باشد تا کتابخانه GPIO لود شود و GPIO آماده استفاده

require 'vendor/autoload.php';
use PhpGpio\Gpio;
$gpio = new GPIO();
$gpio->setup(17, "out");

در این مثال در سطر آخر GPIO شماره ۱۷ را به عنوان پین خروجی تنظیم کردیم برای کنترل GPIO به دو دستور زیر نیاز داریم

$gpio->output(17, 1)

$gpio->output(17, 0)

$gpio->unexportAll()

عبارت اول وضعیت پین ۱۷ را یک می کند یعنی led متصل به آن روشن می شود و عبارت دوم آن را صفر می کند و دستور سطر آخر وضعیت همه پین ها را ریست می کند. برنامه پایین یک برنامه ساده برای راه اندازی یک led چشمک زن به وسیله کتابخانه php-gpio است.

 <?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);
 }

برای اجرای اسکریپت دستور زیر را در ترمینال اجرا کنید.

sudo php blinking_led_script.php

اگر چه با کتابخانه php-gpio به راحتی می توان پایه های GPIO را با اسکرپیت PHP کنترل کرد ولی به یاد داشته باشید که این اسکریپت نیز خود باید به وسیله ی خط فرمان اجرا شود به عبارت دیگر شما نمی توانید آن را از صفحه وبی که به وسیله PHP سرور میزبانی شده اجرا کنید.

راه حل این مشکل ساده است از تابع shell_exec برای اجرای آن در صفحه وب کمک بگیرید.

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

نوشته های مشابه

2 دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا