安価で高性能な温湿度センサSi7021をIchigoJamに接続

IchigoJamで使用可能な安価なI2C接続の温度+湿度センサを見つけたので、接続してみました。
購入した温湿度センサはSiliconLabsのSi7021です。Amazonで400円程度、AliExpressだと$2程度で販売されています。
Amazonでの販売例:
IchigoSodaの登場など、IoT用途への期待が高まるIchigoJamですが、IoTセンサの基本となる環境センサとなると、I2Cの相性の問題や、得られたデータの処理などに悩むことも多いでしょう。
ここでは、手っ取り早く環境センサの実験を行えるよう、SiliconLabsのSi7021のサンプル・プログラムを紹介します。もちろん、IchigoSodaでも動作します。
ハードウェアは、SiliconLabsのSi7021を搭載した下図の環境センサモジュールと、IchigoJam Tを用いました。
モジュール基板上には3つの型番が書かれていますが、搭載されているセンサはSi7021です。
SiliconLabsのSi7021を搭載した環境センサモジュール。Amazonで400円、AliExpressで$2で売られている。ピンヘッダをハンダ付けするときは、センサ部へ半田やフラックスが付着しないように、十分に注意する。裏面でハンダ付けしたほうが、センサは保護できるが、裏面は裏面で周辺部品が近接するので。。。
これらの各ピンをIchigoJam TのCN5へ接続するのですが、残念ながらピンの順番が異なるので、ジャンパワイヤーなどで繋ぐ必要があります。下表のIchigoJam Tの信号名の前に付与した数字は、IchigoJamのCN5の手前側を1番ピンとしたときのピン番号です。
Si7021  IchigoJam T
1. VIN -----— 2. 3.3V
2. GND -----– 1. GND
3. SCL -----– 3. SCL
4. SDA -----– 4. SDA

IchigoJam BASIC用プログラム

以下に環境センサから情報を取得して表示するプログラムを示します。IchigoJamのファームウェアは、Ver 1.2.3で動作確認しました。短縮形i2cw命令を使用していたり、 i2cr命令の相性などの問題で、古いファームウェアでは動作しない場合があります。

1 ?"Humidity Sensor SILICON LABS Si7021
2 'if ver()<12348 stop
100 'MAIN
110 let[0],#3ae6,#f3,#f5
120 if i2cw(#40,#800,2) stop
130 if i2cw(#40,#802,1) stop
140 wait 2
150 if i2cr(#40,#806,2) stop
160 A=([3]>>8+[3]<<8)/37-474
170 if i2cw(#40,#804,1) stop
180 wait 2
190 if i2cr(#40,#806,2) stop
200 B=([3]>>9+[3]<<7)/26-65
210 ?"Tempr=";A/10;".";A%10;" ";
220 ?"Humid=";B/10;".";B%10
230 wait 300
240 goto 120

プログラムの処理内容

行番号120で初期化コマンドをSi7021へ送信し、行番号130で温度取得コマンドを送信します。温度の取得が完了するまで33msだけ待ってから、行番号150で温度値を受信します。
湿度についても、行番号170~190で同様に取得します。
行番号160と200は、I2Cからの受信データから温度値と湿度値の計算部です。定数がSi7021のデータシートと異なるのは整数演算での誤差を最小化するための工夫です。また、湿度の方は補数の演算を避けるために符号ビットを使わないようにしました。
取得結果は、温度値、湿度値ともに10倍値にしました。表示するときは、整数部に10で割った値を、小数部にその余りを出力してください。

ケースへ入れ、乾電池で駆動してみる

下図は、Wi-FiネットワークボードMixJuiceと、乾電池を接続し、ケースに入れたときの様子です。
IchigoJam、MixJuiceの省電力機能を利用することで、温度と湿度を長期間(数か月)にわたって送信し続けるIoT環境センサを作成することが出来ます。
IchigoJamを使ったIoT環境センサの製作例。
このIoT環境センサ(ハードウェア)を使って、クラウドサービスAmbientへのデータ送信を開始しました。
Ambientへ送信中
ソフトウェア(IoT環境センサ用のプログラム)は、MixJuiceを使って、下記へアクセスして、ダウンロードすることができます。
ボクにもわかるMixJuice ホームページ
?"MJ GET bokunimowakaru.github.io/MJ/0.txt"
メニュー[8]→[8]→[25]
製作したIoT環境センサから温度と湿度情報をクラウドへ送信を開始したときの様子。乾電池で数か月の動作が可能な見込み。

雑談

現在は、様々なメーカーから半導体温湿度センサが販売されていますが、半導体温湿度センサと言えば、スイスのSENSIRION社が有名でした。
下図は2012年に1個3000円で購入したSENSIRIONのSHT71です。もともと、ピンヘッダがついていたのですが、実は、2.54ミリピッチだと勘違いして購入し、あまりの小ささに驚きました。

また、各種のI2Cデバイス向けのドライバ部のIchigoJam用プログラムを作成するための情報を、下記に公開しています。IchigoJam TのI2Cデバイス用端子CN5を活用したモジュールが、次々に登場することを願っています。
ボクにもわかるI2Cインタフェース方式
by ボクにもわかるIchigoJam用マイコンボード

安価で高性能な温湿度センサSi7021をIchigoJamに接続」への1件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です