#topicpath

** 温湿度計センサーモジュールの利用 [#pa0df2f7]
*** はじめに [#cadab872]
- ひと言
-- 久しぶりの工作。まとまった時間をとれなかった。~
-- 時間を測りながら、このページを作りながら、作成。~
RIGHT:作り始め:2014-11-29 (土) 15:25:08~
~
- センサーの原理
-- 全般
--- [[アズビル株式会社による説明>https://www.compoclub.com/products/knowledge/fdw/fdw1-3.html]]
-- 静電容量型センサー
--- [[三誠エレクトロニクス>http://www.sanele-parts.jp/pdf/Smartec_02.pdf]](PDF)
-- 抵抗変化型センサー
--- [[TDK>http://www.tdk.co.jp/tjbck01/bck07051.pdf]](PDF)~
RIGHT:2014-12-07 (日) 12:45:41~
追記
~
~
*** センサー [#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 追記~
-- ピッチ変換~
AM2321 のピンは、ピッチが 2.5mm でない。秋月のお店の人に「これピッチ変換ボードとかあります?」と聞いたら、~
「今日、何回もそれ聞かれてるけど、自分でやってもらうしかない」との返答。まあしょうがないですね。~
温度センサーを直接半田付けするのも気が引けたけど、これも仕方がないですね。[[パキパキするユニバーサル基板>http://akizukidenshi.com/catalog/g/gP-02515/]]~
とピンヘッダを曲げて半田付け。~
~
RIGHT:前後するけど、ここで 2014-11-29 (土) 16:54:35~
~
- 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~
~
- その他のセンサー~
いろいろ検討すると、[[センシリオン>http://www.sensirion.co.jp/home/]]のSHT- シリーズがデータ校正済みの状態で(やや訛りの強い)I2C をしゃべるので好適である。~
いろいろ検討すると、[[センシリオン>http://www.sensirion.co.jp/home/]]のSHT- シリーズがデータ校正済みの状態で I2C をしゃべるので好適である。~
インターネットで見かける湿度モジュールもこのシリーズが多い。末尾が5のものが精度がよい。~
ハネウエルも信頼感はあるけれど、相対精度が±5%程度でしかない。
-- [[SHT15(表面実装タイプ)>http://www.sensirion.co.jp/products/humidity-temperature/humidity-sensor-sht15/]]
--- [[SwitchScienceのAdafruit HTU21D-F>https://www.switch-science.com/catalog/1799/]] 2095円
-- [[SHT25(小型高性能タイプ)>http://www.sensirion.co.jp/products/humidity-temperature/humidity-sensor-sht25/]]
--- [[StrawberryLinux>http://strawberry-linux.com/catalog/items?code=80025]] 3000円~
これが最も良さそう。~
これを用いた温湿度計測については[[I2C通信と温湿度計>../I2C通信と温湿度計]]のページを参照のこと。
-- [[SHT75(ピンタイプ)>http://www.sensirion.co.jp/products/humidity-temperature/humidity-sensor-sht75/]]
RIGHT:2014-12-07 (日) 13:35:10~
追記
~
~
*** 動作確認-1- [#a22d3e92]
+ 方針~
AM2302 は独自通信規約による通信で、AM2321 は I2C もどきで接続する。~
とりあえずブレッドボードで配線し、PC とのシリアル通信でデータを表示させる。~
~
+ プロトタイプ作成~
ブレッドボードで 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 (クロック)|
#clear
上記のページにあったソースをそのまま実行してみる。それらしい値が出てくる。しかし、湿度の値は高すぎるようである。~
~
RIGHT:ここで 2014-11-29 (土) 18:33:04~
(時間かかりすぎ>自分)~
~
LEFT:上記にライブラリ(github)のページを追加し、これを入れて実行してみた。それらしい値は、はやり湿度が高すぎるようである。~
~
RIGHT:ここで 2014-11-29 (土) 18:54:44~
~
*** 動作確認-2- [#p692c779]
- 方針~
AM2302 ・AM2321 ともに、独自通信規約で通信させる。
とりあえずブレッドボードで配線し、PC とのシリアル通信でデータを表示させる。~
~
- 配線
#style(class=table_left)
|デバイス|AM2302 | Arduino | | AM2321 | Arduino |h
|ピン番号|&ref(AM2302.JPG,,20%);| | |&ref(AM2321.JPG,,20%);| |
|配線 |RIGHT:1 | 5V        | |RIGHT:1 | 5V |
| |RIGHT:2 | 2 (データ)| |RIGHT:2 | 4 (データ, 10kΩでプルアップ)|
| |RIGHT:3 | 配線しない| |RIGHT:3 | GND |
| |RIGHT:4 | GND       | |RIGHT:4 | GND |
#clear

- 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() );
 }
- 測定例~
違いすぎる…。~
&ref(Results.png,,40%);
RIGHT:2014-12-06 (土) 16:45:06~
相変わらず時間かかりすぎ。
RIGHT:2014-12-06 (土) 18:16:06~
写真・グラフ追加

*** 動作確認-3- [#y1b5275e]
- SHT-25 を含めた動作確認~
SHT-25 については、[[I2C通信と温湿度計>../I2C通信と温湿度計]]を参照のこと。

トップ   編集 差分 添付 複製 名前変更 リロード   新規 検索 最終更新   ヘルプ   最終更新のRSS