- Published on
Raspberry Piに「SHT21」を接続し制御する
1593文字3分で読めます–––
閲覧数
- Authors
- Name
- 将 有坂
- short bio
- ラズパイやArduinoで電子工作をしてます。
はじめに
Raspberry Piは豊富なGPIOピンを備え、様々なセンサーやモジュールを接続して利用することができます。この記事では、温度および湿度センサーである「SHT21」をRaspberry Piに接続し、制御する手順について説明します。
※ センサー類を安く買うなら → AliExpress 🛒 早く届くのが良ければ → Amazon 🚚
1. SHT21センサーの概要
SHT21はI2C通信を介して温度と湿度を計測するデジタルセンサーです。非常に精度が高く、Raspberry Piなどのシングルボードコンピューターで利用されることが一般的です。
2. SHT21の接続
まず、SHT21をRaspberry Piに接続します。通常、SHT21にはVCC、GND、SCL、SDAの4本のピンがあります。
- VCC: 3.3Vの電源
- GND: 接地
- SCL: I2Cクロック線
- SDA: I2Cデータ線
これらを対応するRaspberry Piのピンに接続します。Raspberry Piの場合、3.3Vの電源とI2Cピンは通常以下のようになります。
- 3.3V: Pin 1
- GND: Pin 6
- SCL: GPIO3 (Pin 5)
- SDA: GPIO2 (Pin 3)
3. Pythonコードの作成
次に、Raspberry Pi上でPythonを使ってSHT21を制御するコードを書きます。smbus
というライブラリを使用してI2C通信を行います。
import smbus
import time
# SHT21のI2Cアドレス
SHT21_I2C_ADDR = 0x40
# SHT21コマンド
TEMP_HOLD_CMD = 0xE3
HUM_HOLD_CMD = 0xE5
# I2Cバスの初期化
bus = smbus.SMBus(1)
def read_temperature():
# 温度を取得
raw_temperature = bus.read_i2c_block_data(SHT21_I2C_ADDR, TEMP_HOLD_CMD, 2)
temperature = ((raw_temperature[0] << 8) + raw_temperature[1]) & 0xFFFC
celsius = -46.85 + (175.72 * temperature / 65536.0)
return celsius
def read_humidity():
# 湿度を取得
raw_humidity = bus.read_i2c_block_data(SHT21_I2C_ADDR, HUM_HOLD_CMD, 2)
humidity = ((raw_humidity[0] << 8) + raw_humidity[1]) & 0xFFFC
humidity_percent = -6.0 + (125.0 * humidity / 65536.0)
return humidity_percent
while True:
temperature = read_temperature()
humidity = read_humidity()
print(f'Temperature: {temperature:.2f} °C, Humidity: {humidity:.2f} %')
time.sleep(2) # 2秒待つ
このコードは、SHT21から温度と湿度を読み取り、それをRaspberry Piのコンソールに表示するものです。
4. コードの実行と確認
最後に、Pythonコードを実行してSHT21からのデータが正しく読み取られるか確認します。コードが正常に動作すれば、Raspberry Pi上でSHT21を制御する基本的な手順が完了します。
これで、Raspberry PiにSHT21を接続し、Pythonを使用して温度と湿度を取得する準備が整いました。制御の拡張や他のプロジェクトへの組み込みなど、さまざまな可能性が開かれます。
※ センサー類を安く買うなら → AliExpress 🛒 早く届くのが良ければ → Amazon 🚚