Arduino DHT11 温度・湿度センサーのプロジェクト

DHTセンサーライン

DHTセンサーライン(DHT11/22)は、温度/湿度センサーとしてのシンプルさとコンパクトさから、家庭用ウェザーステーションからプラントオートメーションシステムまで、多くの電子プロジェクトで最もよく使用されているものの1つです。より正確で高価なDHT22で代用することもできますが(コードに若干の変更が必要)、このプロジェクトではDHT11センサーモジュールを使用することにします。基本的な3ピンインターフェースで、このプロジェクトで使用するDHT11センサーは、単体の4ピンセンサーではなく、コンデンサーとプルアップ抵抗を内蔵した3ピンモジュールなので、この回路を作る際に追加の部品は必要ありません。そのため、Arduinoボードに接続すると、DHT11センサーモジュールがデジタルピンに直接接続され、センサーからのシリアルデータを処理してマイクロコントローラに送り、私たちが読み取ることができるようになります。

この中で DIY PCBAプロジェクトDHT11センサーからの温度と湿度のデータは、0.96″ 128×64 OLED(有機発光ダイオード)ディスプレイに表示され、私たちが目に見える形で読み取ることができます。i2cのOLEDディスプレイは、Arduinoボードと4線で接続するだけでよく、豊富なライブラリで簡単にプログラミングできるのがメリットです。有機ELディスプレイの特長は、テキストや図、画像を鮮明に表示することができることです。

このプロジェクトは、いくつかの部品と基本的なコーディングスキルを必要とするだけなので、全くの初心者に適したかなりシンプルな回路プロジェクトと言えます。しかし、より上級者にとっては、このプロジェクトを改良し、無線通信(RF、LoRa.など)のような機能を追加してアップグレードすることができます、 Bluetooth PCBWi-Fiなど)、RTC(リアルタイムクロック)データ、追加センサーデータ(高度、気圧、ガス濃度など)、その他多くの機能を備えています。このプロジェクトを実現するためには、部品の購入が必要です:

  • Arduino Nano(他のArduino互換ボードでも可)
  • USBケーブル(Arduinoボード対応)
  • ブレッドボード
  • オス-オス型ジャンパー線 (7)
  • 0.96″ 128×64 i2c OLEDディスプレイ
  • DHT11センサーモジュール

ワイヤリング

別の開発ボードを使用する場合は、別のタイプのブレッドボードが必要になる場合があります。今回のプロジェクトでは、FSテクノロジーはArduino Nanoを使用しているため、ブレッドボードを使用する必要があります。しかし、Arduino Unoを使用する場合は、ジャンパーワイヤーを基板のピンに直接差し込むことができるため、ブレッドボードが不要になります。基板が変わっても、DHT11センサーモジュールとOLEDディスプレイのArduino基板への配線は一貫しています。さらに、DHT11温湿度センサー回路の配線図を以下に示します。

  • DHT11センサーモジュールです。センサーの信号(S)ピンをD2に、プラス(+)ピンを+5vに、マイナス(-)ピンをGNDに接続します。
  • OLEDです。SDA(シリアルデータ)をA4、SCL/SCK(シリアルクロック)をA5、VDD/VCC(電源電圧)を+5v、GNDをGNDに接続してください。
  • あとは、USBケーブルでArduinoボードをパソコンに接続します。
DHT11 温度・湿度センサー

プロジェクトコード

#include の場合 

#include を使用します。 

#include を参照してください。 

 

#ディファイン screen_width 128 

#ディファイン スクリーンハイト 64

#ディファイン OLED_RESET 4 

Adafruit_SSD1306 みせる(screen_width, screen_height);

 

#include "DHT.h "です。

#ディファイン ディーエイチピーイン 2

#ディファイン DHTTYPE DHT11

DHT dht(dhtpin, dhttype);

 

 ボイド セットアップ() {

 dht.始める();

 

 みせる.始める(SSD1306_SWITCHCAPVCC, 0x3C);

 みせる.クリアディスプレー();

}

 

 ボイド ループ() {

 みせる.クリアディスプレー();

 みせる.setTextSize(1);

 みせる.setTextColor(SSD1306_WHITE);

 

 みせる.セットカーソル(0, 15);

 みせる.プリント("温度:");

 みせる.セットカーソル(80, 15);

 みせる.プリント(dht.読み取り温度());

 みせる.セットカーソル(110, 15);

 みせる.プリント("C");

 

 みせる.セットカーソル(0, 35);

 みせる.プリント("湿度:");

 みせる.セットカーソル(80, 35);

 みせる.プリント(dht.リードハイムド());

 みせる.セットカーソル(110, 35);

 みせる.プリント(“%”);

 みせる.みせる();

 遅延(2000);

コードについて

  • i2c有機ELディスプレイの利点の一つは、Arduino IDEからディスプレイをプログラミングする際に、オープンソースライブラリという形で、オンラインで利用できる非常に多くのサポートがあることです。このプロジェクトでは、Adafruit SSD1306ライブラリとGFXライブラリの2つが、有機ELディスプレイとArduinoのインターフェースに利用されています。すべての設定情報がライブラリファイルに設定されているため、IDE内で基本的なコマンドを使用し、ディスプレイの使用を簡素化します。これらのライブラリがIDEにダウンロード、インストールされていない場合、コンパイルエラーが発生することがありますので、Arduino IDEに最新のライブラリがインストールされていることを確認してください。
  • コードはまず、OLEDディスプレイの設定に必要なライブラリの定義から始まります。Wire、Adafruit SSD1306、Adafruit GFXです。これらは、ArduinoでOLEDを機能させるために必要なものです。
  • 第2ブロックでは、有機ELディスプレイに関するいくつかのパラメータが定義され、画面の幅と高さ(128×64ピクセル)、有機ELリセット端子(A4)が含まれます。
  • 次に、DHT11センサーがArduinoとインターフェースするために必要なライブラリが定義されており、特に「DHT」ライブラリが重要です。DHTセンサーがArduinoボード上で接続されるデジタルピン(デジタルピン2 - D2)も、利用するDHTセンサーの特定のモデルであるDHT11センサーと一緒に定義されています。
  • ここで、Arduinoのコードに欠かせない2つの機能のうちの1つであるvoid setupセクションを紹介します。ここでは、DHT11センサー(dht.begin())とOLEDディスプレイを起動し、voidループセクションに進む前に、OLEDディスプレイを以前のビジュアルからクリアします(display.clearDisplay())。
  • Arduinoボードに電源がある限り、継続的に(ループで)繰り返されるコードの主要部分であるvoid loopセクションに関しては、主にOLED固有の機能で構成されており、最初にテキストサイズ、テキストカラー、カーソル(OLED上のテキストを印刷したい場所)を設定する。その後、OLEDに命令して、ディスプレイのさまざまな場所にテキストの行を印刷させますが、その内容は主にDHT11センサーが読み取った温度(摂氏)と湿度(%)情報です。このように、定義されたライブラリから生成されたシンプルなコマンドを使うだけで、あらゆる情報を簡単にディスプレイに印刷することができるのです。
  • コードの一番最後にある遅延機能で、センサーから読み取った最新のデータを2000ミリ秒ごとにOLEDディスプレイに更新するように設定されています。ただし、このタイミングは、センサーから直接最新の情報を受け取りたい頻度に応じて変更することができます。

まとめる

このプロジェクトと、センサーとOLEDディスプレイを接続する基本原理を理解すれば、このプロジェクトをアップグレードしたり改良したりする方法はいくらでもあります。一般的には、センサーやディスプレイ、ワイヤレス機能、ケースなどを追加することで、より大きなウェザーステーションのプロジェクトに統合することができます。このプロジェクトで示したように、Arduinoのライブラリを使いこなすだけで、自分だけのウェザーステーションを比較的簡単に作ることができるようになります。将来的には、このような気象データをマイコンボードから別のマイコンボードに無線で送信して、遠隔地の環境を監視したり、自律的なシステムを集中的に制御するようなプロジェクトも考えられる。しかし、このようなプロジェクトは、まったくの初心者にホビーエレクトロニクスを紹介するのに適していますし、より経験豊富な人をターゲットにすることも十分に可能です。 PCBAメーカー エレクトロニクスの他の側面を探求したいと思う人。 

DIYエレクトロニクスプロジェクトブログ

Arduino UNO割り込みタイマー

Arduino UNO Interrupt Timer タイマーはすべてのマイクロコントローラーに組み込まれている機能で、時間の経過に関する特定の機能を持っています。タイマー機能

続きを読む "