ファイルアクセスによる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のアクセスであれば、この方法で十分だと思います。