ArduinoとAM2302を使って温湿度センサを作る
以前satzzさんから教えて貰った内容の忘備録。同じものを作ろうと試みたら結構時間がかかってしまったので。
使用するのはArduino Uno と温湿度センサAM2302。
両方とも秋葉原で買える。AM2302はeBayなんかを使うと半額程度で調達できるみたいです。
配線
データシートを見たら書いてあるけど、せっかくなのでFritzingを使って配線図をおこしてみました。 使うのはArduino、AM2302、ジャンパーピン、10Kオーム抵抗などなど。
プログラム
参考にしたのは以下。
今回使っている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から書き込んで、シリアルポートを読みだしてやると温度湿度がとれるはず。