WiringPi2 for Python + CGIHTTPServer でLチカ


注意:電子工作素人の記事です

Raspberry Pi Model B+のGPIOをブラウザから操作できるようにするという目的のための関連記事一覧

  1. Raspberry PiにWiringPiをインストール
  2. Raspberry PiにWiringPi2 for Pythonをインストール
  3. WiringPi2 for Python でピンの指定
  4. WiringPi2 for Python でLチカ (with sudo)
  5. WiringPi2 for Python でLチカ (without sudo)
  6. 今回 > WiringPi2 for Python + CGIHTTPServer でLチカ
  7. WiringPi2 for Python + PWM + non-root
  8. WiringPi + CGIHTTPServer + PWM

注意

  • WiringPi2 for Pythonがインストールされていること。
  • python3では動きません。

作業内容

  • 使用するGPIOの準備(GPIO18を出力にする)
  • 動作確認用のpythonスクリプトを準備
  • CGIHTTPServerを起動し、ブラウザから動作確認
  • Lチカのpythonスクリプトを準備
  • CGIHTTPServerを起動し、ブラウザからLチカ制御

$
$ sudo ./set_gpio_pins.sh

$
$ mkdir cgi-bin
$ nano ./cgi-bin/test.py
$ chmod 755 ./cgi-bin/test.py

$
$ python --version
Python 2.7.3
$
$ ifconfig
ここでIPを確認してください
$
$ python -m CGIHTTPServer

ブラウザからアクセス(IPが192.168.1.18の場合)
http://192.168.1.18:8000/cgi-bin/test.py
Hello Worldと表示されれば確認OK

Ctrl+C
CGIHTTPServerを終了

$
$ nano ./cgi-bin/blinkLED.py
$ chmod 755 ./cgi-bin/blinkLED.py

$
$ python -m CGIHTTPServer

ブラウザからアクセス(IPが192.168.1.18の場合)
http://192.168.1.18:8000/cgi-bin/blinkLED.py
Lチカを確認


GPIOの事前準備

set_gpio_pins.sh

記事『WiringPi2 for Python でLチカ (without sudo)』を参照


動作確認用スクリプト

./cgi-bin/test.py


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

print "Content-type: text/html"
print
print "<html><body>"
print "Hello World"
print "</body></html>"


Lチカスクリプト

./cgi-bin/blinkLED.py


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

import cgi
import time
import wiringpi2 as pi
from multiprocessing import Process

def f(gpioNo, status):
        pi.digitalWrite(gpioNo,status)

form = cgi.FieldStorage()

if form.has_key("gpio18"):

        status = 0
        if form["gpio18"].value == "on":
                status = 1

        pi.wiringPiSetupSys()
        Process(target=f, args=(18,status)).start()

print "Content-type: text/html"
print
print "<html><body>"
print "<a href='?gpio18=on'>ON</a> |"
print " <a href='?gpio18=off'>OFF</a>"
print "</body></html>"


Written on February 1, 2015