延長戦です。OLEDモニタに「Hello World」した前回はこちら。
開発環境や必要なものを整えた初回はこちら。
今回は「毎秒で温湿度センサーからの値を読み取りOLEDモニターに表示する」を目指したいと思います。
必要なもの
ESP32開発モジュールやOLEDモニターに関しては前回までの記事を参考にしてください。
温度センサーはこちらを購入しました。
OSOYOO Arduino用 DHT22 デジタル 温度 湿度 センサー モジュール デジタル温湿度測定 アルドゥイーノやRaspberry Pi 2 3 4 5 用 電子工作用 2個セット 新品価格 |
この温度センサーを使う上でのキーワードはDHT22と3.3V~5Vで稼働ということです。覚えておきましょう。
配線追加
開発モジュールとOLEDモニターの配線は前回記事を参考にしてください。今回は前回記事の状態から温湿度センサーを追加していきます。
VCG-3.3V
S-18
GND-GND
Sが実際の値を受け渡しする配線ですが、今回はとりあえず好きなところで動くのではないかというところですが、いかんせん知識がついてきてない状態です。すみませんが各自気になる方はいろいろ調べてみてください。
コーディング
まずはライブラリ「DHT sensor library」を追加。
そしてコードを以下に変更。
#include <Wire.h>
// OLEDモニタ関係
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
// センサ関係
#include <DHT.h>
// OLEDディスプレイ設定
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire);
// センサ関係
#define DHT_MODEL DHT22
#define DHT_PIN 18
DHT dht(DHT_PIN, DHT_MODEL);
void setup() {
Serial.begin(115200);
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println("begin failed!!!");
}
else
{
dht.begin();
Serial.println("Startup end!!");
}
}
void loop() {
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,0);
//温度
float humidity = dht.readHumidity();
//湿度
float temperature = dht.readTemperature();
// 温度を出力
display.print(temperature, 1); // 小数点1桁まで
display.print("[`C]");
// 湿度を出力
display.print(" : ");
display.print(humidity, 1); // 小数点1桁まで
display.println("[%]");
display.display();
delay(1000);
}
追加されたコードの解説ですが、
// センサ関係
#include <DHT.h>
..
// センサ関係
#define DHT_MODEL DHT22
#define DHT_PIN 18
DHT dht(DHT_PIN, DHT_MODEL);
パッケージを読み込み、使うDHTの規格と実際に使用するPIN番号で初期化しています。あとは専用のメソッドから値を呼び出しているだけですね。
まとめ
今回は意外とすんなり終わってしまいました。実際にセンサの値を使ったりするとすごいIoT開発感出てきて楽しいですね。