ラズベリーパイでウェブやスマホなどからGPIOピン通電制御を行う方法

ラズベリーパイで遊ぶ

これ、何がすごいって、数千円でウェブからコンセント類を制御できる可能性があるのですよね。

無論、下記では単なるLED制御のみですし、100v機器を使う場合は安全性についての配慮も必用ですが、可能性としては非常に興味深いものがあります。

今回は、そのウェブでのGPIO制御の基本部分を作成しています。



広告

ラズベリーパイのハードウェア構成

機種はラズベリーパイ3

ピンは
基盤を表面にして、マイクロSDカードが左に来た状態
(ラズベリーパイのロゴマークが左側に見える状態)で

ピンソケット
上段、右から7番目
下団、下から2番目
を使用

抵抗は1kΩを使用(諸説ありますが、私はこれを使っています、ということで)


広告

Webサーバの構成

レンタルサーバ等を借りて、ファイルを作成

そのファイルの中身に「1」もしくは「0」を書き込みます。

ここでは「sample.com/1」とします。

本来は、これを書き換えるスクリプトも作るべきですが、
今回は省略します。

然るべきスクリプトを書けばスマホからも遠隔でラズベリーパイのGPIO通電制御が可能です。



広告

ラズベリーパイのスクリプト

webGetOnOff.pl

#とりあえずGPIOの使用を宣言
`echo 2 > /sys/class/gpio/export`;
`echo out > /sys/class/gpio/gpio2/direction`;

#初期状態は消灯
`echo 0 > /sys/class/gpio/gpio2/value`;

while(1){

#curlにてウェブ上の値を取得
	$tmp = `curl -s sample.com/1`;

#LEDの現在状態を取得
	$now = `gpio -g read 2`;

#LEDの現在状態で動作判断
#こうしないとONが連続する場合、
#瞬断状態になる

	if($tmp == "1"){

		if($now == "1"){
			;
		}
		else{
			#print "1";
			`echo 1 > /sys/class/gpio/gpio2/value`;
		}
	}

	if($tmp == "0"){
		if($now == "0"){
			;
		}
		else{
			#print "0";
			`echo 0 > /sys/class/gpio/gpio2/value`;
		}
	}

#1秒毎に実行
	sleep(1);
}#while end


広告

制御方法

上記のスクリプトを以下のように駆動
perl webGetOnOff.pl

Webサーバ、sample.com/1
の中身を
0->1
1->0
のように書き換えを行うと、LEDの制御が可能です。

わかりやすくするため、1秒毎にWebサーバにアクセスしていますが、適時、変更してください。
とりあえず備忘録まで。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

日本語を含んでいない投稿は無視されますのでご注意ください。(スパム対策)