新手必學 ESP32 教學|水位感測器 DIY 自動化水位控制

你是否曾經遇過水塔沒水卻忘記加水,或魚缸水位太低導致馬達燒壞的情況?如果有,那麼這篇文章正是為你準備的!今天我們要介紹一個新手也能輕鬆上手的專案:Arduino + 水位感測器 = DIY 自動化水位控制系統。不僅能節省時間,還能避免麻煩。

認識 ESP32 與自動化基礎

什麼是 Arduino?

ESP32是一塊開放原始碼的微控制器開發板,它就像一個小型大腦,可以接收感測器訊號,並控制輸出裝置(如馬達、LED、繼電器)。對初學者來說,它簡單好學、資源豐富,是踏入電子與自動化世界的最佳起點。

自動化生活的應用範例

你是否注意到生活中很多小動作都能被「自動化」?例如:洗衣機自動偵測水位、馬桶自動補水、農業自動灌溉。這些功能其實和我們要做的水位控制專案原理相同。

為何新手適合從水位控制開始?

因為它「直觀又實用」!水位變化容易觀察,控制水泵也能立即看到效果,不像一些高階專案需要大量理論。

水位感測器的工作原理

電阻式水位感測器

最常見、最便宜的選擇,透過電極接觸水導電,判斷水位高度。

超音波水位感測器

利用聲波測距,不需直接接觸水,適合大型水槽或腐蝕性液體。

電容式水位感測器

透過電容變化偵測液體高度,精準度較高,但價格稍貴。

三種感測器比較

  • 電阻式:便宜、簡單,但受水質影響。
  • 超音波:耐用、非接觸,但需要電源穩定。
  • 電容式:精準、壽命長,但成本高。

準備材料與工具

  • ESP32開發板
  • 水位感測器模組
  • 綠、黃、紅LED燈各1個
  • 220Ω(歐姆) 3顆
  • 麵包板 1個
  • 杜邦線若干條

優良廠家推薦連結:

Water Sensor

電路連接教學

水位感測器與 ESP32 接線

一般感測器輸出 Analog 或 Digital 訊號,接到 ESP32 #4 腳位即可讀取。

Water Sensor Line

撰寫 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 或備用電源確保穩定。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

返回頂端