Edited at

(メモ)micro:bitで温湿度・気圧を測定してAmbientで可視化


はじめに

業務でAIを扱っているのですが、

AIと言ったらIoTと切っても切れない関係に今後なっていくので、

IoTに触れてみようと思いました。

社内の詳しい方からmicro:bitを勧められ、

以下の構成で可視化を試みました。


やろうとしたこと

シリアル通信を使用してデータを拾い、

IoTデータ可視化サービス「Ambient」にデータを送信します。

まずWindowsでうまくいったので、Linux(Ubuntu)上のDockerコンテナから

実施できるように設定していきます。

Windowsでの手順は省略。


手順


デバイスの準備

以下を参考にさせて頂きました。

[参考]GROVEモジュールをmicro:bitにつなぐ拡張ボード

microbit.png

温湿度・気圧センサーはスイッチサイエンスで購入したBME280

GROVEシールドは品切れだったため、秋葉原の千石電商で購入してきました。

電池ボックスは使用しません。

もともと別用途で使用していて、抜けなくなったのでそのままですw


micro:bitのプログラム

以下を参考にさせて頂きました。

[参考]weatherbit 0.0.12 (sparkfun/pxt-weather-bit)

program.png

プログラムは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


結果

ambient.png


さいごに

割と簡単に出来ました。

近くに置いてあった温度計と精度以上の差があってはじめは驚きましたが、

安定するまで5~10分程度かかるそうなので、しばらくしたら精度の範囲内になりました。

さて、これをキッカケに今後どう活かしていくか。