はじめに
業務でAIを扱っているのですが、
AIと言ったらIoTと切っても切れない関係に今後なっていくので、
IoTに触れてみようと思いました。
社内の詳しい方からmicro:bitを勧められ、
以下の構成で可視化を試みました。
やろうとしたこと
シリアル通信を使用してデータを拾い、
IoTデータ可視化サービス「Ambient」にデータを送信します。
まずWindowsでうまくいったので、Linux(Ubuntu)上のDockerコンテナから
実施できるように設定していきます。
Windowsでの手順は省略。
手順
デバイスの準備
以下を参考にさせて頂きました。
[参考]GROVEモジュールをmicro:bitにつなぐ拡張ボード
温湿度・気圧センサーはスイッチサイエンスで購入したBME280、
GROVEシールドは品切れだったため、秋葉原の千石電商で購入してきました。
電池ボックスは使用しません。
もともと別用途で使用していて、抜けなくなったのでそのままですw
micro:bitのプログラム
以下を参考にさせて頂きました。
[参考]weatherbit 0.0.12 (sparkfun/pxt-weather-bit)
プログラムはmicro:bitに書き込んでおきます。
実行環境の準備
一部、以下を参考にさせて頂きました。
[参考]LinuxPCでserial通信をしようとした話
先頭の(ホスト)/(コンテナ)で、ホスト側/コンテナ側の作業が分かるようにしています。
(ホスト)シリアルポートの確認
Linuxマシンにmicro:bitをUSB接続し、以下のコマンドを実行してシリアルポートを確認します。
ll /dev/serial/by-id/
合計 0
drwxr-xr-x 2 root root 60 11月 26 13:26 ./
drwxr-xr-x 4 root root 80 11月 26 13:26 ../
lrwxrwxrwx 1 root root 13 11月 26 13:26 usb-ARM_DAPLink_CMSIS-DAP_XXXX -> ../../ttyACM0
XXXXの部分は長いので省略しています。
これでttyACM0と確認でき、dev配下にシンボリックリンクがあることが分かります。
(ホスト)権限付与
chmod 666 /dev/ttyACM0
(ホスト)コンテナ起動
nvidia-docker run --rm -it -v /mnt/hdd/share:/tmp/share --device=/dev/ttyACM0:/dev/ttyACM0 myDockerImage:Tag bash
nvidia-dockerじゃなくてももちろん大丈夫です。
(コンテナ)cuのインストール
apt install cu
(コンテナ)cuでシリアル通信の確認
cu -s 115200 -l /dev/ttyACM0
temperature:27.549999999999998
humidity:31.218750000000001
pressure:1060.3858593750001
-
確認が取れたので、pythonで実行する準備をします。
(コンテナ)python仮想環境の準備
conda create -n env_name python=3.6.7
(コンテナ)仮想環境をactivate
source activate env_name
(コンテナ)パッケージのインストール
以下を参考にさせて頂きました。
[参考]AmbientDataInc/ambient-python-lib(GitHub)
pip install pyserial
pip install git+https://github.com/AmbientDataInc/ambient-python-lib.git
(コンテナ)プログラムの実行
プログラムの詳細は省略します。
以下を参考にさせて頂きました。
[参考]micro:bitとAmbientで社内の温度、環境光を可視化した
[参考]Pythonでシリアル通信
cd tmp/share/workdir
python main.py
結果
さいごに
割と簡単に出来ました。
近くに置いてあった温度計と精度以上の差があってはじめは驚きましたが、
安定するまで5~10分程度かかるそうなので、しばらくしたら精度の範囲内になりました。
さて、これをキッカケに今後どう活かしていくか。