#topicpath ** 温湿度計センサーモジュールの利用 [#pa0df2f7] *** はじめに [#cadab872] - 久しぶりの工作。まとまった時間をとれなかった。~ - 時間を測りながら、このページを作りながら作成。~ RIGHT:作り始め:2014-11-29 (土) 15:25:08~ ~ *** センサー [#z615c4cd] - AM2321 [[&ref(http://akizukidenshi.com/img/goods/C/M-07001.jpg,,5%);>http://akizukidenshi.com/catalog/g/gM-07001/]](写真は秋月電子ホームページから) -- 情報 --- [[秋月電子>http://akizukidenshi.com/catalog/g/gM-07001/]] 700円 ([[データシート>http://akizukidenshi.com/download/ds/aosong/AM2321_e.pdf]]) --- [[AOSONG>http://www.aosong.com/en/products/details.asp?id=137]](中国の会社) --- I2C による通信~ ○ [[AM2321 を制御する>http://www.ne.jp/asahi/shared/o-family/ElecRoom/AVRMCOM/AM2321/AM2321test.html]]~ ※ ピン配置はここを参照。~ ○ [[AM2321による温湿度測定>http://www.gvc-on.net/?p=801]]~ ※ このセンサーのデータのやり取りが変?!~ ○ [[湿度温度センサー(AM2321)の制御>http://www.maroon.dti.ne.jp/kawa3/labo/Arduino/i2c_AM2321/]]~ ※ ソースプログラムあり~ ○ [[ライブラリー(github)>https://github.com/wangdong/AM2321]]~ ~ ※ ピンの割り当て~ #style(class=table_left) |1 | VDD Power supply(2.6 -5.5V)| |2 | SDA Serial data, bidirectional port | |3 | GND Ground| |4 | SCL Serial clock input port (single bus ground)| #clear RIGHT:ここで 2014-11-29 (土) 15:41:00~ ~ --- 独自シリアル通信~ ※ 秋月掲載のデータシートによると、下記の AM2301(DHT22) とシリアル通信は寸分違わない。同様にデータ取得できる。~ ※ しかし、インターネット上にそのような情報はあまり掲載されていない。その理由は、AM2301 がプルアップ抵抗を使わ~ なくても動いてしまうのに、AM2321 はプルアップ抵抗をきちんと入れないと動かないからだと思われる。プルアップ~ 抵抗を2番ピンと Vdd の間に入れることでデータを取得できた。~ ~ ※ ピンの割り当て~ #style(class=table_left) |1 | VDD Power supply(2.6 -5.5V)| |2 | SDA Serial data, bidirectional port, プルアップ抵抗必須 | |3 | GND Ground| |4 | GND Ground| RIGHT:2014-12-06 (土) 15:32:50 追記~ RIGHT:2014-12-06 (土) 15:54:50 追記~ ~ - AM2302 [[&ref(http://akizukidenshi.com/img/goods/L/M-07002.jpg,,10%);>http://akizukidenshi.com/catalog/g/gM-07002/]](写真は秋月電子ホームページから) -- 情報 --- [[秋月電子>http://akizukidenshi.com/catalog/g/gM-07002/]] 950円 ([[データシート>http://akizukidenshi.com/download/ds/aosong/AM2302.pdf]]) --- [[AOSONG>http://www.aosong.com/en/products/details.asp?id=117]] --- シリアル通信によるデータ取得~ ※ I2C も SPI もできない。このセンサーを選んで失敗だったかも、と思ったけど、ライブラリがあった。~ ○ [[Adafruit DHT22>http://www.adafruit.com/products/385]]~ ※ ライブラリをダウンロードできる。DHT22 と AMS2302 は同じものらしい。ありがたい!~ ○ [[Arduino温湿度測定ロガー・湿度センサーの比較>http://www.geocities.jp/bokunimowakaru/diy/arduino/humidity.html]]~ ※ スケッチなどもダウンロードできる。このページではこのセンサーの評価は高くない。~ ~ ※ ピンの割り当て~ #style(class=table_left) |1 | VDD Power supply(3.3 -5.5V)| |2 | SDA Serial data, bidirectional port | |3 | NC 使わない| |4 | GND Ground| ※ 網目が見えるほうからピンを下に見て、左から1番~ RIGHT:ここで 2014-11-29 (土) 16:20:48~ ~ *** 動作確認-1- [#a22d3e92] + 方針~ とりあえずブレッドボードで PC とのシリアル通信でデータを表示させる。~ ~ + 準備~ ++ ピッチ変換~ AM2321 のピンは、ピッチが 2.5mm でない。秋月のお店の人に「これピッチ変換ボードとかあります?」と聞いたら、~ 「今日、何回もそれ聞かれてるけど、自分でやってもらうしかない」との返答。まあしょうがないですね。~ 温度センサーを直接半田付けするのも気が引けたけど、これも仕方がないですね。[[パキパキするユニバーサル基板>http://akizukidenshi.com/catalog/g/gP-02515/]]~ とピンヘッダを曲げて半田付け。~ ~ RIGHT:ここで 2014-11-29 (土) 16:54:35~ ~ + プロトタイプ作成~ ブレッドボードで Arduino と接続。プログラムを組んで実行。IDE は、バージョン 1.0.5r2で(現時点での最新版は1.0.6)。~ ++ ライブラリの導入~ AM2302 へのアクセスはライブラリ化されているものを用いる。 --- [[ここ(github)>https://github.com/adafruit/DHT-sensor-library]]の右側の zip をダウンロードボタンをクリック。 --- ダウンロードしたものを展開 --- 上記でできたフォルダーを DHT とリネームし、arduino-1.0.5-r2/libraries/DHT として保存。この中に DHT.cpp などがあることを確認。~ ~ RIGHT:ここで 2014-11-29 (土) 17:10:40~ ~ ++ Windows ドライバの導入~ そういえば、このマシンで Arduino を接続するのは初めてかもしれない。(IDE だけはなぜか入っている。)~ arduino-1.0.5-r2/drivers を指定して導入。~ ~ RIGHT:ここで 2014-11-29 (土) 17:31:03~ ~ ++ 配線・実行~ ※ ピッチ変換に使ったヘッダピンがブレッドボードにうまく刺さらず、弾かれてしまう……。~ --- AM2302~ 1(Arduino : 5V),2(Arduino : 2),4(Arduino : GND) 番ピンを接続。サンプルプログラムがそのまま動いた。~ 息を吹きかけると、気温と湿度が上昇。動いているようだ。~ ~ RIGHT:ここで 2014-11-29 (土) 17:45:24~ ~ --- AM2321~ 接続は次の通り。I2C接続で Wire ライブラリを利用するなら、A4をデータ、A5をクロックにする。(←これ忘れてた。)~ プルアップ抵抗を A4, A5 に接続すべきであるが、なくても動いているようだ。~ #style(class=table_left) |センサー| Arduino |h | 1 | 5V | |2 | A4 (データ)| |3 | GND| |4 | A5 (クリック)| 上記のページにあったソースをそのまま実行してみる。それらしい値が出てくる。しかし、湿度の値は高すぎるようである。~ ~ RIGHT:ここで 2014-11-29 (土) 18:33:04~ (時間かかりすぎ>自分)~ ~ LEFT:上記にライブラリ(github)のページを追加し、これを入れて実行してみた。それらしい値は、はやり湿度が高すぎるようである。~ ~ RIGHT:ここで 2014-11-29 (土) 18:54:44~ ~ *** 動作確認-2- [#p692c779] - 2つのセンサー共に DHT ライブラリで動かした。 #include <DHT.h> #define DHTPIN2 2 // センサー1つめ(AM2302)は Arduino 2番ピンへ #define DHTPIN4 4 // センサー2つめ(AM2321)は Arduino 4番ピンへ #define DHTTYPE DHT22 // DHT 22 (AM2301, AM2321) // Connect pin 1 (on the left) of the sensor to +5V // Connect pin 2 of the sensor to whatever your DHTPIN is // Connect pin 3 of the sensor to GROUND (AM2321) // Connect pin 4 (on the right) of the sensor to GROUND // ※ AM2321 の 2番ピンに 10KΩ のプルアップ抵抗を。 // Initialize DHT sensor for normal 16mhz Arduino DHT dht2(DHTPIN2, DHTTYPE); DHT dht4(DHTPIN4, DHTTYPE); void setup() { Serial.begin(9600); Serial.println("Using 2 DHTxx sensors!"); Serial.println(" --2: 2302-- --4: 2321--"); Serial.println(" Temp, Humid, Temp, Humid"); dht2.begin(); dht4.begin(); } void loop() { // Wait a few seconds between measurements. delay(2000); Serial.print( dht2.readTemperature() ); Serial.print(", "); Serial.print( dht2.readHumidity() ); Serial.print(", "); Serial.print( dht4.readTemperature() ); Serial.print(", "); Serial.println( dht4.readHumidity() ); } RIGHT:2014-12-06 (土) 16:45:06~ 相変わらず時間かかりすぎ。