[Arduino線上教程] 第九篇: 感測器

更新於 發佈於 閱讀時間約 6 分鐘

前導

好,從這一單元開始,我想換另一個軟體進行電路模擬,此軟體叫做wokwi

並且,我們要嘗試使用另一種開發版 ESP32 進行小專案開發。

ESP32簡單介紹

ESP32 是一款由中國樂鑫科技開發的低功耗、高性價比的 Wi-Fi 和藍牙雙模系統級芯片(SoC),廣泛應用於物聯網(IoT)設備中。

操作步驟

首先,進入wokwi點擊 ESP32,在Docs中找到**wokwi-dht22 Reference**,往下滑後點擊DHT22 on the ESP32

raw-image

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

接線圖如下:

raw-image

程式碼如下:

/**
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 和 聲音控制 都會繼續使用。


本頻道持續更新中(內容涵蓋前端程式設計入門、大學必備程式設計入門、電子系專業課程入門、數學微積分題解)如果身旁有相關科系的學生,不妨推薦一下喔~

相信這裡會是家教或線上課程之外,高中、大學生系統性綜合學習的好選擇。

最後感謝您的觀看!

留言
avatar-img
留言分享你的想法!
avatar-img
電資鼠 - 您的學習好夥伴
8會員
211內容數
在當今數位時代,電資領域人才需求爆發式成長,不論是前端網頁設計、嵌入式開發、人工智慧、物聯網還是軟硬體整合,這些技術都在改變世界。而掌握 C/C++、Python、數位邏輯、電路學與嵌入式開發等大學電資領域的課程,正是進入這個高薪、高需求產業的關鍵!
2025/04/01
本篇將帶你學會如何使用 ESP32 控制 OLED 顯示器,顯示不只是文字,還能呈現圖像、圖示、數據曲線,甚至製作簡易動畫。OLED 是現代微控制器專案中常見的高解析低功耗顯示元件,適合用於物聯網設備、穿戴裝置、感測儀錶板等應用。 透過本篇,你將能夠掌握 OLED 顯示技術的使用方法。
Thumbnail
2025/04/01
本篇將帶你學會如何使用 ESP32 控制 OLED 顯示器,顯示不只是文字,還能呈現圖像、圖示、數據曲線,甚至製作簡易動畫。OLED 是現代微控制器專案中常見的高解析低功耗顯示元件,適合用於物聯網設備、穿戴裝置、感測儀錶板等應用。 透過本篇,你將能夠掌握 OLED 顯示技術的使用方法。
Thumbnail
2025/04/01
透過本篇,你將能實作簡單的聲音控制應用。 本篇將教你如何實作 「鋼琴聲音」,進行簡單的 聲音與控制互動。
Thumbnail
2025/04/01
透過本篇,你將能實作簡單的聲音控制應用。 本篇將教你如何實作 「鋼琴聲音」,進行簡單的 聲音與控制互動。
Thumbnail
2025/04/01
本篇將帶你學會如何使用 Arduino 控制 液晶顯示器(LCD),實現文字、數字、符號等資料的顯示。 透過本篇學習,你將具備 資訊輸出介面設計的能力,能讓你的 Arduino 裝置「說話」、「解釋資料」,更適合真實應用與展示。打造真正具有視覺互動力的智慧專案,就從這裡開始!
Thumbnail
2025/04/01
本篇將帶你學會如何使用 Arduino 控制 液晶顯示器(LCD),實現文字、數字、符號等資料的顯示。 透過本篇學習,你將具備 資訊輸出介面設計的能力,能讓你的 Arduino 裝置「說話」、「解釋資料」,更適合真實應用與展示。打造真正具有視覺互動力的智慧專案,就從這裡開始!
Thumbnail
看更多
你可能也想看
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
這篇內容,將會講解什麼是「switch」,以及與「switch」相關的知識。包括switch的簡介、switch、break。
Thumbnail
這篇內容,將會講解什麼是「switch」,以及與「switch」相關的知識。包括switch的簡介、switch、break。
Thumbnail
打開 jupyter notebook 寫一段 python 程式,可以完成五花八門的工作,這是玩程式最簡便的方式,其中可以獲得很多快樂,在現今這種資訊發達的時代,幾乎沒有門檻,只要願意,人人可享用。 下一步,希望程式可以隨時待命聽我吩咐,不想每次都要開電腦,啟動開發環境,只為完成一個重複性高
Thumbnail
打開 jupyter notebook 寫一段 python 程式,可以完成五花八門的工作,這是玩程式最簡便的方式,其中可以獲得很多快樂,在現今這種資訊發達的時代,幾乎沒有門檻,只要願意,人人可享用。 下一步,希望程式可以隨時待命聽我吩咐,不想每次都要開電腦,啟動開發環境,只為完成一個重複性高
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
本文是參考 https://github.com/Tinyu-Zhao/TinyGPSPlus-ESP32 官方資料庫範例
Thumbnail
本文是參考 https://github.com/Tinyu-Zhao/TinyGPSPlus-ESP32 官方資料庫範例
Thumbnail
ESP32 連接 GPS模組 讀取gps 模組資料
Thumbnail
ESP32 連接 GPS模組 讀取gps 模組資料
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News