一、 實驗說明:監測水位變化與液體洩漏警報!
在智慧農業、自動化澆水、集水坑監測或是居家防漏水警報等 IoT 物聯網專題中,水位感測器(Water Level Sensor / 雨滴感測器) 是非常實用且便宜易用的模組。此款感測器不僅可以偵測水滴(雨水),也能用來測量水位高度、監測集水坑狀態或液體洩漏狀況。
本實驗米羅將帶大家使用 ESP32 開發板 搭配水位感測器與 RGB LED,透過類比訊號讀取水位高度變化,並結合前一篇學到的 RGB LED 混色控制,打造一套具備「高、中、低」三段水位警報指示的物聯網監測系統!
二、 實驗材料準備清單
本篇實作 ESP32 水位感測器警報專案所需的硬體元件如下:
ESP32 開發板
麵包板 (Breadboard)
水位感測器 (Water Level Sensor)
RGB LED 模組
杜邦跳線若干
USB 傳輸線
🛒 一次備齊創客工具!
歡迎直接購買米羅科技的 ESP32 物聯網應用學習套件,免去東奔西跑湊零件的煩惱。內含 RGB LED 模組、各類感測器及基礎電子元件,是學校課堂教學與個人專案開發的最佳首選!
三、 核心知識:水位感測器工作原理與腳位定義
1. 水位感測器(Water Level Sensor)的工作原理
水位感測器表面印有平行鋪設的導電線路。當感測器浸入水中時,水作為導體會改變這些線路之間的電阻值。浸入水中的深度越深(接觸面積越大),導電性越好,輸出的類比電壓也會隨之改變。
2. ESP32 與感測器及 RGB LED 接線對照表
水位感測器的訊號腳位需連接至 ESP32 的 ADC(類比數位轉換器) 腳位。請依照下表進行電路接線:
S (信號):Pin 是一個類比輸出,需要連接到ESP32上的一個類比輸入腳位。
+ (VCC):為感測器供電。建議使用 3.3V – 5V 為傳感器供電。請注意,類比輸出將根據為感測器提供的電壓而變化。
– (接地):接地連接。
四、 實作實驗程式碼:讀取水位與 RGB 警報燈控制
請將以下程式碼複製到 Arduino IDE 中並上傳至 ESP32 開發板:
1. 範例程式碼
▼注意:假如使用下列程式碼發生編譯錯誤,則表示您目前安裝的ESP32函式庫較為新版,請務必將「#include <analogWrite.h>」這一行移除並重新編譯,則可編譯成功並正常運行。
#include <analogWrite.h>
int redPin = 15; // R 紅色LED控制腳 連接到ESP32的 GPIO15
int greenPin = 17; // G 綠色LED控制腳 連接到ESP32的 GPIO17
int bluePin = 16; // B 藍色LED控制腳 連接到ESP32的 GPIO16
int water_sensor=36; // 水位感測器S信號腳 連接到ESP32的 GPIO36
void setup()
{
pinMode(redPin, OUTPUT); //設置redPin對應的腳GPIO15為輸出
pinMode(greenPin, OUTPUT); //設置greenPin對應的腳GPIO17為輸出
pinMode(bluePin, OUTPUT); //設置bluePin對應的腳GPIO16為輸出
pinMode(water_sensor,INPUT); //設置water_sensor對應的腳GPIO36為輸入
}
void loop()
{
int val=analogRead(water_sensor); //從水位感測器讀出類比數值
if (val>2500){
color(255, 0, 0); //當水位值>2500:红色亮
}else if (val>800){
color(255,255,0); //當水位值介於2500~800:黄色亮
}else{
color(0,255, 0); //當水位值小於800:綠色亮
}
}
//顏色控制函數
void color (unsigned char red, unsigned char green, unsigned char blue)
{
analogWrite(redPin, red);
analogWrite(greenPin,green);
analogWrite(bluePin, blue);
}
2. 燒錄與操作測試
點擊 Arduino IDE 的 「上傳 (Upload)」 按鈕。
開啟 「序列埠監控視窗 (Serial Monitor)」(鮑率設為 9600)。
將水位感測器逐步放入水中測試高低水位變化,觀察數值與 RGB LED 的燈號切換:
高水位 (數值 > 2500): RGB LED 亮紅色發出警報。
中水位 (數值 800 ~ 2500): RGB LED 亮黃色作為提示。
低水位 (數值 < 800): RGB LED 亮綠色代表安全或乾旱狀態。
五、 初學者常見卡關問題與排錯指南(Troubleshooting)
1. 點擊上傳編譯時,出現 #include <analogWrite.h> 的 fatal error 錯誤?
解決方案: 代表您目前電腦中的 ESP32 開發板函式庫版本較新,新版的核心已自帶
analogWrite()函式。請直接刪除或註解掉程式碼第一行#include <analogWrite.h>即可順利通過編譯。
2. 感測器沒碰到水,序列埠讀值卻一直很高或跳動劇烈?
電源與接地檢查: 請確認感測器的
+與-針腳是否有確實接在 3.3V (或 5V) 與 GND 上。腳位選擇問題: 建議優先使用 GPIO 36 (ADC1)。若誤用 ADC2 通道腳位,當 ESP32 啟動 Wi-Fi 時會導致 ADC2 讀數失真或無法運作。
3. 感測器放入水中,但 RGB LED 切換的顏色不對?
腳位接法確認: 請重新檢查 RGB LED 的 R、G、B 控制腳位是否與程式定義一致(GPIO 15 接綠、GPIO 16 接藍、GPIO 17 接紅)。
水質影響導電度: 不同品質的水(純淨水、自來水、雨水)導電度有所不同。您可以透過序列埠監控視窗觀測實際讀到的數值,手動修改程式碼中的
2500與800閾值判斷條件。
六、 結語與下一篇教學
恭喜你!成功掌握了 ESP32 讀取水位感測器類比訊號並結合 RGB LED 實作多階段警告燈號的技術。掌握了水位與雨滴的偵測後,就能延伸應用在智慧農場自動排水、家庭防水患告警等實用專題上!下一篇教學,我們將帶大家結合聲音播放模組,實作更震撼的聲光警報器專題!
👈 上一篇回顧: 【ESP32教學】第十三篇:酷炫多彩 RGB LED 燈控制:PWM 調光與色彩混色實作
👉 下一篇預告: 【ESP32教學】第十五篇:MQ-2氣體感測器與ISD1820語音錄放音模組 異味與煙霧語音警報器實作
▼【ESP32教學】教學總索引頁面


