SSブログ

Raspberry Pi でブラウザーからLチカしてみる [Raspberry Pi]

Raspberry Pi で CGI を使えるようになったので、次はブラウザ経由でLチカをしてみたいと思います。


DSC04589.JPG


GPIOをコントロールするために、Python からも使える WiringPi というライブラリをインストールします。WiringPi はインストール時にコンパイルされるため、あらかじめ Python開発用ライブラリをインストールしておきます。


pi@raspberrypi:~$  sudo apt-get install python-dev


WiringPi を Python のPip インストーラーを使ってインストールします。

pi@raspberrypi:~$  sudo apt-get pip install wiringpi2
Downloading/unpacking wiringpi2 Downloading wiringpi2-2.32.3.tar.gz ... snip...
Successfully installed wiringpi2 wiringpi Cleaning up... pi@raspberrypi:~$
 
 
GPIOをコントロールする Python ファイルを "~/cgi-bin"に gpio.py として作ります。

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import cgi
import wiringpi2

wiringpi2.wiringPiSetupGpio()
wiringpi2.pinMode(18, 1) # sets GPIO18 to output

if (wiringpi2.digitalRead(18) == 1):
    wiringpi2.digitalWrite(18, 0)
else:
    wiringpi2.digitalWrite(18, 1)

print "Content-type: text/html\n\n"
print "<html><body>"
print "<h1>GPIO is %d</h1>" % wiringpi2.digitalRead(18)
print "</body></html>"


さて、これを動かすとどうなるでしょうか?

pi@raspberrypi:~$  python -m CGIHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...
192.168.2.103 - - [16/Jun/2017 22:15:35] "GET /cgi-bin/gpio.py HTTP/1.1" 200 -
wiringPiSetup: Must be root. (Did you forget sudo?)

 
 
うーん、怒られてしまいました。しかし、CGI経由なので root になりようがありません。いろいろ調べてみたところ、セットアップで呼ぶ関数を代えればよさそうです。

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import cgi
import wiringpi2

wiringpi2.wiringPiSetupSys()

if (wiringpi2.digitalRead(18) == 1):
    wiringpi2.digitalWrite(18, 0)
else:
    wiringpi2.digitalWrite(18, 1)

print "Content-type: text/html\n\n"
print "<html><body>"
print "<h1>GPIO is %d</h1>" % wiringpi2.digitalRead(18)
print "</body></html>"



PiSetupGpio を PiSetupSys に代えています。これはGPIO設定をGPIOコントロール関数ではなくシステム設定を使いますよ、というおまじないです。なので pinMode もなくなっています。

GPIOの設定は、 CGIHTTPServer を起動する前に行う必要があります。この例では GPIO18 を外部からコントロールできるようエキスポートし、かつ出力に設定しています。


pi@raspberrypi:~$  gpio export 18 out
pi@raspberrypi:~$  python -m CGIHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ... 192.168.2.103 - - [16/Jun/2017 23:15:35] "GET /cgi-bin/gpio2.py HTTP/1.1" 200 - 192.168.2.103 - - [16/Jun/2017 23:16:38] "GET /cgi-bin/gpio2.py HTTP/1.1" 200 - 192.168.2.103 - - [16/Jun/2017 23:18:12] "GET /cgi-bin/gpio2.py HTTP/1.1" 200 -

 
 
無事に動いたようです。少し見苦しいですが、動いている様子を撮ってみました。





さて、次はサーボモーターをコントロールしてみようかな。
(^_^)/~





Raspberry Pi 2 Server Essentials

Raspberry Pi 2 Server Essentials

  • 作者: Piotr J Kula
  • 出版社/メーカー: Packt Publishing
  • 発売日: 2016/04/29
  • メディア: ペーパーバック



Raspberry Pi 3 MODEL B 【RS正規流通品】

Raspberry Pi 3 MODEL B 【RS正規流通品】

  • 出版社/メーカー: Raspberry Pi
  • メディア: Tools & Hardware







nice!(30)  コメント(0)  トラックバック(0) 
共通テーマ:趣味・カルチャー

nice! 30

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0