はじめに
前回こちらの記事で実験したBLEセンサを、さらに具体的用途を決めて、製作を行いました。
https://qiita.com/DeviceManager/items/440d3f045429a8edef51
自宅の温度・湿度・気圧・CO2の測定とクラウドでの記録を目的としています、センサは室内・室外に設置する想定です。
室内センサ
室内センサで測定するのは、温度・湿度・気圧・CO2になります。CO2センサの電力消費が多いことから、電池駆動はあきらめ、USBで常時電源を供給して動作するようなものにします。
回路図
シンプルです、XIAO BLEとBME280、CO2センサーのみです。
ソースコード
こちらに公開しました。Platform IOでArduinoを利用したファイル一式です。ほかの環境でのテストは未確認ですが、platform IOで読み込ませることで、たぶんこのまま利用できると思います。
https://github.com/keitanak/XIAO-BLE-IoT-Sensor
ソースコードの以下のコメントを外すことで、CO2センサからもデータの取得をおこない、BLEデータとしてアドバタイズします。
データフォーマットはヘッダー部分を除いて、以下のようにしています。
// 温度
0x10,0x00,0x00,
// 湿度
0x11,0x00,0x00,
// 気圧
0x14,0x00,0x00,
// Battery voltage
0x40,0x00,
// CO2
0x17,0x00,0x00
外観
簡単なものですが、プリント基板にしてみました。JLCPCBさんにオーダーしました。
左側がCO2センサ、右上がBME280、右下にXIAO BLEです。ちょっと密着しすぎましたかね。
室外センサ
室内センサで測定するのは、温度・湿度・気圧になります。BME280のみで済むのでスリープも組み合わせて消費電力を抑えます、電池駆動で、必要な時にUSBで充電して動作するようなものにします。
回路図
シンプルです、XIAO BLEとBME280のみです。ここには表現されていませんが、LIPOバッテリーも必要です。
ソースコード
ソースコードの以下のコメントを入れておくことで、BME280のみデータの取得をおこない、BLEデータとしてアドバタイズします。
バッテリー駆動にするために、消費電力を抑えるための仕組みを入れてみています。
XIAOでArudino利用時のスリープ動作に関して、なかなかまとまった情報がなかったのですが、
こちらのスレッドの内容が一番役に立ちました。
スリープに関わる要点だけ抜き出してみます
// このライブラリが必要のようです
#include <Adafruit_SPIFlash.h> // Need to be deleted /Documents/Arduino/libraries/SdFat
// setup()の中では以下の部分を実施しておきます。
// Enable DC-DC converter
NRF_POWER->DCDCEN = 1; // Enable DC/DC converter for REG1 stage
// Sleep QSPI flash
flashTransport.begin();
flashTransport.runCommand(0xB9); // enter deep power-down mode
flashTransport.end();
// loop()の中ではスリープするのみでよさそうです。
//待ち時間を入れます。
delay(delayTime);
この状態で消費電流を計測してみると、スリープしている期間の消費は5μアンペアです。かなり抑えられていますので、これで良しとしました。
データフォーマットはヘッダー部分を除いて、以下のようにしています。
// 温度
0x10,0x00,0x00,
// 湿度
0x11,0x00,0x00,
// 気圧
0x14,0x00,0x00,
// Battery voltage
0x40,0x00,
// CO2
0x17,0x00,0x00
外観
簡単なものですが、プリント基板にしてみました。PCBGOGOさんにオーダーしました。
左側がBME280、右側下にXIAO BLEです。真ん中にあるジャンパは消費電流を測定する場合に利用しますが、通常はショートします。
動作確認
まだ長時間の評価はしていませんが、ひとまずはデータがアドバタイズされています。
CO2センサー付き
10 0AC2 温度 27.54℃
11 1140 湿度 44.16%
14 276A 気圧 1009 hPa
40 29 バッテリー (なし)
17 022B CO2 555 ppm
CO2センサー無
10 0A19 温度 26.37℃
11 119D 湿度 47.23%
14 2770 気圧 1009 hPa
40 27 バッテリー 3.9V
今後の計画
ようやくセンサー部分ができました。あとはこのセンサーからデータを受信して、クラウドに送信するゲートウエイを別に準備しようと思います。
バッテリーの持続時間も気になるところなので、評価してみたいと思います。