Raspberry Pi 3 & Python 開発ブログ☆彡

Raspberry Pi 3の使い方、設定をわかりやすく解説。Raspberry Pi3 Model B(Element14版)、Raspbian 8.0(NOOBS Ver1.9.2)を使用して開発中。

【スポンサーリンク】

WiringPi-PHPの使い方(その3)

【スポンサーリンク】

前回、前々回とWiringPi-PHPを記事を書いていますが、今回で最後の記事になります。

apacheのエラーログに"wiringPiSetup: Must be root. (Did you forget sudo?)"とエラーが出ていたので、権限について調べてみました。わかったことは、wiringPiSetupGpio()というメゾットは、root権限が必要ということです。その代わりにwiringPiSetupSys()というメゾットはroot権限が必要なく、問題なく動作しました。

wiringPiSetupSysの使い方

wiringPiSetupSysメゾットで初期化処理を行う時は、準備が必要です。GPIOは/sys/class/gpioフォルダ内のGPIOのインターフェースの情報ファイルを操作することによっても制御が可能です。wiringPiSetupSysを使用する場合は、事前に/sys/class/gpioフォルダに使用したいピンの情報ファイルを作成しておく(エクスポート)必要があります。

 

エクスポートは何か難しそうですが、コマンドがありますので簡単です。私の場合は、GPIO26ピンを使いますので、以下のようになります。

sudo echo 26 > /sys/class/gpio/export

これでGPIO26のインターフェース情報のファイルが作成されました。/sys/class/gpioフォルダにgpio26というフォルダが生成されていると思います。これでOKです。

 

それでは前回のphpファイルを下記に修正して実行してみましょう。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>LedTest</title>
</head>
<body>
<?php
if (isset($_POST["init"])) {
        echo "init";
        wiringPiSetupSys();
        pinMode(26, 1);
}
else if(isset($_POST["start"])) {
        echo "LED Light ON";
        digitalWrite(26,1);
}
else if(isset($_POST["stop"])) {
        echo "LED Light OFF";
        digitalWrite(26,0);
}
?>
<form method="POST" action="">
<input type="submit" value="init" name="init">
<input type="submit" value="start" name="start"> 
<input type="submit" value="stop" name="stop"> 
</form>
</body>

 

initボタンを押して、その後startボタンを押すとLEDが光りました。stopボタンを押すとLEDが消灯しますね。これでいろいろな手段でPHPからGPIOを制御することが可能になりました。