稼働中

Raspberry Pi Pico(d_16)照度測定

BH1750FVI AQM0802A-RN-GBW (I2C)

BH1750FVIはローム社製の環境光センサー(照度センサー)です。
AQM0802A-RN-GBWは2行8文字の小型LCDです。
BH1750FVI(照度センサー)で測定した照度値を小型液晶のAQM0802A-RN-GBWに表示してみます。
BH1750FVI(照度センサー)は記事d_15、AQM0802A-RN-GBW(LCD)は記事d_14に記載しています。
実際には、各々記事s_12記事s_11のBH1750c.py、AQM0802c.pyをインポートしています。各メソッドなど使い方は対応する記事を参照してください。

接続例

BH1750FVIとAQM0802Aの動作電圧が違ってます。そのためI2C通信のラインが違ってます。
BH1750FVIはI2C1のSDA(GP10)SCL(GP11)、AQM0802AはI2C0のSDA(GP12)SCL(GP13)としました。
BH1750FVI、AQM0802A接続例
接続出来たらI2Cデバイスのスレーブアドレスを調べてみます。
ThonnyのShellで確認しました。
BH1750FVIのスレーブアドレスは0x23(ADDR=’L’)、AQM0802Aのスレーブアドレスは0x3eです。


>>> from machine import I2C,Pin
>>> i2c=I2C(1, scl=Pin(11), sda=Pin(10), freq=100_000)
>>> i2c.scan()
[62]                #AQM0802A '0x3e'
>>> i2c=I2C(0, scl=Pin(13), sda=Pin(12), freq=100_000)
>>> i2c.scan()
[35]                #BH1750FVI '0x23'
>>> 

スクリプト

スクリプトは以下のようにしました。
1sec毎にLCDの照度値を更新しています。
BH1750c.py、AQM0802c.pyをRaspberry Pi Picoにアップロードしている状態とします。
※開発環境はThonnyです。ThonnyでMicroPythonをRaspberry Pi Pico with RP2040にインストールして使っています。
※Raspberry Pi Pico単独で動作させるには’main.py’としてRaspberry Pi Picoにuploadして使います。


pico_syoudokei_02b.py
#!/usr/bin/env python
# -*- coding: utf-8 -*
from machine import I2C,Pin
import time
from BH1750c import BH1750
from AQM0802c import AQM0802

# AQM0802A-RN-GBW  LCD-Driver ST70328
a=AQM0802(0,12)                 #num=0,sda=12

# BH1750FVI digital Ambient Light Sensor I2C
b=BH1750(1,10,0x23)             #num=1,sda=10,slave=0x23

a.aqm_init(0x0f)                # カーソル点滅
time.sleep(2)
a.aqm_init(0x0c)                # カーソルなし
a.aqm_setCursor(0, 0)           # カーソル位置0行0列
a.aqm_printStr('*BH1750*')      # 表示

b.S_Mode('C','H')               # 連続測定、High Resolution

while True:
    lx=b.L_Meas()               # 照度測定
    dat=int(lx[1])
    l=len(str(dat))
    d_dat=" "*(6-l)+str(dat)+'Lx'
    print(d_dat)                # Thonnyのshellに表示

    a.aqm_setCursor(0, 1)
    a.aqm_printStr(d_dat+'Lx')  # 6桁+Lx
    time.sleep(1)               # 1sec 待機

実行結果

実行してみました。結果は以下のようになりました。

まとめ

Raspberry Pi Picoで自作モジュールBH1750c.py、AQM0802c.pyを使って照度測定値をLCD表示しました。