Table of Contents
Toggle前言
你是否曾經遇過水塔沒水卻忘記加水,或魚缸水位太低導致馬達燒壞的情況?如果有,那麼這篇文章正是為你準備的!今天我們要介紹一個新手也能輕鬆上手的專案:Arduino + 水位感測器 = DIY 自動化水位控制系統。不僅能節省時間,還能避免麻煩。
認識 ESP32 與自動化基礎
什麼是 Arduino?
ESP32是一塊開放原始碼的微控制器開發板,它就像一個小型大腦,可以接收感測器訊號,並控制輸出裝置(如馬達、LED、繼電器)。對初學者來說,它簡單好學、資源豐富,是踏入電子與自動化世界的最佳起點。
自動化生活的應用範例
你是否注意到生活中很多小動作都能被「自動化」?例如:洗衣機自動偵測水位、馬桶自動補水、農業自動灌溉。這些功能其實和我們要做的水位控制專案原理相同。
為何新手適合從水位控制開始?
因為它「直觀又實用」!水位變化容易觀察,控制水泵也能立即看到效果,不像一些高階專案需要大量理論。
水位感測器的工作原理
電阻式水位感測器
最常見、最便宜的選擇,透過電極接觸水導電,判斷水位高度。
超音波水位感測器
利用聲波測距,不需直接接觸水,適合大型水槽或腐蝕性液體。
電容式水位感測器
透過電容變化偵測液體高度,精準度較高,但價格稍貴。
三種感測器比較
- 電阻式:便宜、簡單,但受水質影響。
- 超音波:耐用、非接觸,但需要電源穩定。
- 電容式:精準、壽命長,但成本高。
準備材料與工具
- ESP32開發板
- 水位感測器模組
- 綠、黃、紅LED燈各1個
- 220Ω(歐姆) 3顆
- 麵包板 1個
- 杜邦線若干條
優良廠家推薦連結:

電路連接教學
水位感測器與 ESP32 接線
一般感測器輸出 Analog 或 Digital 訊號,接到 ESP32 #4 腳位即可讀取。

撰寫 ESP32 程式
感測器數值讀取程式
用 analogRead() 讀取感測器數值,並印出在序列埠監控器。
紀錄下讀取到的數值,待會程式中做為高、中、低水位的判斷。
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
}
void loop() {
// put your main code here, to run repeatedly:
Serial.println(analogRead(4));
delay(200);
}
增加綠、黃、紅LED燈判斷式程式
LED燈程式可以參考之前文章,連結"【Arduino入門】如何用按鈕開關控制LED燈"
const int greenLED = 12; //綠色LED燈腳位12,變數為greenLED
const int yellowLED = 14; //黃色LED燈腳位14,變數為yellowLED
const int redLED = 27; //紅色LED燈腳位27,變數為redLED
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
pinMode(greenLED, OUTPUT); //設定綠色LED燈為輸出
pinMode(yellowLED, OUTPUT); //設定黃色LED燈為輸出
pinMode(redLED, OUTPUT); //設定紅色LED燈為輸出
}
void loop() {
// put your main code here, to run repeatedly:
int value(analogRead(4)); //讀取水位感測器腳位4,變數為value
Serial.println(value); //將讀取到水位value列印在序列埠監控窗
if (value > 1550) { //if判斷式,如果value值小於1550時,執行下列程式
Serial.println("滿水位"); //列印出滿水位
digitalWrite(greenLED, HIGH); //綠色LED燈亮
digitalWrite(yellowLED, LOW); //黃色LED燈關
digitalWrite(redLED, LOW); //紅色LED燈關
} else if ((value < 1550) && (value > 1200)) { //else if判斷式,但是如果value小於1550,並大於1200時,執行下列程式
Serial.println("水用去一半了"); //列印出水用去一半了
digitalWrite(greenLED, LOW); //綠色LED燈關
digitalWrite(yellowLED, HIGH); //黃色LED燈亮
digitalWrite(redLED, LOW); //紅色LED燈關
} else if (value < 1200) { //如果value小於1200時,執行下列程式
Serial.println("低水位"); //列印低水位
digitalWrite(greenLED, LOW); //綠色LED燈關
digitalWrite(yellowLED, LOW); //黃色LED燈關
digitalWrite(redLED, HIGH); //紅色LED燈亮
}
delay(200); //間隔0.2秒
}
DIY 實作步驟
硬體安裝與測試
先把感測器放入水槽,接上電路並確認接線無誤。
上傳程式與驗證
打開 Arduino IDE,上傳程式,檢查序列埠輸出是否正確。
模擬不同水位狀態
試著加水或離開水,觀察LED燈,依程式中判斷式,個別亮啟綠、黃、紅燈,通知你水位在那一個位置。
水位感測器測試影片
結論
ESP32水位自動控制專案是一個 簡單、便宜、又實用 的入門專案。只要花上一個下午,你就能完成屬於自己的自動化系統,從此不用再擔心水位不足的問題。對新手來說,這是一個結合理論與實作的絕佳練習,更能激發你繼續挑戰更多進階專案。
常見問答(FAQ)
Q1: 水位感測器壽命大概多久?
A: 電阻式約半年至一年,超音波與電容式壽命更長,可達 3~5 年。
Q2: 能否應用在魚缸或農業?
A: 當然可以!魚缸補水、農業灌溉都是經典應用。
Q3: 如果停電會發生什麼事?
A: 系統會停止運作,建議加 UPS 或備用電源確保穩定。
