こんにちは。武田です。
やりたい事
前回の作業でRaspberry pi 2のサーバ化までには持ってこれました。
今度はロボピッチャに連携させないとですね。
ウェブサイトでボタンを押すとロボピッチャが動作する形にしたい!
Raspberry pi 2とロボピッチャの連携
参考: DCモータを動かす(モータドライバ使用)(WebIOPi利用)
こちらのページを元にやってみましょう。
部品や接続表、例など細かーく書いてあるので大変にありがたいです。
Raspberry Pi 2側
参考元はRaspberry pi 1、こちらは2とバージョンが違うためピンの数が全然違いますね。。。
とりあえずググってみます。
Raspberry Pi 2 Model B GPIO 40 Pin Block Pinout
接続表を見てみましたがよくわからない。。。
ただ、基本的には後ろの方が追加されただけのようなので若番から同じように接続してみます。
ブレッドボード側
接続表にしたがって。。。
とりあえずは電源、モーター含めて全体を繋いだぞ!
接続後の起動
すげー不安だけども同僚に見守られつつ起動!
とりあえずは焦げ臭い匂いとか異音とかはない模様。
これでRaspberry pi が壊れたらこの企画、終了ですよ。
WebIOPiのインストール
WebIOPiはリモートでRaspberry pi を操作するためのフレームワークです。
これを利用してウェブからのロボピッチャをキックします!
参考:ブラウザから、ラズベリーパイのGPIOを操作できる「WebIOPi」を試してみた!
# DL
wget http://sourceforge.net/projects/webiopi/files/WebIOPi-0.7.1.tar.gz/download
# 展開
tar xvzf download
# インストール
cd WebIOPi-0.7.1/
sudo ./setup.sh
ブラウザから「GPIO」を操作してみよう!
webiopiを起動
sudo webiopi
2016-01-25 18:01:18 - WebIOPi - INFO - Starting WebIOPi/0.7.1/Python3.4
2016-01-25 18:01:18 - WebIOPi - INFO - GPIO - Native mapped to REST API /GPIO
2016-01-25 18:01:18 - WebIOPi - WARNING - Access unprotected
2016-01-25 18:01:18 - WebIOPi - INFO - HTTP Server binded on http://192.168.0.147:8000/
2016-01-25 18:01:18 - WebIOPi - INFO - CoAP Server binded on coap://192.168.0.147:5683/
2016-01-25 18:01:18 - WebIOPi - INFO - CoAP Server binded on coap://224.0.1.123:5683/ (MULTICAST)
特にエラー表示とかは出ないですね。。。
webapiの管理画面的なものがあるのでそこへアクセスしてみます。
http://IPアドレス:8000
id: webiopi
pw: raspberry
おっなんとなくWebIOPiの画面まではできてきましたね。
[GPIO 24]をonにしてみましょう。
あら。ここまできたらコンソールの方にエラーが。。。
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.4/socketserver.py", line 305, in _handle_request_noblock
self.process_request(request, client_address)
File "/usr/lib/python3.4/socketserver.py", line 331, in process_request
self.finish_request(request, client_address)
File "/usr/lib/python3.4/socketserver.py", line 344, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "/usr/lib/python3.4/socketserver.py", line 669, in __init__
self.handle()
File "/usr/lib/python3.4/http/server.py", line 398, in handle
self.handle_one_request()
File "/usr/lib/python3.4/http/server.py", line 386, in handle_one_request
method()
File "/usr/local/lib/python3.4/dist-packages/WebIOPi-0.7.1-py3.4-linux-armv7l.egg/webiopi/protocols/http.py", line 267, in do_GET
self.processRequest()
File "/usr/local/lib/python3.4/dist-packages/WebIOPi-0.7.1-py3.4-linux-armv7l.egg/webiopi/protocols/http.py", line 258, in processRequest
except (GPIO.InvalidDirectionException, GPIO.InvalidChannelException, GPIO.SetupException) as e:
NameError: name 'GPIO' is not defined
調べて見た所、このRaspberry piのバージョンには対応していないみたいですね。
パッチがあるようなので一旦先ほどのやつは削除して、上書きインストールを実施
参考:Global name GPIO is not defined errors on WebIOPi
# パッチ適応+インストール
cd /home/pi
sudo wget http://sourceforge.net/projects/webiopi/files/WebIOPi-0.7.1.tar.gz
sudo tar xvzf WebIOPi-0.7.1.tar.gz
cd WebIOPi-0.7.1
sudo wget https://raw.githubusercontent.com/doublebind/raspi/master/webiopi-pi2bplus.patch
patch -p1 -i webiopi-pi2bplus.patch
sudo ./setup.sh
Then go on with these codes:
cd /home/pi
sudo wget https://github.com/weaved/installer/raw/master/binaries/weaved-nixinstaller_1.2.13.bin
sudo chmod +x weaved-nixinstaller_1.2.13.bin
sudo ./weaved-nixinstaller_1.2.13.bin
webiopi管理画面より[GPIO 24]を起動したらモーターが動く!
ウェブサイトとの連携
ブラウザでボタンが押されたらWebIOPiへ命令を送りたいですね。
以下の様な形でコマンドでも操作が可能みたいです。
起動
curl -u webiopi:raspberry -X POST localhost:8000/GPIO/23/value/1
停止
curl -u webiopi:raspberry -X POST localhost:8000/GPIO/23/value/0
その他
ブート時に自動起動するようにセットする。
$ sudo update-rc.d webiopi defaults
ID/PWは初期値だと怖いので変更
$ sudo webiopi-passwd
これでなんとか材料が揃ったみたいですね。
起動させるページも作ったので動かしましょう!
ロボピッチャ起動
ボタンを押すとロボピッチャが動いていますね!
ここまでほんとうに長かった。。。
次回
ちょっとこれだと見ている閲覧者の方が動いてる様を見させられないのでそこら辺を解決したいですね。
ロボピッチャを移したウェブカメラおいてリアルタイム配信でもしようかしら。
Raspberry pi のサーバーで完結できればスマートなのだけど。
コメントを残す