TOPに戻る

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ビット版と同様に利用できるようです。

-