この記事は、GROOVE X Advent Calendar 2025の20日目の記事です。
こんにちは、SWエンジニアの aoike です。 今回は、LOVOTの照度連携機能の話と、その動作を検証するためにDIYでテスト環境を作ったお話をします。
LOVOTの「照度連携」とは?
LOVOTのホーンにはリング型のLEDがついており、LOVOTの電源状態や動作状態を表しています。
このLEDは、眩しくなりすぎないように、周囲の明るさに合わせて自動で輝度を調整しています。LOVOTの照度センサーで環境の明るさを取得し、暗い場所では眩しくないように減光したり、真っ暗になると消灯したりします。こうした機能を私たちは照度連携と呼んでいます。
課題:狙った明るさが作れない!
この照度連携のテストを行う際、これまでは以下のような方法をとっていました。
- 調光機能付きの照明のついた部屋を使う
- 人工太陽灯を使う
しかし、部屋全体の明るさを「5ルクス」「10ルクス」といった細かい段階で均一に調整するのは非常に難しく、再現性のあるテスト環境を作るのが課題でした。
「もっと手軽に、照度連携のテストがしたい……」
ということで、「照度連携確認BOX」を自作することにしました。
照度センシング機能付きBOXを作る
カラーボックスを改造してLOVOTが入れる小さな個室を作り、その内部に光源となるライトを置くことで、明るさを自由にコントロールできるようにします。
そして、BOX内の現在の照度が、設定通りになっているかを客観的に確認するため、Raspberry Pi Pico W と照度センサー BH1750 を使った無線照度計を組み込みました。

システム構成
システム全体の構成は以下の通りです。
Raspberry Pi Pico W がBH1750から値を読み取り、MQTTでデータを飛ばします。

実装のポイント
今回は開発言語に C言語 (Pico C/C++ SDK) を使いました。
BH1750のデータシートはこちらを参考にしました。
I2C通信を使い、アドレスとして0x23を指定します。
1. モード設定(高分解能モード)
今回のBOXは睡眠時間も想定した、真っ暗な部屋の再現が必要です。
データシートには以下のような記述があります。
"Use H-resolution mode or H-resolution mode2 if dark data ( less than 10 lx ) is need." (10ルクス以下の暗いデータを扱う場合は、高分解能モードを使用してください)
暗い部屋だと、ちょうど10ルクス以下の値が必要になります。そのため、今回は高分解能モードを指定するコマンドを使用します。また、通常の低分解能モードだと約4ルクス刻みでしか値が取れませんが、高分解能モードなら1ルクス単位で取ることができます。

// H-Resolution Mode (1lx単位, 測定時間120ms) #define BH1750_CMD_CONT_HIGH_RES 0x10
最大180msの計測時間経過後、計測結果を取得します。

2. Measurement Accuracy の補正
Measurement Accuracy の項目を確認すると、以下の数式が載っていました。

- X: 測定時間レジスタ(MTreg)の値。デフォルトは 69
デフォルト設定で使う限り、後半の 69 / 69は 1になります。生データは実際のルクス値の約1.2倍になる仕様のため、ソフトウェア側で補正が必要になります。
static bool bh1750_read_lux(float *lux_out) {
// ... (読み込み処理) ...
uint16_t raw = (buf[0] << 8) | buf[1];
// 1.2で割ってLuxに変換
*lux_out = (float)raw / 1.2f;
return true;
}
3. データの読み取り
実装したプログラムをPico Wに書き込み、PCからMQTTでデータをサブスクライブ(受信)してみます。 以下のように mosquitto_sub コマンドを使用しました。
mosquitto_sub -h <ipアドレス> -t 'topic名'
今回は、illuminanceという名前でpublishするようにしました。
消灯した状態でBOXのドアを閉めると、以下のような値が取れました。
$ mosquitto_sub -h 172.20.10.14 -t '/illuminance' 0.83
まとめ
こうして完成した「照度連携確認BOX」のおかげで、狙った明るさの環境を作り、定量的かつ再現性高く、手軽にテストできるようになりました。
従来のテスト手法と合わせて、より信頼性の高いソフトウェアを届けていきたいと思います。

最後まで読んで頂きありがとうございます!GROOVE Xでは、一緒に働く仲間を募集しています。少しでも興味を持ってくださった方がいましたら、下記のリンクをご参照ください。