Arduino - DHT11溫溼度感測器

算是在簡短的幾堂入門課程結束後,自己想要製作的,在課程中由於時間上的關係並沒有與老師多加討論,故再此紀錄自己製作的流程,如有錯誤也請多多指教。

使用ESP2886、DHT11模組、4.7KΩ兩個與Adafruit_SSD1306,預期為能偵測環境溫濕度並顯示於lcd上,以下為電路圖,其中DHT11為模組故不須接電組。
以下為程式碼:

#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define OLED_RESET LED_BUILTIN
Adafruit_SSD1306 display(OLED_RESET);

#define NUMFLAKES 10
#define XPOS 0
#define YPOS 1
#define DELTAY 2

void setup() {
  Serial.begin(9600);
  dht.begin();
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.clearDisplay();
  delay(500);
}

void loop() {
  delay(2000);
  updateText();
  display.clearDisplay();
}

void updateText(void) {
  delay(2000);
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  float hic = dht.computeHeatIndex(t, h, false);
  Serial.print("Humidity: ");
  Serial.print(h);
  Serial.print(" %\t");
  Serial.print("Temperature: ");
  Serial.print(t);
  Serial.print(" *C\t");
  Serial.print("Heat index: ");
  Serial.print(hic);
  Serial.println(" *C");
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(0, 0);
  display.print("H:");
  display.print(h,0);
  display.print("%");
  display.setCursor(33, 0);
  display.print("T:");
  display.print(t,0);
  display.print(char(247));
  display.print("C");
  display.setCursor(73,0);
  display.print("HI:");
  display.print(hic,1);
  display.print(char(247));
  display.print("C");
  display.display();
}

只是簡單的結合DHT與SSD1306範例,然而一開始在結合DHT11與OLED時一直無法在螢幕上顯示偵測值或是卡在預設的畫面上,在setup中新增clearDisplay()與偵測執中新增display()後便能顯示,字體大小則為考慮之後在下方嵌入時鐘,讓偵測值與時間結合,目前是希望能加資訊紀錄並在app上顯示出網頁與統計圖。

留言

熱門文章