Inside of LOVOT

GROOVE X 技術ブログ

照度連携確認BOXのDIY

この記事は、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では、一緒に働く仲間を募集しています。少しでも興味を持ってくださった方がいましたら、下記のリンクをご参照ください。

recruit.jobcan.jp