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)としました。
接続出来たら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表示しました。