ラズパイ5 pythonの仮想環境 ⑥ 温湿度センサSHT45<その3>
前回、温湿度センサをsmbus2ライブラリを利用してアクセスするのを失敗しましたが、ラズパイに用意されているデバイス・ドライバを利用して測定データを読み出せました。ここでは、 sensirion社のSHT4x用pythonライブラリを利用します。
Python I2C Driver for Sensirion SHT4X
仮想環境に入り、pipで、上記のライブラリをインストールします。
$ source env/bin/activate
(env) yoshi@ras05:~ $ pip install sensirion_i2c_sht4x
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting sensirion_i2c_sht4x
Downloading sensirion_i2c_sht4x-1.0.0-py3-none-any.whl (8.3 kB)
Collecting sensirion-driver-adapters<3.0,>=2.1.8
Downloading https://www.piwheels.org/simple/sensirion-driver-adapters/sensirion_driver_adapters-2.1.9-py3-none-any.whl (28 kB)
Collecting sensirion-driver-support-types~=0.2.0
Downloading https://www.piwheels.org/simple/sensirion-driver-support-types/sensirion_driver_support_types-0.2.0-py3-none-any.whl (4.8 kB)
Collecting sensirion-i2c-driver<2.0,>=1.0.0
Downloading https://www.piwheels.org/simple/sensirion-i2c-driver/sensirion_i2c_driver-1.0.0-py3-none-any.whl (16 kB)
Collecting sensirion-shdlc-sensorbridge~=0.1.1
Downloading https://www.piwheels.org/simple/sensirion-shdlc-sensorbridge/sensirion_shdlc_sensorbridge-0.1.1-py3-none-any.whl (38 kB)
Collecting sensirion-shdlc-driver
Downloading https://www.piwheels.org/simple/sensirion-shdlc-driver/sensirion_shdlc_driver-0.1.5-py3-none-any.whl (33 kB)
Collecting pyserial~=3.0
Downloading https://www.piwheels.org/simple/pyserial/pyserial-3.5-py2.py3-none-any.whl (90 kB)
笏≫煤笏≫煤笏≫煤笏≫煤笏≫煤笏≫煤笏≫煤笏≫煤笏≫煤笏≫煤笏≫煤笏≫煤笏≫煤笏≫煤笏≫煤笏≫煤笏≫煤笏≫煤笏≫煤笏≫煤 90.6/90.6 kB 319.6 kB/s eta 0:00:00
Collecting intelhex~=2.0
Downloading https://www.piwheels.org/simple/intelhex/intelhex-2.3.0-py2.py3-none-any.whl (50 kB)
笏≫煤笏≫煤笏≫煤笏≫煤笏≫煤笏≫煤笏≫煤笏≫煤笏≫煤笏≫煤笏≫煤笏≫煤笏≫煤笏≫煤笏≫煤笏≫煤笏≫煤笏≫煤笏≫煤笏≫煤 50.9/50.9 kB 164.7 kB/s eta 0:00:00
Installing collected packages: pyserial, intelhex, sensirion-shdlc-driver, sensirion-i2c-driver, sensirion-driver-support-types, sensirion-shdlc-sensorbridge, sensirion-driver-adapters, sensirion_i2c_sht4x
Successfully installed intelhex-2.3.0 pyserial-3.5 sensirion-driver-adapters-2.1.9 sensirion-driver-support-types-0.2.0 sensirion-i2c-driver-1.0.0 sensirion-shdlc-driver-0.1.5 sensirion-shdlc-sensorbridge-0.1.1 sensirion_i2c_sht4x-1.0.0
GitHubにあるソースをテキスト・エディタにコピペします。保存名はsht45b.pyにしました。
python-i2c-sht4x/examples/example_usage_linux_sht4x.py
実行します。必要なライブラリは全部インストールされたようです。
(env) yoshi@ras05:~ $ python sht45b.py
serial_number: 241073070;
a_temperature: 21.83; a_humidity: 43.02;
a_temperature: 21.88; a_humidity: 42.98;
a_temperature: 21.83; a_humidity: 43.02;
a_temperature: 21.84; a_humidity: 43.03;
a_temperature: 21.84; a_humidity: 43.03;
a_temperature: 21.82; a_humidity: 43.02;
a_temperature: 21.87; a_humidity: 42.97;
...
測定データの読み出し部分を関数readTempHumi()にしました。
import argparse parser = argparse.ArgumentParser() def readTempHumi(): temperature, humidity = readTempHumi() |
●環境
- ハードウェア Raspberry Pi 5(4GBモデル)
- OS Raspberry Pi OS (64ビット)、リリース日December 5th 2023
- Windows10 22H2にて、ssh(OpenSSH_9.2p1 Debian-2+deb12u2, OpenSSL 3.0.11 19 Sep 2023)および、VNC Viewerを動作させている
●7segLED表示器に表示
I2Cバスに白色の7segLED表示器を接続しました。これ1個だと温度と湿度を交互に表示するなどしなければならないので、アマゾンで購入した同じコントローラを使った赤色の7segLED表示器をI2Cバスにつなぎました。
赤色の7segLED表示器は、小数点の表示が出ません。
第3回の、
ラズパイ5 pythonの仮想環境 ③ 温度センサTMP117の測定結果を4桁7セグメントLED表示器に
温度と湿度の表示部分を、2個の表示器に対応させ、右詰の表示に変更しました。赤色は湿度を整数値で表示するようにしました。
import argparse i2c_address0 = 0x70 HT16K33_GENERIC_SYSTEM_ON = 0x21 HT16K33_GENERIC_CMD_BRIGHTNESS = 0xe0 num={'0':0x3f,'1':0x06,'2':0x5b,'3':0x4f,'4':0x66,'5':0x6d,'6':0x7d, def clear7segLED(addr): # i2c_address0 , i2c_address1 def disp7segLED(data,addr): parser = argparse.ArgumentParser() def readTempHumi(): # main while 1: |
実行例です。