目次
はじめに
電子工作をしていると「光センサー」を使いたい場面がよく出てきます。
前回の記事ではフォトレジスタを紹介しました。安価でシンプルに明るさを検知できる便利なパーツでしたが、あくまで「相対的に暗い・明るい」を判断するもので、正確に数値として照度を測るのは得意ではありません。
そこで今回紹介するのが GY-30 照度センサー。
このモジュールは BH1750FVI という専用ICを搭載していて、周囲の明るさを直接 ルクス (lx) という単位で返してくれます。スマートフォンの自動輝度調整や、オフィスの照度計に使われる方式と同じで、精度はぐっと上がります。
「明るい/暗い」を超えて、「今ここは何ルクス?」と知りたいときにぴったりなセンサーです。
メカエレ Blog | 電子工作とライフ…


Picoで光センサー+LEDによる自動点灯システム|初心者向け光検知ガイド
フォトレジスタを使った光センサーとRaspberry Pi Picoによる自動LED点灯システムを図解&コード付きで解説。明るさ閾値の設定方法や応用例も紹介します。
リンク
GY-30とは何か?センサーの特徴
GY-30 は BH1750FVI という環境光センサーを搭載したモジュールです。
内部で光を受けたフォトダイオードの電流を IC が直接 A/D 変換し、ルクス (lx) 単位のデジタル値を I²C 通信で返してくれます。
ポイント
- アナログ回路不要
前回の記事で紹介したフォトレジスタは抵抗値をADCで読み取りましたが、BH1750は内部で処理済み - 高精度
1 lx から最大 65,535 lx まで計測可能。室内から屋外直射日光までカバー - デジタル出力
I²C なので、Raspberry Pi Pico でも簡単に読み取れる
日常での利用例
・照度計(部屋の明るさを定量的に測る)
・スマートライトの自動調光(暗くなったら照明 ON)
・ロボットの環境認識(昼夜の判定)
・ディスプレイの輝度自動調整(スマホと同じ原理)
接続方法と配線例(Raspberry Pi Picoの場合)
| Raspberry Pi Pico | GY-30 |
| VSYS(39番) | VCC |
| GND(38番) | GND |
| GP0(1番) | SDA |
| GP1(2番) | SCL |
測定サンプルコードと動作確認
from machine import Pin, I2C
import time
# I2C初期化
i2c = I2C(0, scl=Pin(1), sda=Pin(0), freq=100000)
BH1750_ADDR = 0x23 # デフォルトアドレス
CONT_H_RES_MODE = 0x10 # 1lx分解能, 連続測定
# 測定モード設定
i2c.writeto(BH1750_ADDR, bytes([CONT_H_RES_MODE]))
def read_lux():
data = i2c.readfrom(BH1750_ADDR, 2)
raw = (data[0] << 8) | data[1]
return raw / 1.2 # データシートより換算
while True:
lux = read_lux()
print("Light Level: {:.2f} lx".format(lux))
time.sleep(1)フォトレジスタとの違い(前回記事との比較)
| 項目 | フォトレジスタ | GY-30(BH1750FVI) |
| 出力 | 抵抗値変化(アナログ) | ルクス値(デジタル) |
| 接続 | Pico の ADC ピン | I²C (SDA, SCL) |
| 精度 | 簡易的(相対的な明るさ) | 高精度、絶対照度 |
| 回路 | 抵抗分圧が必要 | モジュール単体でOK |
まとめ
前回のフォトレジスタは「安い・簡単・相対的」な光センサー。
今回の GY-30 は「正確・便利・数値化」できる光センサー。
使い分けとしては、
- LEDを光/暗でON/OFFするだけ → フォトレジスタで十分
- 数値として明るさを測定したい → GY-30 が適任
メカエレ Blog | 電子工作とライフ…


Picoで光センサー+LEDによる自動点灯システム|初心者向け光検知ガイド
フォトレジスタを使った光センサーとRaspberry Pi Picoによる自動LED点灯システムを図解&コード付きで解説。明るさ閾値の設定方法や応用例も紹介します。
リンク
コメント