Raspberry Piに新しい温度湿度センサを接続してみました。
今回接続をしたのは、「AM2302」という型式の温度湿度センサです。別名を「DHT22」とも言われているようです。
製造メーカーはDHT11と同じAOSONGです。
DHT11より一回り大きく、性能、精度もDHT11よりまともで値段も高くなっています。姉妹品と思われる「AM2301」というものもあります。
DHT11は電源電圧によって湿度の精度が悪くなるクセがあるとの調査結果があるようですがAM2302は多少良いようです。
接続はDHT11と同等です。ピン配置もDHT11と同じです。
電源、GND、データ線の3本の接続で完了です。プルアップ抵抗は必要なので接続してください。
データを読み出すソフトはDHT11とおおよそ一緒ですが読み取った値を数値化する部分が異なります。
AM2302:
5Byets読み出され
[湿度上位]+[湿度下位]+[温度上位]+[温度下位]+[パリティ]
湿度 = (湿度上位 x 256 + 湿度下位) / 10
温度 = (温度上位 x 256 + 温度下位) / 10
読み出された値の最上位ビットが1の場合マイナスの値とする
最上位ビットをクリアし上記の計算し-1を掛けると求める値となる
DHT11:
5Byets読み出され
[湿度]+[00h]+[温度]+[00h]+[パリティ]
湿度 = 湿度 (整数かつ符号なし)
温度 = 温度 (整数かつ符号なし)
という構成です。
パリティはデータ部分の4バイトをすべて符号なしとして加算します。
送受信バイト数、パリティは同じなので変更はわずかです。
今回はDHT11用のソフトを書き換えてAM2302用としました。