2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Wio BG770Aで使ってみるM5Stack用環境光センサユニット!その方法とは?

Last updated at Posted at 2025-04-03

背景

Wio BG770AはGroveコネクタが付いているため、さまざまなデバイスを簡単に接続することができます。今回は、M5Stack社の環境光センサを使用して、光の強さを測定し、SORACOM SIMを通じてデータを送信するプロジェクトに挑戦しました。

Wio BG770Aで M5Stack用環境光センサ ユニットを使う!.png

使用するデバイス

  • 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が出ていることが確認できたので、そのまま直接接続してテストすることにしました!

image.png

大まかな手順

  1. M5Stack用環境光センサをWio BG770AのI2C用のGroveコネクタに接続
  2. Arduino IDE環境で『soracom_uptime_psm』をベースに進める
  3. M5Stack用環境光センサを使えるように修正
  4. M5Stack社公式ライブラリではなく、Wireライブラリを使うように実装
  5. 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に送信されたデータはこのように確認できるようになりました。

image.png

image.png

その他の参考リンク

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?