ArduinoとAM2302を使って温湿度センサを作る

以前satzzさんから教えて貰った内容の忘備録。同じものを作ろうと試みたら結構時間がかかってしまったので。

使用するのはArduino Uno と温湿度センサAM2302

両方とも秋葉原で買える。AM2302はeBayなんかを使うと半額程度で調達できるみたいです。

配線

データシートを見たら書いてあるけど、せっかくなのでFritzingを使って配線図をおこしてみました。 使うのはArduino、AM2302、ジャンパーピン、10Kオーム抵抗などなど。

f:id:kazutaka83:20150322150609p:plain

プログラム

参考にしたのは以下。

qiita.com

今回使っているAM2302は専用のライブラリがあるのでダウンロードしてArduinoのライブラリフォルダに叩き込みます。これを知らなかったので、センサが謎の3を吐き出す装置に成り下がっていました。

ダウンロードのやり方はgitから

$ git clone https://github.com/adafruit/DHT-sensor-library /Applications/Arduino.app//Contents/Resources/Java/libraries/DHT

Arduinoのライブラリフォルダは環境に依存するので調べてください。ここらへんで言ってるArduinoは機器名称じゃなくてArduino IDEこれを指してる。

コードはとりあえずsatzzさん作のものをそのまま使う。

#include <DHT.h>
#define DHTTYPE DHT22
#define DHT22_PIN 7
DHT dht(DHT22_PIN, DHTTYPE);

void setup() {
  pinMode(DHT22_PIN, INPUT);      
  Serial.begin(9600);
}

char ch[10];
char ct[10];

void loop()
{
  float h  = dht.readHumidity() ;
  float t  = 5.0/9.0*(dht.readTemperature(true)-32.0); // fahrenheit -> celsius
  dtostrf(h, 6, 2, ch);
  dtostrf(t, 6, 2, ct);

  String postData = "{humidity:";
  postData.concat(ch);
  postData.concat(",temperture:");
  postData.concat(ct);
  postData.concat("}");

//  Serial.print("POST /api/measurements HTTP/1.1\r\n");
//  Serial.print("Content-Length: " + String(postData.length()) + "\r\n\r\n");
  Serial.println(postData);

  delay(1000);

}

これでArduinoから書き込んで、シリアルポートを読みだしてやると温度湿度がとれるはず。

f:id:kazutaka83:20150319235352p:plain


スポンサード リンク