Raspberry PiでIoTを始めよう企画
紙相撲が無駄にIoTになった!~Raspberry Piで始めるIoTデバイス入門
環境構築編2:WebIOPi
WebIOPiというのは、Raspberry Pi 用の、IoT向けライブラリです。簡単に言うと「スマホやPCのWebブラウザ上の操作で、リアルタイムにGPIOピン(など)を操作する」ためのツールです。「(など)」と書いたのは、今回はその用途に使っているだけで、やろうと思えば何でもできるからです。
もうちょっと具体的にいうと、
- 起動するとWebサーバが立ち上がる。その後、初期化処理(自由に書ける)、待機時処理(自由に書ける)を開始
- ブラウザ上で何か操作をされたら、それに対応する処理(もちろん自由に書ける)を実行、終わったら待機時処理に戻る
Arduinoを使用したことがある方は、Arduinoのスケッチを書く感覚でRaspberry Piを制御できる、と考えていただければ大体合っています(初期化処理がsetup()、待機時処理がloop()、加えてブラウザ上の操作をトリガーに任意の関数を呼び出し可能です)。
各処理はPythonで記述します。ですからPythonで実行可能なことならたいていできるうえ、WebIOPi固有の機能もあり、IoTっぽいこと(GPIOピンの制御とかサーボモータ動かすとか)が簡単にできるようになっています。
さっそくチュートリアルのページを見ながらインストールしてみます。が、ここで注意。WebIOPiは2015年6月時点でRaspberry Pi 2に未対応です。なのでこちらのページを参考に、スクリプトを一部修正しました(2でない場合は不要)。
wget --trust-server-names "http://downloads.sourceforge.net/project/webiopi/ WebIOPi-0.7.1.tar.gz?r=http%3A%2F%2Fsourceforge.net %2Fprojects%2Fwebiopi%2Ffiles%2F&ts=1431007213&use_mirror=jaist" tar xvzf WebIOPi-0.7.1.tar.gz cd WebIOPi-0.7.1/ nano python/native/cpuinfo.c #Raspberry Pi 2用に修正。2でない場合は不要 nano python/native/gpio.c #Raspberry Pi 2用に修正。2でない場合は不要 sudo ./setup.sh
URLはバージョンアップで変わると思いますのでご注意ください。インストールの最後に「インターネットに接続する?」みたいなことを聞かれますが、これはCloud Piのおかげで今回は不要(LANだけつながっていればよい)なのでNOを選びました。すべて完了すれば、
sudo webiopi -d -c /etc/webiopi/config
これでWebサーバを立ち上げることができます。
無事立ち上がったら、動作チェックです。LAN上でテストしてもいいのですが、せっかくなのでCloud Pi越しにやってみましょう。スマートフォンでさっき入れたCloud Piのアプリを立ち上げまず。WebIOPiの待ち受けポートはデフォルトで8000番になっていますので、アプリ上で「ラズパイ・ポート」の項目を8000に変更してから接続してください。
接続できたら、Webブラウザを立ち上げて「http://127.0.0.1:8080」にアクセスしてみましょう。
認証がかかっていて、デフォルトではIDが「webiopi」、パスワードが「raspberry」です。
デ、デター!これがWebIOPiのサンプル画面です。
このように、Cloud Piを使うと、8000番ポート(スマホ・ポート)にアクセスした通信を、Raspberry Pi側の8080番ポート(ラスパイ・ポート)に転送することができます。ふしぎー!
引き続きWebIOPiのテストです。ここでおもむろに一番上の「GPIO-Header」を押してみましょう。
Raspberry PiのGPIOポートの一覧が出てきます。ただし、ただの一覧表ではありません。ポート番号を押すと、実際に入出力の切り替えと、出力の場合はHIGH/LOWの切り替えができるんです!
ためしにGPIO2をOUTにして、Raspberry Pi の GPIO2ピン—LED—50~100Ωくらいの抵抗—Raspberry Pi の GROUNDピン(どれでもよい)の順で接続、画面上でGPIO2の横にある「3」というボタンを連打してみてください。インターネット経由でLEDをチカチカさせることが可能です! 南極基地からでも、です。
(LEDは足の長いほうをGPIO2側にしてください)
さて、この時点でもうThings(LED)がインターネットにつながったわけですから、これはもうIoTですよ。順調に行けば30分もあればここまでたどり着けると思います。ちょっとやばくない? 30分でIoTデバイスできるのやばくない? 便利すぎてちょっと怖くなってきたので、気を落ち着けるために今度はハードウェアの製作に入りましょう。