しろふくろうず (しろふくろーず)

修繕に関するDIYをメインに趣味や時事ネタなども

Raspberry Pi OS の buster と bullseye のi2cアドレスレンジ範囲の違いと、明るさセンサー使用の巻

こんにちは。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