Raspberry Pi OS (64-bit) ② I2C
I2Cの利用では、i2cdetectなどのコマンドを利用することが多いです。それらが含まれているパッケージi2c-toolsを調べます。apt-cache show i2c-toolsを実行しました。
4.2がインストールされていました。最新版は4.3です。
ラズパイのI2Cバスには、気圧センサLPS22HBをつなげました。i2cdetect -y 1を実行します。0x5dに見つけてきました。
WHO AM Iレジスタ(0x0f)を読み出します。データシートには0b10110001が読み出せるとあるので、正しく読み出せたようです。
●smbusライブラリ
i2cのpythonライブラリsmbusでLPS22HBのデータを読み出します。
import smbus
import time
i2c = smbus.SMBus(1)
addr = 0x5d
i2c.write_byte_data(addr, 0x10, 0x10)
while 1:
i2c.write_byte_data(addr, 0x11, 0x11)
data = i2c.read_i2c_block_data(addr, 0x28, 3)
press = (data[2]<<16 | data[1] << 8 | data[0] ) / 4096.0
print("Press = " + str(int(press)) + "hPa")
data = i2c.read_i2c_block_data(addr, 0x2b, 2)
temp = (data[1] << 8 | data[0] ) / 100.0
print("Temp = " + str(round(temp,1)) + "`C")
time.sleep(2)
実行結果です。I2Cバスは、32ビット版と同様に利用できるようです。