Si7021を使って気温・湿度を検出してみるよ!RASPBERRY PI ZERO WH

Raspberry Pi zero WH

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

Amazon で探す

楽天市場 で探す

ピンアサインなどが異なる場合がありますので各メーカーや販売元の取扱説明書を遵守してください。

Si7021 GY-21 ピンアサイン

Si7021 GY-21 モジュールのピンアサインを以下のように接続しました。

Si7021 GY-21 ピンアサイン
Si7021 GY-21Raspberry Pi Zero
名前機能pin名前
VIN電源入力13.3V DC
SCLシリアルクロック5GPIO9 SCL1(I2C)
SDAシリアルデータ3GPIO8 SDA1(I2C)
GNDグランド9Ground

Raspberry Pi Zero の I2C 設定

raspi-config から 「3 Interface Options」->「P5 I2C」->「Enable」に設定します。

$ sudo raspi-config

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

コメントを残す 0

Your email address will not be published.