
Raspberry Pi Zero WH から Si7021(HTU21)GY-21 モジュールを使用して気温、湿度を検出してみる。
※SHT11、SHT15の交換品と説明しているところもある。
はじめに
記事内容につきましては、Sayabo の独自仕様や不備、不具合等が含まれる場合がございます。動作保証するものでは、ございませんので、ご参考にされる場合、自己責任にてお願いします。
Si7021 のデータシートは、参考までに
準備するもの
Raspberry Pi Zero WH 本体の他に必要となるものを準備します。
- Si7021(HTU21)GY-21 モジュール
- ジャンパー線
※Si7021 とありますが今回、使用したのは、センサーに htu21 sht21 と刻印されているモジュールです。怪しさ満点(笑
Aliexpress にてモジュールを購入しました。「Si7021」と検索すると笑笑出てきます。w
ピンアサインが VIN、SCL、SDA、GND の4つタイプのモジュールを使用しています。
ピンアサインなどが異なる場合がありますので各メーカーや販売元の取扱説明書を遵守してください。
Si7021 GY-21 ピンアサイン
Si7021 GY-21 モジュールのピンアサインを以下のように接続しました。
Si7021 GY-21 | Raspberry Pi Zero | ||
---|---|---|---|
名前 | 機能 | pin | 名前 |
VIN | 電源入力 | 1 | 3.3V DC |
SCL | シリアルクロック | 5 | GPIO9 SCL1(I2C) |
SDA | シリアルデータ | 3 | GPIO8 SDA1(I2C) |
GND | グランド | 9 | Ground |
Raspberry Pi Zero の I2C 設定
raspi-config から 「3 Interface Options」->「P5 I2C」->「Enable」に設定します。
$ sudo raspi-config
Raspberry Pi Zero には、i2c-tools が初期インストールされていますがもし、無ければインストールする。
$ sudo apt install i2c-tools
i2cdetect の簡易的な使い方
# デバイスの確認 $ i2cdetect -l i2c-1 i2c bcm2835 (i2c@7e804000) I2C adapter # 機能の確認 $ i2cdetect -F 1 Functionalities implemented by /dev/i2c-1: I2C yes SMBus Quick Command yes SMBus Send Byte yes SMBus Receive Byte yes SMBus Write Byte yes SMBus Read Byte yes SMBus Write Word yes SMBus Read Word yes SMBus Process Call yes SMBus Block Write yes SMBus Block Read no SMBus Block Process Call no SMBus PEC yes I2C Block Write yes I2C Block Read yes # アドレスの確認 $ i2cdetect -y 1 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: 40 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- --
簡単な Si7021 GY-21 センサーの使い方
Silicon Labs の Si7021 データシートです。
Python3 から smbus や smbus2 を使って操作を試みたのですが 0xE5 の湿度(Hold Master Mode)値しか取得できませんでした。😥
解決方法が見つからないので他を探していたところ pigpio を使った方法がありました。😊
$ sudo apt install pigpio
pigpio をインストール
$ sudo systemctl enable pigpiod.service $ sudo systemctl start pigpiod.service
pigpiod を有効化して起動する。(初回のみ)
$ pip install pigpio
PyPI から pigpio daemon を操作するライブラリをインストールします。
$ pip install pi-si7021
同じくPyPI から pigpio ライブラリをベースに Si7021 用に作られたライブラリをインストールします。
$ vi sample.py #!/usr/bin/env python from pi_si7021 import Si7021 RHTEMP = Si7021() print("Temperature: " + str(round(RHTEMP.temperature, 2)) + u" \u00B0C") print("Relative humidity: " + str(round(RHTEMP.relative_humidity, 2)) + " %") RHTEMP.close()
サンプルにあったプログラムです。
$ python sample.py Temperature: 25.5 °C Relative humidity: 56.68 %
気温と湿度が取得できました。
今回は、ここまで
でわ!
Was this helpful?
0 / 0