DHT11

■家電制御用のデバイスをまた1つ作るつもりで、今はパーツを集めたり、制御ソフトのコーディングテストをぽつぽつと始めている状態。ターゲットにしているのは加湿器で、湿度センサの値によって加湿器をオンオフしたり、加湿器の重さから水の充填状態を把握できるようにすることが目的。湿度センサを載せたデバイスはすでに一つあるけれど、今度は加湿器の近くに置くので、また別のセンサを使う。最初に使ったのはTDKのセンサだけど、値段が高いので今回は比較的安いDHT11を使うことにした。

 DHT11はデジタルセンサで、VCC, GND以外にデータ線が1本だけあればいい。ただし、クロックもないし、送受信は同一ラインで行われる。データ線はプルアップされていて、コントローラー側で電位をGNDに落とすとアサートとなり、その後センサー側から応答が40ビット戻される。ビット表現はPPMに似たやり方で、一旦データ線をGNDに落としたあと、VCCに戻し、そのVCCが続く時間で0と1を表現している。そのあたりはデータシートで。
 SPIだとクロックをコントローラー側で起こせるので、読み出しタイミングは苦労しないけど、1-wireだとセンサーから返されるデータ線の状態を解析しなければならず、1手間増える。コントローラー側ではデータ線をGNDに落として一定時間たったあと、VCCに上げて、データ線の状態を読み続ける。AVRだとDDRでアウトプット、インプットを切り替えることになる。
 一旦読み出した後、データ線がGNDに落ちるのを待機し、次にVCCに戻ったらVCCの状態が持続する時間を計測する。注意がいるのは、DHT11からのデータ線にあまり信用がおけない点で、データ送信の開始待ちや、終了待ちで無限ループ状態になってしまう可能性が大きいこと。だからタイムアウト動作は安全装置として必須になる。

 やはり、クロックを持たないのがちょっと面倒で、コントローラーの動作クロックでタイミングは変わってしまう。とりあえず8MHzは十分なクロック数で、0と1の判別ができる。センサーからの応答を読み出すロジックは次のようにした。このロジックはコントローラーからのアサートが終わり、センサーからの信号待ちをするところから。GNDに落ちてからVCCに戻ったあと、VCCの状態がどれだけ続くかカウントしている。


ct = 0;
ctp = 0;
limit = 0;
f_loop = 0;
do{
 DHT111_CHKBIT(ch);
 limit++;
 if(limit > 65536){
  f_loop = 1;
  break; //timeout
 }
}while(ch != 0);
do {
 do{
  DHT111_CHKBIT(ch);
 }while(ch == 0);
 do{
  DHT111_CHKBIT(ch);
  ctp++;
  if(ctp > 253){
   f_loop = 1;
   break; // timeout
  }
 }while(ch != 0);
 slot[ct] = ctp;
 ct++;
 ctp = 0;
 if(ct>41){
  f_loop = 1;
 }
}while( f_loop == 0);

 データ線の状態推移を読み取った後でデータ変換する。上のロジックでカウントしたVCCの状態の数を閾値と比較して、長ければ'1'、短ければ'0'ビットにしています。データは全部で40ビット(5バイト)です。


j=0;
mask = 0b10000000;
data[0] = 0;
for(i=1;i<41;i++){
 if(slot[i] > DHT111_BIT_THRESHHOLD){
  data[j] |= mask;
 }
 mask /= 2;
 if(mask == 0){
  j++;
  mask = 0b10000000;
  data[j] = 0;
 }
}

 とりあえずこれで温度湿度データを取り出すことはできたのですが、DHT11から出てくるデータがなんか妙で、データシートによるとHumi(湿度)Integral 8bit, Decimal 8bit, Temp(温度)Integral 8bit, Decimal 8bit, Checksum 8bitとあるのですが、HumiもTempもDecimalは常にゼロが出てくる。Integral(整数値)だけでとりあえず役には立つので別に構わないと言えば構わないのですが、なんか今ひとつあてにならない感じが……。

Copyright (C) 2008-2015 Satosh Saitou. All rights reserved.
戻る
日記::一覧展開
2016.06
卒検突破 (2016.06.26)
急制動 (2016.06.05)
坂道発進 (2016.06.04)
2016.05
スラローム (2016.05.29)
一本橋 (2016.05.28)
半クラ (2016.05.22)
2015.12
2015.11
2015.08
2015.07
2015.06
2015.05
EF50mm F1.8 STM (2015.05.24)
Private Private (2015.05.17)
NTPを整備する (2015.05.02)
2015.04
2015.03
2015.02
潮つ路 (2015.02.22)
未見の星座展 (2015.02.07)
2015.01
PSYCO-PASS劇場版 (2015.01.18)
2014.12
DOMANI/シェル (2014.12.20)
PHPでDMC (2014.12.13)
jouornald (2014.12.07)
2014.11
五木田智央展 (2014.11.08)
2014.10
山口勝弘展 (2014.10.26)
コンタクト (2014.10.18)
ケース加工 (2014.10.11)
山形旅行で (2014.10.04)
2014.09
聖地巡礼 (2014.09.27)
SIAF 2014(3) (2014.09.20)
SIAF 2014(2) (2014.09.14)
SIAF 2014 (2014.09.13)
RaspberryPi B+ (2014.09.06)
2014.08
ヴァロットン (2014.08.09)
GODZILLA(2014) (2014.08.03)
絵画の在りか (2014.08.02)
2014.07
クロニクル1995 (2014.07.26)
SDHCカード集め (2014.07.20)
SDカード再び (2014.07.05)
2014.06
2014.05
駆動系の整備 (2014.05.25)
無限の可能性 (2014.05.24)
PIOON (2014.05.17)
2014.04
大洗 (2014.04.19)
2014.03
唯美主義 (2014.03.09)
写真の境界 (2014.03.02)
2014.02
星を賣る店 (2014.02.15)
日常/オフレコ (2014.02.01)
2014.01
ISCP (2014.01.11)
DOMANI/シェル賞 (2014.01.04)
2013.12
ターナー展 (2013.12.14)
2013.11
反重力 (2013.11.02)
2013.10
木の器 (2013.10.20)
2013.09
ヒステリシス (2013.09.28)
LOVE展 (2013.09.08)
宙色 (2013.09.07)
2013.08
3/4だった (2013.08.17)
福田美蘭展 (2013.08.11)
2013.07
Fedora19 (2013.07.20)
2013.06
Google Cloud Print (2013.06.30)
未来の記憶 (2013.06.16)
梅佳代展 (2013.06.15)
片岡珠子展 (2013.06.09)
椿会展 (2013.06.08)
空想の建物 (2013.06.02)
wiringPi (2013.06.01)
2013.05
2013.04
箱詰め終わる (2013.04.13)
母-娘、姉-妹 (2013.04.06)
2013.03
卒展めぐり (2013.03.30)
恵比寿映像祭 (2013.03.16)
XBeeで接続する (2013.03.10)
Fedora18 (2013.03.09)
Black (2013.03.03)
2013.02
Backupその後 (2013.02.24)
Backup (2013.02.17)
音と光 (2013.02.03)
実験工房 (2013.02.02)
2013.01
いろはにほう (2013.01.26)
燻製を作る (2013.01.19)
2012.12
外装に収める (2012.12.23)
MU (2012.12.22)
スモーク (2012.12.01)
2012.11
Whirl (2012.11.25)
MOTアニュアル (2012.11.18)
2012.10
MPL1151A1 (2012.10.07)
2012.09
(2012.09.16)
夢の光 (2012.09.08)
光のアート (2012.09.01)
2012.08
東京湾大回り (2012.08.26)
2012.07
.hack//VERSUS (2012.07.22)
具体展 (2012.07.21)
国吉康雄展 (2012.07.15)
2012.06
2012.05
DHT11 (2012.05.12)
2012.04
PHPでIPCを行う (2012.04.22)
DHCPを立てる (2012.04.14)
DNSを立てる (2012.04.08)
2012.03
IPv6を追加する (2012.03.17)
MTUを調整する (2012.03.11)
2012.02
ICO再び (2012.02.26)
Viewpoint (2012.02.25)
恵比寿・2 (2012.02.19)
イ・ブル展 (2012.02.18)
恵比寿・1 (2012.02.11)
2012.01
星霜 (2012.01.01)
2011.12
2011.11
美女採取 (2011.11.27)
アサーション (2011.11.20)
日常/ワケあり (2011.11.12)
XB24-BとXB24-ZB (2011.11.06)
2011.10
家電入れ替え (2011.10.23)
2011.09
湿度センサ (2011.09.25)
銀座線ライン (2011.09.17)
竜宮美術旅館 (2011.09.11)
2011.08
しろきもりへ (2011.08.27)
2011.07
免許更新 (2011.07.31)
2011.06
京橋、新橋 (2011.06.26)
シンセシス (2011.06.18)
撤収の準備 (2011.06.04)
2011.05
風穴 (2011.05.15)
PLATFORM (2011.05.14)
2011.04
水・火・大地 (2011.04.17)
2011.03
パーティクル (2011.03.19)
恵比寿映像祭 (2011.03.12)
カナリア (2011.03.06)
2011.02
『ソルト』 (2011.02.19)
豊島美術館 (2011.02.13)
2011.01
藝大先端2011 (2011.01.23)
幽体の知覚 (2011.01.01)
2010.12
PWMで赤外線 (2010.12.26)
2010.11
『水辺にて』 (2010.11.06)
2010.10
アショカの森 (2010.10.30)
補遺の庭 (2010.10.24)
2010.09
シッケテル展 (2010.09.26)
音を鳴らす (2010.09.12)
2010.08
ハーフ (2010.08.21)
発電所美術館 (2010.08.01)
2010.07
2010.06
『未来医師』 (2010.06.13)
会田誠巡り (2010.06.12)
2010.05
桑原漁港 (2010.05.16)
欲望のコード (2010.05.15)
『第9地区』 (2010.05.02)
2010.04
春の海 (2010.04.18)
春の錦帯橋 (2010.04.17)
『機龍警察』 (2010.04.11)
2010.03
虹ヶ浜 (2010.03.28)
菊川湖再び (2010.03.14)
『虐殺器官』 (2010.03.13)
梶取岬 (2010.03.07)
絵画の庭@NMAO (2010.03.06)
2010.02
湯野温泉 (2010.02.06)
2010.01
2009.12
菅野ダム行 (2009.12.20)
2009.11
neoneo展 part2 (2009.11.29)
2009.10
広島ノ顔@HMOCA (2009.10.18)
末武川ダム (2009.10.10)
2009.09
吉宝丸@広島 (2009.09.20)
2009.08
2009.07
下松 (2009.07.12)
T4 (2009.07.05)
2009.06
仙台 (2009.06.07)
蕪島 (2009.06.06)
2009.05
2009.03
2009.02
2009.01
2008.12
神津佐仮説 (2008.12.21)
AVR HTTPサーバ (2008.12.20)
風景るるる (2008.12.14)
2008.11
南志摩・宿浦 (2008.11.22)
志摩あたり (2008.11.01)
2008.10
『剣の名誉』 (2008.10.18)
2008.09
石内都 (2008.09.06)
2008.08
宮島・厳島 (2008.08.30)
精神の呼吸 (2008.08.24)
西国行き (2008.08.23)
ICMP Echo応答 (2008.08.16)
MACフレーム (2008.08.03)
2008.07
小さな世界 (2008.07.26)
早送り (2008.07.20)
屋上庭園・他 (2008.07.13)
夢みる世界 (2008.07.12)
2008.06
古都の残像 (2008.06.01)
2008.05
北陸行 (2008.05.30)
ないまぜ (2008.05.24)
SDカード再び (2008.05.11)
GPSロケーター (2008.05.04)
2008.04
2008.03
音が小さい (2008.03.30)
STILL/MOTION (2008.03.22)
IAMAS2008 (2008.03.16)
80.7MHz/81.3MHz (2008.03.09)
橋頭堡 (2008.03.01)
2008.02
1998.11
作成:2012.04.22
公開:2012.05.12

Valid XHTML 1.1

loading image reserved place