Search Code

ESP32 教學 19/55 - 使用紅外線感測器偵測障礙物 | SunFounder 嘅 ESP32 IoT 學習套件

ESP32 教學 19/55 - 使用紅外線感測器偵測障礙物 | SunFounder 嘅 ESP32 IoT 學習套件

喺呢個教學入面,我哋會學吓點樣用紅外線避障感應器配合ESP32模組嚟偵測障礙物。呢個項目會示範感應器偵測到障礙物嗰陣,點樣觸發蜂鳴器。個設定亦都會喺序列監視器度顯示偵測狀態,提供一個清晰同互動嘅方式嚟觀察感應器嘅功能。

我哋會用SunFounder ESP32 IoT學習套件,入面包括咗具備Wi-Fi同藍牙功能嘅ESP32微控制器。紅外線感應器嘅運作原理係發射紅外線光,光線會喺附近嘅障礙物度反射返嚟。當光線反射返嚟嗰陣,感應器就會觸發一個輸出訊號,我哋會喺程式碼入面讀取呢個訊號。我哋亦都會加一個蜂鳴器,當偵測到障礙物嗰陣就會啟動,提供聲音警報。

硬件解說

呢個項目嘅主要組件包括ESP32模組、紅外線避障感應器同一個蜂鳴器。ESP32模組係中央處理單元,負責處理感應器輸入同控制輸出。佢可以用鋰電池供電,令到佢便攜同靈活,適合各種應用。

紅外線避障感應器由一個發射器同一個接收器組成。發射器會發出紅外線光,而接收器就會偵測附近物件反射返嚟嘅光。當有障礙物嘅時候,感應器嘅輸出腳會變低,通知ESP32採取行動,例如開著蜂鳴器。

數據手冊詳情

製造商SunFounder
零件編號紅外線避障感應器
工作電壓3.3 V - 5 V
輸出類型數碼(偵測到障礙物時為低電平)
偵測範圍最遠20厘米
響應時間少於10毫秒
封裝模組

  • 電源供應:3.3 V至5 V運作。
  • 偵測到障礙物時輸出訊號會變低。
  • 可透過可變電阻調整靈敏度。
  • 典型偵測範圍最遠20厘米。
  • 響應時間快,少於10毫秒。

接線說明

ESP32-19-obstacle_voide-wiring

要將紅外線避障感應器接駁到ESP32,首先將感應器嘅VCC腳連接到ESP32嘅5V腳。跟住將感應器嘅GND腳連接到ESP32嘅其中一個GND腳。最後,將感應器嘅OUT腳連接到ESP32嘅GPIO 14腳。

至於蜂鳴器,將負極連接到GND,正極連接到GPIO 27腳。確保所有連接穩固,同埋感應器正確供電。接線應該好簡單,因為感應器同蜂鳴器只需要簡單嘅電源同訊號連接。

程式碼示例同講解

喺程式碼入面,我哋首先定義連接避障感應器嘅腳位。呢個係用識別碼avoidPin設定為14嚟做。我哋亦都宣告一個變數avoidState嚟儲存感應器嘅輸出狀態。

const int avoidPin = 14;  // 避障模組腳位號碼

int avoidState = 0;

喺setup函數入面,我哋初始化序列通訊,並將avoidPin設定為輸入。咁樣ESP32就可以讀取感應器嘅輸出狀態。

void setup() {
  Serial.begin(115200);  
  pinMode(avoidPin, INPUT);
}

喺loop函數入面,我哋持續用digitalRead(avoidPin)讀取感應器嘅輸出,並將結果儲存喺avoidState。呢個值跟住會列印到序列監視器,等我哋可以睇到幾時偵測到障礙物(輸出會係0)或者冇障礙物(輸出會係1)。

void loop() {
  avoidState = digitalRead(avoidPin);
  Serial.println(avoidState);
}

至於完整程式碼,請參考文章下面嘅載入部分。

示範/預期效果

當設定完成同程式碼上載之後,你應該會見到序列監視器顯示0或者1,視乎有冇偵測到障礙物。當有障礙物喺偵測範圍內,輸出會讀到0,蜂鳴器會響。如果移走障礙物,輸出會讀到1,蜂鳴器會停。呢個功能喺影片入面有示範(影片12:30位置)。

常見問題可能包括接線錯誤,導致感應器無法正常運作,或者序列監視器嘅波特率唔啱,令數據無法正確顯示。如果遇到問題,記得檢查呢啲方面。

影片時間標記

  • 00:00 開始
  • 1:57 項目介紹
  • 4:33 避障感應器接線
  • 5:55 避障功能嘅Arduino程式碼
  • 7:36 喺Arduino IDE度選擇ESP32開發板同COM埠
  • 9:18 項目示範
  • 10:42 調整靈敏度增加範圍
  • 12:39 偵測到障礙物時採取行動
  • 14:24 偵測到障礙物時使用蜂鳴器

圖片

ESP32-19-obstacle_voide-schematic
ESP32-19-obstacle_voide-schematic
ESP32-19-obstacle_voide-wiring
ESP32-19-obstacle_voide-wiring
818-ESP32 Tutorial 19/55- Arduino code for obstacle avoidance module
語言: C++
// set pin
const int avoidPin = 14;  // the number of the avoid avoid module pin

// variable for storing the avoid status 
int avoidState = 0;

void setup() {
  Serial.begin(115200);  
  // initialize the avoid pin as an input
  pinMode(avoidPin, INPUT);
}

void loop() {
  // read the state of the avoid value
  avoidState = digitalRead(avoidPin);
  Serial.println(avoidState);
}

資源與參考資料

文件📁

冇文件可用。