跳到:
ESP32 教學 1/55 - SunFounder ESP32 IoT 學習套件軟件同 Arduino IDE 簡介 ESP32 教學 2/55 - 咩係 ESP32、相機擴展板、開箱 SunFounder 嘅 ESP32 IoT 套件 ESP32 教學 3/55 - 電阻、LED、麵包板項目:Hello LED -ESP32 IoT 學習套件 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 教學 30/55 - 使用 Adafruit IO 服務透過 MQTT 喺網頁上控制伺服摩打 | SunFounder 嘅 ESP32 IoT 學習套件 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 教學 45/55 - 自訂串流伺服器配合 LED 控制 CAM-3 l SunFounder 嘅 ESP32 學習套件 ESP32 教學 46/55 - 使用 HiveMQ MQTT 進行遠程溫度監控 | SunFounder 嘅 ESP32 套件 ESP32 教學 47/55 - 使用 MQTT 透過互聯網嘅 WS2812 CheerLights | SunFounder 嘅 ESP32 IoT 套件 ESP32 教學 48/55 - 遠程溫度監控同 LED 控制 MQTT | SunFounder 嘅 ESP32 IoT 套件 ESP32 教學 49/55 - 透過 Adafruit IoT 控制直流摩打 | SunFounder 嘅 ESP32 套件 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 教學 21/55 - 用 PIR 動作感應器偵測人體 | SunFounder 嘅 ESP32 IoT 學習套件
喺呢個教學入面,我哋會學吓點樣用PIR動作感應器配合ESP32嚟偵測人類存在。ESP32係一個功能強大嘅微控制器,同時具備Wi-Fi同藍牙功能,好啱用喺IoT項目度。透過整合PIR感應器,我哋可以建立一個系統,喺偵測到動作嘅時候啟動LED或者蜂鳴器,提供一個簡單但有效嘅方法嚟監測人類活動。
PIR感應器 RE 200B
PIR(被動紅外線)感應器透過感應物件發出嘅紅外線輻射嚟偵測動作,特別係好似人類咁有溫暖身體嘅物件。當偵測到動作嘅時候,感應器會發送訊號畀ESP32,然後ESP32可以觸發輸出,例如點亮LED或者令蜂鳴器發聲。呢個教學會引導你完成硬件設置、接線同代碼,令系統正常運作(喺影片00:45位置)。
ESP32-21動作感應器-電路圖
硬件解說
呢個項目涉及幾個主要組件。ESP32微控制器作為操作嘅大腦,負責處理感應器數據同控制輸出。PIR動作感應器透過量度紅外線輻射嘅變化嚟偵測移動。LED或者蜂鳴器喺偵測到動作嘅時候提供視覺或者聽覺警報。
ESP32配備Wi-Fi同藍牙,容許擴展功能好似雲端連接。PIR感應器包含一個透鏡,將紅外線聚焦喺熱電感應器上面,當佢偵測到紅外線水平變化嘅時候會產生電壓訊號,表示有移動。
數據表詳情
製造商
SunFounder
零件編號
PIR感應器模組
邏輯/IO電壓
3.3 V
供電電壓
3.3 V
輸出電流(每通道)
最大20 mA
峰值電流(每通道)
最大50 mA
PWM頻率指引
唔適用
輸入邏輯閾值
0.3 V(低),2.0 V(高)
電壓降 / RDS(on) / 飽和
唔適用
熱限制
0至70 °C
封裝
模組
備註 / 變體
可調較靈敏度同延遲
確保正確供電(3.3 V)以避免損壞。
為LED使用電阻嚟限制電流。
保持正確接線以防止短路。
按需要調整PIR感應器旋鈕嚟設定靈敏度同延遲。
喺唔同環境測試感應器以獲得最佳性能。
接線指示
ESP32-21_motion_sensor-wiring
要將PIR動作感應器同LED接線到ESP32,首先將PIR感應器嘅VCC引腳連接到ESP32嘅3.3 V輸出。跟住將PIR感應器嘅接地引腳連接到ESP32嘅接地引腳。PIR感應器嘅訊號引腳(通常標示為S)應該連接到ESP32嘅GPIO引腳14。
對於LED,將較長嘅腳(陽極)透過220歐姆電阻連接到GPIO引腳26,然後將較短嘅腳(陰極)連接到接地。確保所有連接穩固以確保正常功能。如果你用蜂鳴器代替LED,將蜂鳴器嘅一個引腳連接到GPIO引腳26,另一個連接到接地,取代LED設置。
代碼示例同解說
喺代碼入面,我哋定義PIR感應器同LED嘅引腳號碼。我哋用const int pirPin = 14;嚟設定PIR引腳,用const int ledPin = 26;嚟設定LED引腳。呢啲常數確保引腳號碼喺程式執行期間保持不變。
const int pirPin = 14; // PIR引腳號碼
const int ledPin = 26; // LED引腳
呢段代碼初始化我哋會用嘅引腳。喺setup()函數入面,我哋將PIR引腳配置為輸入,LED引腳配置為輸出。呢個設置對於讀取感應器狀態同控制LED好重要。
void setup() {
Serial.begin(115200);
pinMode(pirPin, INPUT); // 將PIR引腳初始化為輸入
pinMode(ledPin, OUTPUT); // 將LED引腳初始化為輸出
}
喺loop()函數入面,我哋用digitalRead(pirPin);持續讀取PIR感應器嘅狀態。如果感應器偵測到動作(以HIGH狀態表示),我哋用digitalWrite(ledPin, HIGH);點亮LED。否則,我哋熄滅LED。
if (pirState == HIGH) {
digitalWrite(ledPin, HIGH); // 點亮LED
} else {
digitalWrite(ledPin, LOW); // 熄滅LED
}
呢個邏輯令LED可以回應PIR感應器偵測到嘅動作。確保上傳文章下面提供嘅完整代碼以獲得完整功能。
示範 / 預期效果
當一切設置好並且代碼上傳之後,當PIR感應器偵測到動作嘅時候,LED會亮起。你可以透過喺感應器前面移動嚟測試;LED應該即刻亮起。如果感應器設定咗延遲,佢會喺指定時間內保持亮住,然後先至熄滅(喺影片12:15位置)。
常見問題包括接線錯誤,咁會令感應器無法正常運作。確保PIR感應器有正確供電,而且訊號腳要連接到ESP32上正確嘅GPIO腳位。調整PIR感應器上面嘅靈敏度同延遲旋鈕,都可以幫你根據環境優化效能。
影片時間標記
00:00 開始
1:54 PIR感應器簡介
6:38 接線講解
10:21 Arduino程式碼講解
12:45 喺Arduino IDE入面選擇ESP32開發板同COM埠
14:27 PIR感應器示範同校準
圖片
ESP32-21_motion_sensor-wiring
PIR SENSOR RE 200B
ESP32-21_motion_sensor-schematic
ESP32-21_motion_sensor-wiring
ESP32-21_motion_sensor-schematic
代碼
820-ESP32 Tutorial 21/55- Arduino code for motion sensor
語言: C++
檢視程式碼
// set pin numbers
const int pirPin = 14; // the number of the pir pin
const int ledPin = 26; // LED pin
// variable for storing the pir status
int pirState = 0;
void setup() {
Serial.begin(115200);
// initialize the pir pin as an input
pinMode(pirPin, INPUT);
// initialize the LED pin as an output
pinMode(ledPin, OUTPUT);
}
void loop() {
// read the state of the pir value
pirState = digitalRead(pirPin);
Serial.println(pirState);
delay(100);
// if the pir is pressed, the pirState is HIGH
if (pirState == HIGH) {
// turn LED on
digitalWrite(ledPin, HIGH);
} else {
// turn LED off
digitalWrite(ledPin, LOW);
}
}