Raspberry Pi で温湿度センサ HDC1050 を使う

組み込み
スポンサーリンク

ストロベリー・リナックスから低価格版の温湿度センサとして HDC1050 のモジュールが発売されています.

これを Raspberry Pi 上の Python から使う方法を紹介します.

スポンサーリンク

特徴的なレジスタ読み出し

このセンサ,使い方は以下の順に制御するだけでとっても簡単.

  1. 温度・湿度の計測開始を指示
  2. 一定時間待つ
  3. 計測結果を読み出し

ただし,計測結果のレジスタの読み出し方法がちょっと変わっています.下図のように,値の読み出し時にレジスタドレスの指定を必要としません.もし指定してしまうと,それは計測開始を意味してしまうので,結果として上手く動作しません.

Read Humidity and Temperature Measurement

以降では,これの問題を回避して HDC1050 を制御するスクリプトについて順に説明します.

Python 用 I2C ライブラリの作成

前述の仕様のため,Python から I2C デバイスを制御するときによく使われる smbus が使えません.そこで,I2C 用のライブラリ(i2cbus.py)を自作することにします.

ライブラリといってもとてもシンプルで,こんな感じです.

read を 1 個の引数で呼び出すと,レジスタアドレスを指定せずに読み出しを行います.これによって HDC1050 の計測結果を読み出せるようになります.

Python 用の HDC1050 ライブラリ

先ほどの i2cbus を使うと,HDC1050 を制御するライブラリ(hdc1050.py)はこのように書けます.

レジスタの値を読み出して,データシートの下記の換算式に沿って計算しているだけです.

HDC1050換算式

Python による HDC1050 の制御

以上をまとめるとスクリプト全体は次のようになります.

これを hdc1050.py という名前で保存して実行すると次のように,温度と湿度が出力されます.

ライブラリ化

以上のコードをライブラリ化したものを下記に置いてます.
https://github.com/kimata/rasp-python

コメント

  1. […] そこで,『Raspberry Pi で温湿度センサ HDC1050 を使う』で作成した i2cbus モジュールを使って TSL2561 を制御するライブラリを作成してみました. […]