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

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

【スポンサーリンク】

ファイルアクセスによるGPIOの制御(/sys/class/gpio)

【スポンサーリンク】

前回、WiringPi-PHPを使用してWebからGPIOを制御する方法を紹介しました。今回は/sys/class/gpio/exportのファイルにアクセスしてGPIOを操作する方法を紹介したいと思います。

 

/sys/class/gpio内のファイルにアクセス

Raspberry PiにはGPIOを簡単に制御できる非常に便利な機能が備わっています。それは、/sys/class/gpio内のファイルに設定値を書き込むことにより、GPIOの制御ができるというしくみです。

 

ファイルにアクセスできれば制御ができますので、どの言語を使用してもGPIOを制御することができます。前回、WiringPi-PHPで作成したサンプルコードを変更し、今回はファイルアクセスにより、LEDの点灯/消灯を行ってみたいと思います。

 

/sys/class/gpioにexportというファイルがあります。このexportファイルに使用したいGPIOピン番号を書き込むと、そのピン番号のフォルダが生成されます。そのフォルダ内の各種ファイルに設定値を書き込むことで、GPIOの制御が可能になります。

 

以下がファイルアクセス版のサンプルコードになります。

sudo vi /var/www/html/gpiofile.php

----------gpiofile.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";
        file_put_contents('/sys/class/gpio/export',26);
        file_put_contents('/sys/class/gpio/gpio26/direction','out');
}
else if(isset($_POST["start"])) {
        echo "LED Light ON";
        file_put_contents('/sys/class/gpio/gpio26/value',1);
}
else if(isset($_POST["stop"])) {
        echo "LED Light OFF";
        file_put_contents('/sys/class/gpio/gpio26/value',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>

 

問題なくLEDの点灯/消灯ができました。簡単なIOのアクセスであれば、この方法で十分だと思います。