🍉

新センサー導入:いろいろな可能性を持ったセンサーと無料の可視化サービスを試してみた

2023/07/11に公開

はじめに

前回までのブログで使用していたRaspberry Piに新しいセンサーを導入して、その機能をいろいろ試していく新シリーズとなります。

今回購入したセンサーについて

今回購入したのは、「RPZ-IR-Sensor Rev2」というRaspberry Piとの接続端子にピンソケット、I2C拡張端子(P2)にピンヘッダを実装済みの完成品基板です。
これは温度、湿度、気圧、照度センサーに加えて赤外線LEDと赤外線受信ユニットを備え、センシングだけでなく赤外線リモコンの機能等、今後様々な検証に利用できそうな可能性を秘めたものとなっています。


Raspberry Piにピッタリと接続できます。(タイトなケースには入らなくなりました)

センサーのセットアップ

センサーのセットアップと動作確認を行います。

1) I2Cを有効化する

本製品が接続するI2Cインターフェースは、OSインストール直後は無効になっているとの事なので、有効化します。
/etc/module の修正という方法をやってみたのですが、結果的に有効化できなかったため、ツールを使って有効化することにしました。

Raspbianの設定ツールを起動します。
sudo raspi-config

「3.Interface Options」を選択

「P5 L2C」を選択

「はい」(または「Yes」)を選択して「Enter」キーを押します。

2) センサーの動作確認

i2c-toolsをインストールします。
sudo apt-get install i2c-tools

i2c-toolsでI2Cで接続されているデバイスを確認します。
i2cdetect -y 1

ここでは、アドレス0x39、0x76、0x77にデバイスの接続を確認できました。
初期不良等は無さそうで一安心!

3) センサーをプログラムから使えるように設定

本センサー基盤の販売元である「Indoor Corgi」から、センサー制御ソフトウェア「cgsensor」が公開されていますので、これを使用してセンサーを制御します。

Indoor Corgi
https://www.indoorcorgielec.com/
GitHub
https://github.com/IndoorCorgi/cgsensor

センサー制御ソフトウェア「cgsensor」をインストールします。
sudo python3 -m pip install -U cgsensor

コマンドラインツールを使って計測してみます。
cgsensor all

無事計測できているようですので、次はpythonのサンプルコードから計測してみます。

サンプルコード
https://github.com/IndoorCorgi/cgsensor/blob/master/examples/bme280_basic.py

こちらも問題なさそうです。

4) ライブラリインストールの準備

この後、Gitからライブラリのインストールを行うための準備をしておきます。

Raspberry Pi OSにインストールされているソフトウェア、ライブラリをアップデートします。
sudo apt update
sudo apt upgrade

Gitをインストールします。
sudo apt install git

Pipをインストールします。
sudo apt install python3-dev
sudo apt install python3-pip

Ambientについて

AmbientはIoTデータの可視化サービスです。
一定の制限内であれば、無料で使用することができます。
今回はこのサービスを使用して、センサーデータの可視化(グラフ化)を行います。

https://ambidata.io/

1) Ambientの準備

ユーザ登録を行い、ユーザ設定ページから「チャンネルを作る」でチャンネルを作成しておきます。

2) Ambientへの接続設定

PythonのAmbientライブラリをインストールします。
https://github.com/AmbientDataInc/ambient-python-lib

sudo python3 -m pip install git+https://github.com/AmbientDataInc/ambient-python-lib.git

Ambientにアップロードするためのコードを追加します。
import ambient
作成したチャンネルのIDとライトキーを設定します。
am = ambient.Ambient(channel id, "your_writeKey")
後は以下のようにデータを送れるようです。
r = am.send({"dataname1": value1, "dataname2": value2})

今回はこのようにコードを追記しました。
am = ambient.Ambient(64165, "xxxxxxxxxxxxxxxx")
r = am.send({'d1': bme280.temperature, 'd2': bme280.humidity})

3) Ambientのチャート設定



左軸:”d1”=気温(10℃~45℃)、右軸:”d2”=湿度(30%~80%)で設定しました。

4) 自動送信設定

1度送信して問題なかったので、1分毎に起動するように設定します。
crontab -ie
*/1 * * * * python3 /home/pi/iot/bme280_basic.py

5) 結果

エアコンを効かせた部屋で検証(13時頃に一旦切っています)して、それらしい結果が得られました。
左軸:気温(青)
右軸:湿度(赤)

今回の検証はここまでとなります。
PoC等の簡単なデータ確認にはAmbientが使えそうです。

Discussion