2026年9月27日 星期日

零成本學 ESP32!在 Wokwi 打造你的第一個微型氣象站 (ESP32 + DHT22 + 1602 LCD)

零成本學 ESP32!在 Wokwi 打造你的第一個微型氣象站(溫度 濕度) (ESP32 + DHT22 + 1602 LCD)

想學物聯網(IoT)與 ESP32 電子實作,卻擔心接線與電壓規範搞砸嗎?透過強大的線上模擬器 Wokwi,我們不需要花費任何硬體費用,打開瀏覽器就能在 10 分鐘內建立並執行一個基於 ESP32 的溫濕度監測站! (WOKWI使用時機 週六週日 及 早上8點前)

在這個升級版教學中,我們將使用效能更強大、具備 Wi-Fi 與藍牙功能的 ESP32 開發板,搭配 DHT22 溫濕度感測器與 LCD 1602 (I2C) 液晶螢幕。

為什麼選擇 ESP32 代替 Arduino UNO?

  • 效能更強:32 位元雙核心處理器,時脈高達 240 MHz(UNO 僅 16 MHz)。

  • 內建 Wi-Fi / 藍牙:未來可直接升級將數據上傳至雲端(如 Blynk, Thingspeak, MQTT)。

  • 注意 3.3V 電壓規範:ESP32 的 GPIO 腳位工作電壓為 3.3V(UNO 為 5V),在實體接線時需特別注意供電與訊號位準。

專案準備:我們的「虛擬」材料

開啟 Wokwi 官網 後,透過gmail 登入 選擇 ESP32 開發板開啟新專案。點擊紫色的 + (Add new part) 按鈕,加入以下元件:

  1. ESP32 DevKit v1:我們的核心主控板。

  2. DHT22:溫濕度感測器。

  3. LCD 1602 (I2C):數據顯示螢幕(帶 I2C 模組版本)。
















第一步:線路連接 (Wiring)

在 ESP32 上,I2C 與預設 GPIO 腳位與 Arduino UNO 不同,請依照以下說明進行連接:

1. 連接 DHT22 感測器

  • VCC   ➔  ESP32 3V3(或 5V)

  • GND  ➔ ESP32 GND

  • SDA / DATA  ➔ ESP32 GPIO 15

2. 連接 LCD 1602 (I2C 介面)

  • GND  ➔ ESP32 GND

  • VCC  ➔ ESP32 5V(LCD 邏輯電壓為 5V,背光會較充足)

  • SDA  ➔ ESP32 GPIO 21(ESP32 預設 I2C SDA 腳位)

  • SCL  ➔ ESP32 GPIO 22(ESP32 預設 I2C SCL 腳位)

觀念提醒:ESP32 UNO 的 I2C 腳位是 A4/A5,而 ESP32 的預設 I2C 腳位是 GPIO 21 (SDA) 與 GPIO 22 (SCL)。


變更 接線顏色


 

第二步:安裝函式庫 (Libraries)

點選程式碼編輯區旁邊的 diagram.json 或 Library Manager 頁籤,搜尋並加入以下兩個函式庫:

  1. DHT sensor library (by Adafruit)

  2. LiquidCrystal I2C (by Frank de Brabander)



第三步:撰寫程式碼

將以下程式碼複製貼上到編輯區(sketch.ino):

#include <Wire.h>
#include <LiquidCrystal_I2C.h> // 引用 LCD I2C 函式庫
#include "DHT.h"               // 引用 DHT 函式庫

// 設定 DHT 參數
#define DHTPIN 15     // DHT 資料接腳連到 ESP32 GPIO 15
#define DHTTYPE DHT22   // 使用 DHT22 感測器

// 初始化 DHT
DHT dht(DHTPIN, DHTTYPE);

// 初始化 LCD,設定 I2C 位址為 0x27,螢幕為 16 行 2 列
LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {
  // 啟動 Serial 序列埠 (ESP32 常使用 115200 波特率)
  Serial.begin(115200);
  Serial.println("ESP32 氣象站系統啟動中...");

  // 初始化 I2C (指定 GPIO 21 為 SDA, GPIO 22 為 SCL)
  Wire.begin(21, 22);

  // 啟動 DHT 感測器
  dht.begin();

  // 啟動 LCD
  lcd.init();
  lcd.backlight(); // 開啟背光

  // 顯示開機畫面
  lcd.setCursor(0, 0);
  lcd.print("ESP32 Station");
  lcd.setCursor(0, 1);
  lcd.print("Starting...");
  delay(2000);
  lcd.clear();
}

void loop() {
  // 讀取溫濕度(間隔 2 秒)
  delay(2000);

  float h = dht.readHumidity();
  float t = dht.readTemperature();

  // 檢查讀取是否失敗
  if (isnan(h) || isnan(t)) {
    Serial.println("無法讀取 DHT 感測器數據!");
    lcd.setCursor(0, 0);
    lcd.print("Sensor Error   ");
    return;
  }

  // 印出數據至 Serial Monitor
  Serial.print("濕度: ");
  Serial.print(h);
  Serial.print(" %\t");
  Serial.print("溫度: ");
  Serial.print(t);
  Serial.println(" *C");

  // --- 顯示於 LCD 螢幕 ---
  lcd.setCursor(0, 0);
  lcd.print("Temp: ");
  lcd.print(t, 1); // 顯示到小數點後 1 位
  lcd.print(" C   ");

  lcd.setCursor(0, 1);
  lcd.print("Humi: ");
  lcd.print(h, 1);
  lcd.print(" %   ");
}


第四步:模擬與測試

  1. 點擊畫面上的 綠色播放鍵 (Start Simulation)。

  2. 觀察 LCD 畫面顯示開機文字後進入讀數狀態。

  3. 點擊畫面上的 DHT22 元件,拖動滑桿調整溫度與濕度,即時確認 LCD 與下方 Serial Monitor 的數據更新。









沒有留言:

張貼留言

零成本學 ESP32!在 Wokwi 打造你的第一個微型氣象站 (ESP32 + DHT22 + 1602 LCD)

零成本學 ESP32!在 Wokwi 打造你的第一個微型氣象站(溫度 濕度) (ESP32 + DHT22 + 1602 LCD) 想學物聯網(IoT)與 ESP32 電子實作,卻擔心接線與電壓規範搞砸嗎?透過強大的線上模擬器 Wokwi ,我們不需要花費任何硬體費用,打開瀏覽器...