Raspberry Pi |【失敗→できた!】スマホからGPIOを制御してみたい!(WebIOPi)
こんにちは、tapunです。
目次
はじめに
今日は、なんとWeb UIからラズベリーパイのGPIOを操作できるという噂の「WebIOPi」を試してみようと思いました!
ただ、最初に書いておきますがRaspberry Pi 2 Model B では、失敗しました。なのでこのブログは失敗記事です。# 古いバージョンなら問題なくいけそうです。。。
(2015/12/18 追記 コメントしてくださったmt08さんのおかげで動くようになりました!! )
[メモ] WebIOPiのRaspberryPi2 簡単対応 (GPIO Header 40pin)
Web IOPiってなに?
説明に良い動画がありました!↓
初めての電子工作ブログで、GPIOピンを使って制御するためには、それぞれのピンのIn/OUTを設定したりしないといけなかったですが、このツールを使うとWebブラウザ上でピンをクリックするだけでIn/OUTの切替や無効化ができるようです!!こりゃ便利です!
準備するもの
前回のブログと同じ材料です。
- ブレッドボード、LED、抵抗器
- ジャンパーワイヤ(オス – メス)
やること
回路を組む
今回は、このような超単純な回路にします!
[GPIO17] – [抵抗] – 足長[LED]足短 – GND
WebIOPiをRaspberry Piにインストールする
- ダウンロードページの最新版のURLを確認する
右クリック – リンクのURLをコピー でコピーできます!
今の最新版0.7.1のURLはこちら
<http://sourceforge.net/projects/webiopi/files/WebIOPi-0.7.1.tar.gz/download> - Raspberry Pi にSSHでアクセスします。
※SSHの設定はこちらを参照してください。 - インストールファイルをダウンロードします。
$ wget http://sourceforge.net/projects/webiopi/files/WebIOPi-0.7.1.tar.gz/download $ tar xvzf download
先ほどコピーしたダウンロードもとURLからgownloadという圧縮ファイルをもってきて、tarコマンドで解凍します。
- WebIPOiフォルダに移動し、setup.shを実行します。
$ cd ./WebIOPi-0.7.1/ $ sudo ./setup.sh
※ちょっと時間かかります!5分くらいかな。
Do you want to access WebIOPi over Internet ? [y/n]
と聞かれます。今回は家の中だけで大丈夫なので”n”キーでスキップします。
- インストールおわり!
WebIOPi successfully installed * To start WebIOPi foreground : sudo webiopi [-h] [-c config] [-l log] [-s script] [-d] [port] * To start WebIOPi background : sudo /etc/init.d/webiopi start * To start WebIOPi at boot : sudo update-rc.d webiopi defaults * Run ./weaved-setup.bin to install the Weaved IoT Kit and access your device over Internet * Look in /home/yiwase/WebIOPi-0.7.1/examples for Python library usage examples
WebIOPiのサービスを起動する
- 下記のコマンドを実行してサービス立ち上げます!
$ sudo /etc/init.d/webiopi start [ ok ] Starting webiopi (via systemctl): webiopi.service.
ブラウザからWebIOPiにアクセスする
アクセス先はこちらです。
http://<Raspberry PiのIPアドレス>:8000
※IPアドレスは、”ifconfigコマンド”とかで確認できます。
なにこれ?
調べたら、初回だけ認証が必要なようです。
デフォルトではこちらのようです。
ユーザ名:webiopi パスワード:raspberry
この認証情報を入力すると、、、
入れました!!!
GPIO Headerをクリックすると。。。。
本当は、PIN番号をクリックすると空白の箱に IN / OUT の切替ができるはずなのですが・・・
サンプル:本来のあるべき姿
色々調べたところ、なんとソフトウェア開発が滞っており、Raspberry Pi 2には対応していないらしい・・・
It seems to be an excellent project but it isn’t updated anymore. That shouldn’t be a problem hence this software does NOT work at all the newest and most popular Raspberry 2B Try this on your old Raspberry and it works great. But don’t waist your time and try this on your Raspberry 2 It will NOT work and it will take you a while before you find out it’s outdated software.
引用:http://sourceforge.net/projects/webiopi/reviews?source=navbar
残念すぎる・・・
上記の引用元ブログも参考に1時間くらいがんばったんですけど、ダメでした。
Its NOT working at all !!!
2015/12/18 追記:コメントしてくださった心優しいmt08さんのお陰でうごくようになりました♪
詳しくはqiitaをご確認ください!
Raspberry Pi 2B用にWebIOPiの設定ファイルを修正する
修正箇所はこちらのすばらしいqiitaをご参考に。
[メモ] WebIOPiのRaspberryPi2 簡単対応 (GPIO Header 40pin)
作業内容も記載しておきます!
- Haerware Checkの変更(”BCM2708″→”BCM2709″)
$ nano ./WebIOPi-0.7.1/python/native/cpuinfo.c
※40行目を下記のように変更 if (strcmp(hardware, "BCM2709") == 0)
- GPIOの処理 (ペリフェラルのベースアドレスを0x20000000から、0x3F000000へ変更)
$ nano ./WebIOPi-0.7.1/python/native/gpio.c
※32行目を下記のように変更 #define BCM2708_PERI_BASE 0x3F000000
- GPIO Header(/app/gpio-header)の40pin対応
もともと26pinしか対応していなかったので、40pinに拡張します。$ nano ./WebIOPi-0.7.1/python/webiopi/utils/version.py
※MAPPING2を下記のように変更。 _MAPPING[2] = ["V33", "V50", 2, "V50", 3, "GND", 4, 14, "GND", 15, 17, 18, 27, "GND", 22, 23, "V33", 24, 10, "GND", 9, 25, 11, 8, "GND", 7, 0, 1, 5, "GND", 6, 12, 13, "GND", 19, 16, 26, 20, "GND", 21]
- 40pin用にテーブルを拡張する
$ nano ./WebIOPi-0.7.1/htdocs/webiopi.js
※76行目と580行目を下記のように修正。 ... this.PINS = Array(41); ... for (var pin=1; pin<=40; pin++) { ...
- もう一回setup.shを実行する
$ sh ./setup.sh
- WebIOPiを起動する
$ webiopi 2015-12-18 22:26:04 - WebIOPi - INFO - Starting WebIOPi/0.7.1/Python3.4 2015-12-18 22:26:04 - WebIOPi - INFO - GPIO - Native mapped to REST API /GPIO 2015-12-18 22:26:04 - WebIOPi - WARNING - Access unprotected 2015-12-18 22:26:04 - WebIOPi - INFO - HTTP Server binded on http://<your address>:8000/ 2015-12-18 22:26:04 - WebIOPi - INFO - CoAP Server binded on coap://<your address>:5683/ 2015-12-18 22:26:04 - WebIOPi - INFO - CoAP Server binded on coap://<your address>:5683/ (MULTICAST)
動いてる!
# エラーが出る場合はwebiopi -d
でデバッグログを見てみましょう。
うごくー!嬉しい!!
まとめ
全然まとまっていないのですが、今日はハマったまま終わりです。
Raspberry Pi 2 Bで成功している人の情報が見当たらないから、難しいのかな~ 誰かなおしてくれないかな~
また方法を見つけたら更新します。無念。
2015/12/18 追記:
「誰かなおしてくれないかな~」とか無責任なことを書いていたら、心優しい方が修正箇所をqiitaにまとめてくださいました!感激です!この情報過多な時代にもこんなにやさしい方がいるのですね・・・!
次はHubotを使ってボット化を試してみようと思います
> [メモ] WebIOPiのRaspberryPi2 簡単対応
http://qiita.com/mt08/items/5e14e42e817ba3c2ac43
書きました。40pinの対応とか、お願いします.(ぉ
GPIO Headerの40pin対応 を追記しました。
mt08さん、深夜にコメントいただいてありがとうございました!
おかげさまで無事にRaspberry Pi 2BでもWebIOPIを動作させることができて大満足です!:)
おめでとうございます~♪。
あと、無事動いてよかったですね。
修正したあと、ググったら、いろんなひとが同じように直してるのを多数発見したので、Offical(http://webiopi.trouch.com)で対応してくれるといいんですけどね。
うちの「らず子」Pi2が言うことを聞いてくれないので困っていたらここにたどりつきました。
修正してもうまくいかなかったのですが、下記のパッチを当ててからリトライしたら動きました。
mt08さん tapunさん MAKINGさん ありがとうございました。
これから何を作ろうかなとワクワクがとまりません。
MAKINGさんの記事URL http://making.mrlittlebig.com/?p=84
ドウシテモ解決できません。
教えてくれたらとても嬉しいです。これが出来ないため、先に進めません。
ssh通信の件ですが、PCからraspberrypiにアクセス出来ないのです。兎に角、原因と思われる事は全てチェックしたつもりですが、「サーバーに拒否されました」が相変わらず表示されてしまいます。
ラズパイ側に原因があるのでしょうか?
確認するのが大変遅くなり申し訳ないです!
調べたら、Raspbian OSは2016年末以降、SSHが標準でオフになっているようなので、以下のサイトなどを確認して設定を変えてみて上手くいくといいんですが…!
http://ykubot.com/2017/01/17/raspberry-pi-3-initialize/
WebIOPiって途中?で開発終了していて古いラズビアンじゃないと正常に動作しなくて去年すごくハマりました。
最近どうなっているのかって調べてみたらパッチとか出ていて新しいバージョンでも普通に動くようになっていてなんか嬉しいです。
自分はタミヤのキャタピラのリモコンみたいなのをスマホで動かすやつとかLチカくらいはやりました。
モーター動かすとノイズで動かなくなっちゃったのと、Raspberry Pi zeroとかだと途中でシステムが不安定になったりしましたが、WebIOPiもう少し発展してもいいと思います。
最近はちょっと違うネタでラズパイ遊びしています。