こんにちは。DIYフクロウです(・ω・)ノ
Raspberry Pi OS の buster と bullseye のi2cアドレスレンジ範囲の違い 備忘録です
(buster 32bit とbullseye 32bitにて確認)
図において
左がレガシーのBuster、右が現行のBullseryeです。
seeed社のGrove Base HAT for Raspberry Pi(0x04アドレスのSTM32版) のアナログ入力が使えなくて(=動かない)
見比べたところ、
Bullseyeでは0x03,0x04,0x05,0x06,0x07の割り当てが無いから使えないの(・ω・;)
(右図の赤字の箇所がBullseyeから割り当てなしI2Cアドレス)
seeed社のGrove Base HAT for Raspberry Piの
STM32版はファームウェアを書き換えて0x08以上にしないと無理っぽいですね
(しろふくろうはすぐには無理です)
現行のMM32版のGrove Base HATは、I2Cアドレスが0x08なので BullseryeでもBusterでも
どちらでも使えると思います。
ということで、
/home/pi/grove.py/grove/adc.pyの57行目:
def __init__(self, address = 0x08):
の0x08は使用するGrove Base HATがSTM32かMM32かによって、I2Cアドレスに書き換えましょう。(STM32=0x04、MM32=0x08)
書き換えたら、/home/pi/grove.py の階層で
sudo pip3 install . を再度して反映させましょう。
し忘れると、/home/pi/grove.py/grove/の階層にある
grove_light_sensor_v1_2.py 等のアナログ入力(adc.py)を使うpython3サンプルで
Check whether I2C enabled and Grove Base Hat RPi or Grove Base Hat RPi Zero inserted
のエラーが出てしまうので、反映は必須です (;ω;)
ちなみに、OKな場合は、次の通り出力されます。
pi@raspberrypi:~/grove.py/grove $ python3 grove_light_sensor_v1_2.py
Hat Name = 'Grove Base Hat RPi Zero'
Usage: grove_light_sensor_v1_2.py <pin>
<pin> could be one of below values
in the pin column for ADC function
And connect the device to corresponding slot
==============
pin | slot
==============
0 | A0
2 | A2
4 | A4
引数0を付けた場合、A0ポートに接続した明るさセンサーの値が数値で出ます:
pi@raspberrypi:~/grove.py/grove $ python3 grove_light_sensor_v1_2.py 0
Hat Name = 'Grove Base Hat RPi Zero'
Detecting light...
Light value: 37
Light value: 36
Light value: 36
Light value: 36
Light value: 36
wiki.seeedstudio.com
以上となります(`・ω・´)v