ゆるく楽しむプログラミング

温湿度センサー AM2301B / DHT20

温湿度センサー AM2301B

インターフェイス : I2C (7bitアドレス:0x38)
電源 : 3.3V(2.2~5.5V電源に対応)
計測範囲 : 湿度0~100% 温度-40~80℃

接続は▼の表通り ※RaspberryPi PICOはピン割り当てが可変なので公式(mBed)ボードライブラリを使用した場合の接続
AM2301B ArduinoUNO M5Stamp PICO RaspberryPi PICO
白リード(SCL) A5 G21 GP7 (mBed)
黄色リード(SDA) A4 G22 GP6 (mBed)
赤リード(VCC) 5V 3.3V 3.3V
黒リード(GND) GND GND GND

DHT20

AM2301BとDHT20は(少なくともソフトウエア的には)同じモノのようです。
スペックシートの記載もデータ読み取り方法も一緒でした。
AM2301B用に書いたスケッチは、そのままDHT20で使用できます。


読み取り手順

電源を入れてから100ミリ秒以待つ          受信データ
0x71を送信 
100ミリ待つ
0xAC 0x33 0x00 を送信 
80ミリ秒待つ 
7Byte受信
ステータスをチェック
Bit[7] = 0なら読み取り完了
CRC8チェック 

CRCは CRC8-Dallas/Maxim 、初期値は0XFFで左ローテート
生成多項式は 1 + x^4 + x^5 + x^8 => B100110001 => 0x31

読み取ったデータは温度(RH)、湿度(RT)はそれぞれ20Bit、湿度・気温への変換は
湿度(%) = (RH/2^20) × 100
温度(℃) = (RT/2^20) × 200 - 50

スケッチ

AM2301B: AM2301Bの読み出し手順、出力はシリアルモニター(9600bps)
以上の スケッチを公開しています。

YuruPuro/AM2301B

解説動画