跳到:
ESP32 Tutorial 1/55 - Introduction to SunFounder's ESP32 IoT Learning kit Software and Arduino IDE ESP32 Tutorial 2/55 - What's ESP32, Camera Extension Board, unboxing SunFounder's ESP32 IoT kit ESP32 Tutorial 3/55 - Resistor, LED, Breadboard Project: Hello LED -ESP32 IoT Learning kit ESP32 教學 4/55 - 數據類型 定義變量 Int、bool、char、序列監視器 - ESP32 IoT 套件 ESP32 教學 5/55 - LED 漸變,控制 LED 亮度 - ESP32 物聯網學習套件 ESP32 教學 6/55 - 使用 RGB LED 項目 2.3 - SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 7/55 - 使用陣列配合 ESP32 Arduino 程式設計 - SunFounder 嘅 ESP32 IoT 學習套件 ESP32 Tutorial 8/55 -Walking Light 74HC595 Shift register -SunFounder's ESP32 IoT Learning kit ESP32 教學 9/55 - 用按鈕切換 LED,按一下開,按一下關 - SunFounder ESP32 IoT 套件 ESP32 教學 10/55 - 使用七段顯示器 74HC595 嘅數字計數器 - ESP32 IoT 學習套件 ESP32 教學 11/55 - 使用 LCD1602 LCD2004 同 ESP32 - SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 12/55 - WS2812 RGB 燈帶 4 項目,配合 SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 13/55 - Arduino 用有源蜂鳴器發出嗶聲 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 14/55 - 使用 SunFounder ESP32 IoT 學習套件播放自訂音樂音符 ESP32 教學 15/55 - 用 ESP32 L293D 控制直流馬達速度 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 16/55 - 使用 ESP32 同 L293D 嘅迷你水泵 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 17/55 - 使用 ESP32 同電位器控制伺服馬達 - ESP32 IoT 學習套件 ESP32 教學 18/55 - 使用 ESP32 偵測傾斜 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 19/55 - 使用紅外線感測器偵測障礙物 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 20/55 - 循線模組 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 21/55 - 用 PIR 動作感應器偵測人體 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 22/55 - 用 LED Arduino 感受光線 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 23/55 - 使用 ESP32 讀取電位器電壓 | SunFounder 嘅 ESP32 IoT 套件 ESP32 教學 24/55 - 量度土壤濕度用於灌溉 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 25/55 - 使用 NTC 同 LCD 測量溫度 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 26/55 - 使用搖桿配合 Arduino 採取行動 | SunFounder 嘅 ESP32 IoT 套件 ESP32 教學 27/55 - 用超聲波感測器量度距離 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 28/55 - DHT11 溫度感測器配合 LCD | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 29/55 - 用 ESP32 讀取紅外線遙控器按鍵| SunFounder 嘅 ESP32 IoT 學習套件 ESP32 Tutorial 30/55 - Control Servo Over the web using MQTT using Adafruit IO Service | SunFounder's ESP32 IoT Leaning kit ESP32 教學 31/55 - 專案 LED 燈帶配合避障功能 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教程 32/55 - 汽车倒车距离警告(带LCD同蜂鸣器)| SunFounder嘅物联网学习套件 ESP32 教學 33/55 - 使用 SunFounder 嘅 ESP32 IoT 學習套件整數碼骰仔 ESP32 教學 34/55 - 用 RGB LED 同旋鈕整顏色漸變 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 35/55 - 植物監測器,土壤、溫度同光線 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 36/55 - 猜數字遊戲 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 37/55 - 使用藍牙應用程式配合 ESP32 BLE | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 38/55 - 用手機控制 RGB LED | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 39/55 - 用 ESP32 做藍牙音樂播放器 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 40/55 - 讀寫 Micro SD 卡 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 41/55 - 使用 Micro SD 卡嘅 MP3 播放器 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 42/55 - 用相機影相並儲存喺 Micro SD CAM-1 | SunFounder 嘅 ESP32 套件 ESP32 教程 43/55 - 物聯網互聯網天氣站 | SunFounder 嘅 ESP32 物聯網學習套件 ESP32 教學 44/55 - ESP32 相機網絡伺服器透過 WiFi 傳輸視頻串流 CAM-2 | SunFounder 嘅 ESP32 套件 ESP32 Tutorial 45/55 - Custom Streamign Server with LED control CAM-3 l SunFounder's ESP32 Learning kit ESP32 教學 46/55 - 使用 HiveMQ MQTT 進行遠程溫度監控 | SunFounder 嘅 ESP32 套件 ESP32 教學 47/55 - 使用 MQTT 透過互聯網嘅 WS2812 CheerLights | SunFounder 嘅 ESP32 IoT 套件 ESP32 Tutorial 48/55 - Remote Temperature Monitoring and LED control MQTT | SunFounder's ESP32 IoT kit ESP32 Tutorial 49/55 - Control DC Motor Over The internet using Adafruit IoT | SunFounder's ESP32 kit ESP32 教學 50/55 - 喺世界任何地方控制 RGB LED | SunFounder 嘅 ESP32 套件 ESP32 Tutorial 51/55 - Temperature and Humidity over WiFi with DHT | SunFounder's ESP32 IoT Learning Kit ESP32 教學 52/55 - WS2812 CheerLights MQTT 全球同步連 LCD | SunFounder ESP32 IoT 套件 ESP32 教學 53/55 - 建立 LCD 網絡時鐘 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 54/55 - 透過 Wi-Fi 設定 WS2812 LED 燈條顏色 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 55/55 - 點樣量度 12V、24V 或者 100V 直流電壓 | 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-wiring
ESP32-19-obstacle_voide-schematic
ESP32-19-obstacle_voide-wiring
代碼
818-ESP32 Tutorial 19/55- Arduino code for obstacle avoidance module
語言: C++
View code
// 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);
}