はんだ付け不要キット第2弾「温湿度センサー(DHT22)を使って温湿度計を作ろう‼」
こんにちは!
今回は電子工作ステーションさんに、はんだ付けをしなくていいキットがあれば便利だな~という想いから共同開発が進んでおります、
はんだ付け不要キット第2弾のご紹介です‼
※はんだ付け不要キット第1弾はこちら↓
今回は超定番「DHT22温湿度センサー」を使って誰でも簡単に温湿度計を作れちゃうキットとなります‼
それでは、作り方の方に入りたいと思います‼
①「 部品準備」
・【はんだ付け不要】温湿度センサー(DHT22)を使って温湿度計を作ろう‼
・モバイルバッテリー(必要であれば)
モバイルバッテリーがあればキットを持ち運びできます。
②「部品確認」
| 品名 | 個数 |
| Arduino Nano | 1 |
|
温湿度センサーモジュール(DHT22)
|
1 |
|
0.96インチOLEDディスプレイモジュール (SSD1306)(イエロー/ブルー)
|
1 |
| ブレッドボード | 1 |
| ジャンパーピン(7mm) | 2 |
| ジャンパーピン(10mm) | 4 |
| ジャンパーピン(12mm) | 2 |
| ジャンパーピン(22mm) | 2 |
| ジャンパーピン(25mm) | 1 |
| ジャンパーピン(50mm) | 1 |
③「組み立て(回路)」
次に、ブレッドボードを使って組み立てていきます。
ブレッドボードは、はんだ付けなしで電子部品を差し込むだけで回路を組める、電子回路の試作や実験などに便利なプラスチック製の板です。
その仕組みは、内部に埋め込まれた細長い金属のクリップによる電気的な接続にあります。
詳しい仕組みなどは、こちらのサイトを参考にして頂けると分かりやすいです。
接続このようになります。
| 温湿度センサー(DHT22) | Arduino Nano |
ディスプレイ
|
| VCC | 3.3V | VDD |
| GND | GND | GND |
| DAT | D2 | |
| A4 | SCK | |
| A5 | SDA |
これを、ブレッドボードに変換して繋げていくイメージです。
手順1
ジャンパーピンを下記の様に配置していきます。
手順2
Nano、温湿度センサー(DHT22)、ディスプレイを差していきます。
・NanoのD13番ピンがブレッドボードのC1
・温湿度センサー(DHT22)のVCCがブレッドボードのh21、GNDがh22
・ディスプレイのGNDがブレッドボードのe26、SDAがe29
以上、下記の様に完成したら組み立て完了です‼
④「開発環境、ライブラリーの準備」
各部品を簡単に扱えるようにライブラリーを用意します。
※ライブラリとは、プログラミングにおける「便利な道具箱」です。
手順1
今回は「#include <DHT_U.h>」を読み込むために、「DHT sensor library」をインストールします。
これを使うことで、複雑な機能をゼロから書く手間が省け、より簡単に、そして効率的にプログラミングができます。
Arduino IDEの上の方にある「ツール」をクリックし、「ライブラリーを管理…」をクリックします。
そうするとライブマネージャーが開きますので、「DHT22」と検索します。
そうしましたら少し下の方に「DHT sensor library」がありますので、それをインストールします。
手順2
ディスプレイを簡単に扱えるように「Adafruit_SSD1306.h」という
Adafruit社が提供をしてくださっているライブラリを用意します。
Arduino IDEの上の方にある「ツール」をクリックし、「ライブラリーを管理…」をクリックします。
そうするとライブマネージャーが開きますので、「Adafruit_SSD1306」と検索します。
検索すると上の方に「Adafruit_SSD1306 by…」というのが出てくるので、それをインストールします。
これで開発環境の準備は整いました‼
⑤「プログラミング」
いよいよプログラミング‼
手順1
下記のコードをコピーして貼り付けてみましょう!
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
/DHTセンサー用ライブラリーをインクルード //(インクルードとは、他のファイルに書かれたコードを現在のファイルに取り込んで利用することを指します。) #include <DHT_U.h> #define DHTPIN 2 // Digital pin connected to the DHT sensor #define DHTTYPE DHT22 // DHT 22 (AM2302) DHT_Unified dht(DHTPIN, DHTTYPE); uint32_t delayMS; /* OLEDディスプレイモジュール用ライブラリーをインクルード */ #include<Adafruit_SSD1306.h> //ディスプレイ変数の宣言 Adafruit_SSD1306 display(0); void setup() { Serial.begin(9600); //ディスプレイの初期化 display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //初期化 dht.begin(); Serial.println(F("DHTxx Unified Sensor Example")); // 温度、湿度センサーの詳細をセット sensor_t sensor; dht.temperature().getSensor(&sensor); dht.humidity().getSensor(&sensor); // センサーの詳細に基づいて、センサー読み取り間の遅延を設定します。 delayMS = sensor.min_delay / 1000; } void loop() { //測定間の遅延。 delay(delayMS); //温度イベントを取得。 sensors_event_t temperature; sensors_event_t relative_humidity; dht.temperature().getEvent(&temperature); if (isnan(temperature.temperature)) { Serial.println(F("Error reading temperature!")); } else { //シリアルモニターに温度表示 Serial.print(temperature.temperature); Serial.print(F("C")); } // 湿度イベントを取得。 dht.humidity().getEvent(&relative_humidity); if (isnan(relative_humidity.relative_humidity)) { Serial.println(F("Error reading humidity!")); } else { //シリアルモニターに湿度表示 Serial.print(F(": ")); Serial.print(relative_humidity.relative_humidity); Serial.println(F("%")); } /* * ディスプレイに表示。 */ display.clearDisplay(); //ディスプレイをクリア //温度表示 display.setTextSize(1); //文字サイズを設定 display.setTextColor(WHITE); //文字色を設定(これがないと表示されない) display.setCursor(0, 0); //文字の開始位置を設定 display.print(temperature.temperature); //温度をディスプレイ出力するよう設定 display.print("C"); //湿度表示 display.setTextSize(1); //文字サイズを設定 display.setTextColor(WHITE); //文字色を設定(これがないと表示されない) display.setCursor(0, 10); //文字の開始位置を設定 display.print(relative_humidity.relative_humidity); //湿度をディスプレイ出力するよう設定 display.print("%"); display.display(); //上記条件でディスプレイ表示 } |
え、張り付けるだけ?て思うかもしれませんが、プログラミングって実はほとんどコピペして使います!
なので初心者のうちはそれで問題ないです‼
プログラムの基本的な構成、及び流れとしては、
①「インクジェットや変数などの宣言」→②「void setup()」→③「void loop()」の3段階です。
今回のプログラムを大まかに日本語に直すと、
①ディスプレイの簡単コード貸して~、これら入れるから箱作っといて~
②ディスプレイとかこのPin使うから初期化しといて~ (void setup() {})
③センサーの値を取得してディスプレイに表示して~を永遠に表示して~ (void loop() {})
と書いたコードになります(笑)
そう捉えるととてもプログラミングって簡単で、自分でもできそうって思えませんか?
そんな感じで気楽にやっていきましょう!
手順2
貼り付けたら、Arduino NanoとType-CケーブルをPCに繋げて書き込みしましょう!
Arduino NanoとType-CケーブルでPCに繋ぐと、Arduino Nanoの内蔵LEDが光ります。
Arduino IDEをの上部にある、「ツール」→「ボード」→「Arduino AVR Boards」→「Arduino Nano」を選択。
あとは「ボード」の下にある「ポート」も確認しましょう。
Arduino Nanoと正常に通信ができている状態だと、「COM〇」が選択できますので、選択できるCOMをクリックします。
これで準備完了、Arduino IDEをの上部にある「→」ボタンが書き込みボタンとなりますので、それを押します‼
⑥「結果」
電源を入れるとこんな感じに表示されます。
黄色が温度、青色が湿度となります。
※プログラムの方で「display.setTextColor(WHITE); 」という文でWHITE色を指定しているのに、
黄色や青色の文字で表示されるのかは、ディスプレイが元々イエローと青色しか表示できない仕様だからです。
DHT22センサーの測定範囲は、温度が40℃~80℃(±0.5℃)、湿度は0〜100%(±2%)となっており、
誤差も少なく日常生活では十分な温湿度計として役に立ちます。
これで日常生活を少しでも楽しんで頂けたら幸いです。
以上、ご閲覧ありがとうございました‼





