照度センサ BH1750モジュールをESP32で使う
照度センサのBH1750モジュールを使ってみます。
3個で1090円でした。

配線
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」と検索して一番上に出てくるやつを使います。

サンプルスケッチを参考にプログラム書きます(ほぼコピペ)
#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)
動作確認
シリアルモニタで見てみます。

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

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);
}ちゃんと動きました。
おわり





