SSブログ

温湿度センサー買ってみました [ハード]

早速、どんなもんかテスト。
今までみたいにアナログで計測ではなく、
デジタルでデータが出てくるというので、
PICを使う必要もないので、RaspberryPiで実験。
回路は、簡単。パスコンもあるといいんだろうけど、パス。
プルアップだけ入れといた。

ノーブランド品 温湿度センサーモジュール DHT11 [並行輸入品]

ノーブランド品 温湿度センサーモジュール DHT11 [並行輸入品]

  • 出版社/メーカー: Phishine
  • メディア: おもちゃ&ホビー


こっちの方が安いけど、これだとプルアップされてるのかな?

EasyWordMall DHT11温湿度センサーモジュール Arduino用

EasyWordMall DHT11温湿度センサーモジュール Arduino用

  • 出版社/メーカー: Apple Trees E-commerce co., LT
  • メディア: その他



プログラムの方は、
「DHT11 raspberrypi」で、検索すれば何人か先人がいらっしゃる。
みなさん、「Raspberry Pi Blog」に書かれてるものをモディっているようです。
ちょっと気になるとこもあるけど、動いてるからいいかってわけで、
そのまま、コピらせていただいて、

2014/09/10 20:23:23 ,Humidity = 55.0 % Temperature = 28.0 *C

という結果に。
そこそこ合ってるような感じだけど、何回やってもおんなじような結果で、
温度がちょっと高め。それに、湿度の振れが今一つ。50%台しか見たことない。
本当かな。
まーでも、温度変化とかを記録するのにいいかな。
Raspberry Piだから、結果ファイルに入れるのも簡単だし。
#include <wiringPi.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <time.h>
#define MAX_TIME 85
#define DHT11PIN 4
int dht11_val[5]={0,0,0,0,0};
int res;

int dht11_read_val()
{
  uint8_t lststate=HIGH;
  uint8_t counter=0;
  uint8_t j=0,i;
  float farenheit;
  for(i=0;i<5;i++)
     dht11_val[i]=0;
  pinMode(DHT11PIN,OUTPUT);
  digitalWrite(DHT11PIN,LOW);
  delay(18);
  digitalWrite(DHT11PIN,HIGH);
  delayMicroseconds(40);
  pinMode(DHT11PIN,INPUT);
  for(i=0;i<MAX_TIME;i++)
  {
    counter=0;
    while(digitalRead(DHT11PIN)==lststate){
      counter++;
      delayMicroseconds(1);
      if(counter==255)
        break;
    }
    lststate=digitalRead(DHT11PIN);
    if(counter==255)
       break;
    // top 3 transistions are ignored
    if((i>=4)&&(i%2==0)){
      dht11_val[j/8]<<=1;
      if(counter>16)
        dht11_val[j/8]|=1;
      j++;
    }
  }
  // verify cheksum and print the verified data
  if((j>=40)&&(dht11_val[4]==((dht11_val[0]+dht11_val[1]+dht11_val[2]+dht11_val[3])& 0xFF)))
  {
    time_t timer;
    struct tm *date;
    char str[256];
    timer = time(NULL);
    date = localtime(&timer);
    strftime(str, 255, \"%Y/%m/%d %H:%M:%S\", date);
    printf(\"%s ,\", str);
    printf(\"Humidity = %d.%d %% Temperature = %d.%d *C\\n\",dht11_val[0],dht11_val[1],dht11_val[2],dht11_val[3]);
    return 2;
  }
}
 
int main(void)
{
// printf(\"Interfacing Temperature and Humidity Sensor (DHT11) With Raspberry Pi\\n\"); 
  if(wiringPiSetupGpio()==-1)
    exit(1);
  while(1)
  {
     res = 1;
     res = dht11_read_val();
     if(res==2) {
      return 0;
      break;
     }
     delay(3000);
  }
  return 1;
}



それにしても、やっぱ、温度が小数点以下が出ないのは面白くない。
同じシリーズのDHT22の方がよさそうだけど、いきなり値段があがるね。

【ノーブランド品】DHT22/AM2302  デジタル温度と湿度センサー  接続線付き

【ノーブランド品】DHT22/AM2302  デジタル温度と湿度センサー  接続線付き

  • 出版社/メーカー: 【ノーブランド品】
  • メディア: エレクトロニクス



nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

いろいろ覚えることも多く、知りえた知識を貯めておこうと思います。先はまるで見えないですけどね。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。