2017-07

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Raspberry Pi につないだLEDをブラウザから制御する

概要:
Raspberry Pi にWebカメラを接続し、
さて,先月中にロボットの作り方を公開すると言いながら,
まだ公開できていない状態になりました.

今回はロボットのの記事の公開の序盤として,
GPIOにつないだLEDをブラウザから制御する方法を紹介します.


使用機器:
今回は以下の機器を使用しました。

ハードウェア:
・LEDドライブ用基板
・Raspberry Pi がつながれたネットワークにつながっているPC

* LEDを点滅させる基板については,以下のページを参考にしてください.
Raspberry Pi の GPIO でLEDを点滅させてみる


ソフトウェア:
・python-dev
・pythonのGPIOライブラリ

* PythonのGPIOライブラリの導入については,以下の記事を参考にしてください.
Raspberry Pi の GPIO でLEDを点滅させてみる


ソフトウェア作成:
今回,ブラウザからアクセスをするために,
Pythonに標準ライブラリであるCGI実行機能機能付きのHTTPサーバークラスを使用します.

ブラウザからボタンが押されることで,
Raspberry Pi上に立てたGCIサーバーにPOSTメッセージが飛ぶような仕組みを使用しています.

今回のプログラムは,LEDの点滅を制御とサーバーの役割をこなすもの(サーバープログラム)と,
サーバーに対してメッセージを飛ばすためのもの(クライアントプログラム)に分けられます.

それぞれのプログラムは以下のとおりになります.

サーバー側(server_led.py):

# -*- coding:utf-8 -*-
import cgi
import RPi.GPIO as GPIO
from BaseHTTPServer import HTTPServer
from SimpleHTTPServer import SimpleHTTPRequestHandler

class MyHandler(SimpleHTTPRequestHandler):
def do_POST(self):
if self.path == '/serial':
# 飛ばされてきたリクエストを受け取る
form = cgi.FieldStorage(fp=self.rfile, headers=self.headers,
environ={'REQUEST_METHOD':'POST'})
code = form['code'].value

# 受け取ったクエリに応じて点灯させるLEDを設定する
if code == "led1":
GPIO.output( 17, True )
elif code == "led2":
GPIO.output( 21, True )
elif code == "led3":
GPIO.output( 22, True )
elif code == "reset":
GPIO.output( 17, False )
GPIO.output( 21, False )
GPIO.output( 22, False )

self.send_response(100)
self.send_header('Content-type', 'text/html')
return
return self.do_GET()

# GPIOの初期設定
GPIO.setmode( GPIO.BCM )
GPIO.setup(17, GPIO.OUT)
GPIO.setup(21, GPIO.OUT)
GPIO.setup(22, GPIO.OUT)
GPIO.output( 17, False )
GPIO.output( 21, False )
GPIO.output( 22, False )

# サーバーの起動
server = HTTPServer(('', 8081), MyHandler).serve_forever()


クライアント側 (index.html):
HTMLのソースを貼ると正常に表示されないため,
以下の場所にソースコードをおいておきます.
LEDを点灯させるサンプルプログラム


起動と動作テスト:
これらのプログラムを同じディレクトリに保存し,次のように起動します.
sudo python server_led.py


この後,Raspberry Piの「RaspberyPiのIP:8081」にアクセスすると,
次のような画面を見ることができます.
ブラウザ
表示されているボタンを押すことで,LEDを点灯させることができます.

実際にブラウザからLEDの制御を行った結果が次の動画になります.


所感:
これを応用してロボットを動かしていきます.
次こそはカメラ画像取得とGPIOプグラムを連携させ,ロボットを動作させます.

● COMMENT FORM ●

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます


管理者にだけ表示を許可する

トラックバック

http://chicklab.blog84.fc2.com/tb.php/53-48546a58
この記事にトラックバックする(FC2ブログユーザー)

NEW ENTRY «  | BLOG TOP |  » OLD ENTRY

カレンダー

06 | 2017/07 | 08
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 - - - - -

FC2カウンター

最新記事

最新コメント

最新トラックバック

月別アーカイブ

カテゴリ

未分類 (7)
日記 (7)
wiiremote (1)
google (1)
回路 (3)
psp (1)
programing (15)
linux (0)
OpenWRT (3)
kinect (1)
Raspberry Pi (8)

検索フォーム

RSSリンクの表示

リンク

このブログをリンクに追加する

google adsense

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。