背景
Wio BG770AはGroveコネクタが付いているため、さまざまなデバイスを簡単に接続することができます。今回は、M5Stack社の環境光センサを使用して、光の強さを測定し、SORACOM SIMを通じてデータを送信するプロジェクトに挑戦しました。
使用するデバイス
- Wio BG770A v1.0
- M5Stack用環境光センサユニット(BH1750FVI-TR)
- SORACOM Air for セルラー(SIMカード)
電源電圧の問題
M5Stack社のデバイスを使用する場合、電源電圧の違いが一番の課題になります。Wio BG770Aは3.3V電源ですが、M5Stack社のデバイスは5V電源であり、ここが一番の課題になります。電源電圧を変換することができるようなモジュールも販売されているので、そちらを使用することでさまざまなデバイスを使う可能性が広がると思います。今回は試していないですが、以下のようなモジュールが使用できると思います。
尚、今回は、Groveコネクタに直接繋いで動作確認しています。M5Stack用環境光センサユニット(BH1750FVI-TR)の回路図を確認すると、LDOで3.3Vを作っているみたいだったので、ダメもとで3.3V電源をそのまま接続しました。そうすると、LDOの出力に3.3Vが出ていることが確認できたので、そのまま直接接続してテストすることにしました!
大まかな手順
- M5Stack用環境光センサをWio BG770AのI2C用のGroveコネクタに接続
- Arduino IDE環境で『soracom_uptime_psm』をベースに進める
- M5Stack用環境光センサを使えるように修正
- M5Stack社公式ライブラリではなく、Wireライブラリを使うように実装
- SORACOMにデータがアップされていることを確認
ソースコードの実装ポイント
SORACOMにデータ送信することを想定して、Wio BG770Aのサンプルスケッチの中で、『soracom_uptime_psm』のスケッチをベースに少し改変することにします。
尚、M5Stack社のDLIGHTのライブラリは使用できなさそうだったので、I2C通信を利用して、ArduinoのWireライブラリを使用して通信を行いました。ソースコードの中でポイントになる部分のみをピックアップしたので、参考にしてください。
Wireライブラリのインクルードと、M5Stack用環境光センサユニットのI2Cアドレスを指定
#include "Wire.h"
#define DLIGHT_I2C_ADDRESS 0x23 // DLIGHTのI2Cアドレス
Groveコネクタへの電源供給と、Wireの初期化
特に、『Groveコネクタへの電源供給』がポイントになります!とても大切!
// Start WioCellular
WioCellular.begin();
digitalWrite(LED_BUILTIN, LOW);
digitalWrite(PIN_VGROVE_ENABLE, LOW);
Wire.begin();
SORACOMに定期的にデータを送信している以下の関数に、環境光ユニットから光の強度を取得する処理を追加
static bool measure(JsonDocument &doc) {
Serial.println("### Measuring");
doc["uptime"] = millis() / 1000;
Wire.beginTransmission(DLIGHT_I2C_ADDRESS);
Wire.write(0x10); // データを要求するコマンド
Wire.endTransmission();
delay(200);
int data;
Wire.requestFrom(DLIGHT_I2C_ADDRESS, 2);
if (Wire.available() == 2) {
data = Wire.read();
data = (data << 8) | Wire.read();
Serial.print("Light Level: ");
Serial.println(data);
}
delay(1000);
doc["data"] = data;
Serial.println("### Completed");
return true;
}
まとめ
今回のプロジェクトでは、Wio BG770AとM5Stack環境光センサを使用して、光の強さを測定し、SORACOMにデータを送信することができました。電源電圧の違いやライブラリの互換性などの課題を克服し、実装することができました。このような手順を踏むことで、Groveコネクタを使って、更にいろいろな挑戦が可能になります。
また、SORACOMに送信されたデータはこのように確認できるようになりました。
その他の参考リンク