照度センサ BH1750モジュールをESP32で使う

照度センサのBH1750モジュールを使ってみます。

www.amazon.co.jp

3個で1090円でした。

f:id:cislabnet:20200630224554j:plain


配線

ESP32に接続します。

ESP32 BH1750
5V VCC
GND GND
22 SCL
21 SDA
GND ADDR

ADDRピンはI2Cのアドレスを決める端子です。
この端子の電圧が0.7V未満のとき0x23、0.7V以上で0x5Cに設定されます。
0x23がデフォルトらしいのでGNDに接続しておきます。

プログラム

まずライブラリをインストールします。
ArduinoIDEのライブラリマネージャで「BH1750」と検索して一番上に出てくるやつを使います。

f:id:cislabnet:20200630224648p:plain

サンプルスケッチを参考にプログラム書きます(ほぼコピペ)

#include <Wire.h>
#include <BH1750.h>

BH1750 lightMeter(0x23);

float lux;

void setup() {
  Serial.begin(115200);
  Wire.begin();
  
  lightMeter.begin(BH1750::CONTINUOUS_LOW_RES_MODE);
}

void loop() {
  lux = lightMeter.readLightLevel();
  Serial.print("Light: ");
  Serial.print(lux);
  Serial.println(" lx");
  delay(20);
}

このライブラリは複数の動作モードがあります。
今回は速いけど精度が劣るLow Resolution Modeで動かしてみました。

- Low Resolution Mode - (4 lx precision, 16ms measurement time)
- High Resolution Mode - (1 lx precision, 120ms measurement time)
- High Resolution Mode 2 - (0.5 lx precision, 120ms measurement time)

動作確認

シリアルモニタで見てみます。

f:id:cislabnet:20200630225719p:plain

動いた~~
シリアルプロッタで見るとこんな感じ。

f:id:cislabnet:20200630225923p:plain

Bluetoothでワイヤレス化

昨日やったシリアルポートのBluetooth化と組み合わせてみます。

#include <Wire.h>
#include <BH1750.h>
#include <BluetoothSerial.h>

BH1750 lightMeter(0x23);
BluetoothSerial SerialBT;

float lux;

void setup() {
  SerialBT.begin("BH1750");
  Wire.begin();
  
  lightMeter.begin(BH1750::CONTINUOUS_LOW_RES_MODE);
}

void loop() {
  lux = lightMeter.readLightLevel();
  SerialBT.println(lux);
  delay(20);
}

ちゃんと動きました。
おわり