前導
好,從這一單元開始,我想換另一個軟體進行電路模擬,此軟體叫做wokwi
。
並且,我們要嘗試使用另一種開發版 ESP32 進行小專案開發。
ESP32簡單介紹
ESP32 是一款由中國樂鑫科技開發的低功耗、高性價比的 Wi-Fi 和藍牙雙模系統級芯片(SoC),廣泛應用於物聯網(IoT)設備中。操作步驟
首先,進入wokwi
點擊 ESP32,在Docs中找到**wokwi-dht22 Reference
**,往下滑後點擊DHT22 on the ESP32
。

你會看到裡面有已經接好的電路、打好的程式碼,所以我現在要逐行和你講解程式碼。
接線圖如下:

程式碼如下:
/**
ESP32 + DHT22 Example for Wokwi
https://wokwi.com/arduino/projects/322410731508073042
*/
#include "DHTesp.h"
const int DHT_PIN = 15;
DHTesp dhtSensor;
void setup() {
Serial.begin(115200);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
}
void loop() {
TempAndHumidity data = dhtSensor.getTempAndHumidity();
Serial.println("Temp: " + String(data.temperature, 2) + "°C");
Serial.println("Humidity: " + String(data.humidity, 1) + "%");
Serial.println("---");
delay(2000); // Wait for a new reading from the sensor (DHT22 has ~0.5Hz sample rate)
}
程式碼說明如下:
- 引入與初始化:
使用DHTesp dhtSensor;
建立一個感測器物件,並在 setup() 中用dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
初始化它,指定連接腳位與感測器型號。 - 數據讀取:
在 loop() 中,每 2 秒調用getTempAndHumidity()
方法來獲取最新的溫度和濕度數據,然後將數據格式化後輸出到序列監視器。 - 以下是詳細註解的程式碼。
#include "DHTesp.h"
// 引入 DHTesp 函式庫,用來讀取 DHT11、DHT22 等數位溫濕度感測器的數據。
const int DHT_PIN = 15;
// 定義 DHT 感測器連接到 ESP32 的哪一個腳位,這裡設定為 GPIO15。
DHTesp dhtSensor;
// 建立一個 DHTesp 物件,命名為 dhtSensor。
void setup() {
Serial.begin(115200);
// 初始化串列阜,設置鮑率為 115200,ESP32 常用此鮑率來獲得快速的數據傳輸
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
// 初始化 dhtSensor 物件,
// 指定連接腳位為 DHT_PIN (GPIO15) 與感測器型號為 DHT22。
// DHTesp::DHT22 是 DHTesp 庫中的常數,用來告訴庫這是 DHT22 感測器,
// 庫會根據這個型號來解析來自感測器的數據格式。
}
void loop() {
TempAndHumidity data = dhtSensor.getTempAndHumidity();
// 呼叫 dhtSensor 物件的 getTempAndHumidity() 方法,
// 該方法會從 DHT22 感測器讀取最新的溫度和濕度數據,
// 並將結果以 TempAndHumidity 結構傳回,
// 結構中包含兩個成員:temperature 與 humidity。
Serial.println("Temp: " + String(data.temperature, 2) + "°C");
// 將讀取到的溫度數據輸出到串列阜。
// String(data.temperature, 2) 將浮點數 data.temperature 轉換成字串,
// 並保留小數點後 2 位。
// 最後再加上 "°C" 表示單位攝氏度。
Serial.println("Humidity: " + String(data.humidity, 1) + "%");
// 將讀取到的相對濕度數據輸出到序列監視器。
// String(data.humidity, 1) 將浮點數 data.humidity 轉換成字串,
// 並保留 1 位小數,最後加上 "%" 表示百分比。
Serial.println("---");
// 輸出一行分隔線,方便在監視器上區分每次讀取的數據。
delay(2000);
// 延時 2000 毫秒 (2 秒)。
}
好,本單元只是教你如何使用 ESP32 讀取 DHT22 感測器,很多專題製作中都會使用到ESP32,所以接下來的 OLED 和 聲音控制 都會繼續使用。
本頻道持續更新中(內容涵蓋前端程式設計入門、大學必備程式設計入門、電子系專業課程入門、數學微積分題解)如果身旁有相關科系的學生,不妨推薦一下喔~
相信這裡會是家教或線上課程之外,高中、大學生系統性綜合學習的好選擇。
最後感謝您的觀看!