Raspberry PiをIoT化するのに,PythonのWebObパッケージを使用しようと思っていたが,Blynkという非常に便利なサービスがあることがわかった.WebObのことは一旦置いておいて,Blynkを使ってみようと思う.Blynkの導入と,Blynkを使ってRaspberry Piに接続したUSBカメラを遠隔制御するためのメモ.
Blynkって何?
Blynkは2015年頃より提供されているIoT開発を促進する一つのツール.電子工作でよく使用されるArduinoやRasipbeery Piをサポートしており,それぞれのデバイス向けのライブラリをインストールして,スマホ側でアプリさえダウンロードすれば超簡単にIoTが実現できてしまうというもの.
なぜBlynkを使うか?
私は以前より畑監視システムの作製に取り組んでいて,ついこの前までpythonのWebObを使用しようと思っていて,その動作確認まで行っていた.
www.eletech.work
しかし,同一ネットワーク以外のところからアクセスしようとすると少し面倒くさい部分がある.それは,アクセスしようとする度にIPアドレスが変わってしまうため,今Raspberry PiのIPアドレスが何かを毎回調べないといけないからである.
これを解決するためには,お金を払ってグローバルな固定IPアドレスを取得するか,ダイナミックDNS(DDNS)サービスを利用するかであるが,前者は畑監視システムのために固定費が発生するという状態にしたくないということ,後者はありだけど結構設定とか面倒くさいということがあって,別の方法を探していた.
そんな時,師匠からBlynkというサービスがあることを教えてもらった.Blynkでは,BlynkサーバーにスマホからもRaspbeery Pi側からもアクセスする構図になるので,上記のような面倒なことをしなくてもやりたいことが実現できそうということで,一度Blynkにトライしてみようということになったのである.
ちなみに,Blynkではボタンや動画ストリーミングなど色んなライブラリが用意されているのだが,アプリ側で各ライブラリを使用するごとにエネルギー(お金)が必要になるが,最初から2,000エネルギーがチャージされているので,最初は無料で使用できる.無料分を使い切ったとしても,各コンポーネント毎に購入で,月額のお金などが発生しないというところも魅力的.色々やりたくなったら,ちょこっとライブラリと購入して使える,というお手頃感がいい感じ.
Blynkアプリのインストール
BlynkアプリはiOS,Android向け両方に提供されている.とりあえずインストールして,以後の動作テストのためにtestというプロジェクトでも作っておく.プロジェクトを作ると,そのプロジェクト用のトークンが発行されるが,要はこのトークンがこのプロジェクト専用のBlynkサーバーへのアクセス先を決めてくれている.(アプリのインストールは超簡単でガイド通りに進めばよいので本記事では省略する)
Blynkの導入と接続テスト
先人のWebページを参考にさせて頂きながらRaspberry PiへのBlynkのインストールを進める(Raspberry Pi Zero WHでBlynk経由、Python3を使って GPIO制御、BMP280測定値の読み取りをしてみる。).
まず,blynkインストール用のフォルダを準備して,wgetでライブラリを取ってくる.
pi@raspberrypi:~ $ cd pi@raspberrypi:~ $ mkdir -p src/blynk pi@raspberrypi:~ $ cd src/blynk pi@raspberrypi:~/src/blynk $ wget https://github.com/blynkkk/blynk-library/releases/download/v0.5.4/Blynk_Release_v0.5.4.zip pi@raspberrypi:~/src/blynk $ unzip Blynk_Release_v0.5.4.zip pi@raspberrypi:~/src/blynk $ cd libraries/Blynk/linux
次にWiringPiをインストールしてビルドおく.これがないと,先ほど取ってきたblynkライブラリをmakeできない.
pi@raspberrypi:~/src/blynk/libraries/Blynk/linux $ git clone git://git.drogon.net/wiringPi
pi@raspberrypi:~/src/blynk/libraries/Blynk/linux $ cd wiringPi/
pi@raspberrypi:~/src/blynk/libraries/Blynk/linux/wiringPi $ ./build
ビルドが正常に終了したら,Blynkのディレクトリに戻ってmakeを実行する.
pi@raspberrypi:~/src/blynk/libraries/Blynk/linux/wiringPi $ cd .. pi@raspberrypi:~/src/blynk/libraries/Blynk/linux $ make clean all target=raspberry
makeできたら,blynkという実行ファイルが出来上がっていることを確認.
pi@raspberrypi:~/src/blynk/libraries/Blynk/linux $ ls -l 合計 108 -rw-rw-r-- 1 pi pi 4127 9月 5 21:14 BlynkApiLinux.h -rw-rw-r-- 1 pi pi 5285 9月 5 21:14 BlynkApiWiringPi.h -rw-rw-r-- 1 pi pi 1300 9月 5 21:14 BlynkOptionsParser.h -rw-rw-r-- 1 pi pi 3768 9月 5 21:14 BlynkSocket.h -rw-rw-r-- 1 pi pi 1901 9月 5 21:14 Makefile -rw-rw-r-- 1 pi pi 584 9月 5 21:14 README.md -rwxr-xr-x 1 pi pi 30472 2月 11 06:37 blynk -rwxr-xr-x 1 pi pi 410 9月 5 21:14 build.sh -rw-rw-r-- 1 pi pi 1026 9月 5 21:14 main.cpp -rw-r--r-- 1 pi pi 32584 2月 11 06:37 main.o drwxr-xr-x 11 pi pi 4096 2月 11 06:35 wiringPi
さっそくblynkを起動してみる.アプリをインストールしてプロジェクトを作成するとトークンが発行されるので,これを指定する必要がある.
pi@raspberrypi:~/src/blynk/libraries/Blynk/linux $ sudo ./blynk --token=b8*******************************5a [0] ___ __ __ / _ )/ /_ _____ / /__ / _ / / // / _ \/ '_/ /____/_/\_, /_//_/_/\_\ /___/ v0.5.4 on Linux [1] Connecting to blynk-cloud.com:80 [263] Ready (ping: 81ms).
この状態で,アプリ側から接続のテストを行う.アプリを起動しプロジェクトを開く.この状態で右上の再生ボタンのようなものを押す.これが,Raspberry Piとの接続要求ボタン.このボタンを押すと次のような画面が出てくる.この状態で既に接続されている.元々接続ボタンがあったところの四角いボタンは,このボタンを押せばRaspberry Piとの接続を切ることができる.その左側にあるボタンを押すと,接続状態が確認できる.Raspbeery Piとの接続状態がOnlineとなっていて,無事接続できていることがわかる.本当に接続できているのか疑わしかったので,この状態でRasppbery Pi側のblynkを終了してみた.すると,と出てきて,一旦アプリを終了して再度アプリを開いて接続状態を確認してみると,となっていて,確かにRaspberry Pi側との接続や切断がちゃんと反映されている感じであった.とりあえず,最低限の準備は完了.