บทเรียน ESP32 21/55 - การตรวจจับมนุษย์ด้วยเซนเซอร์ตรวจจับการเคลื่อนไหว PIR | ชุดเรียนรู้ IoT ESP32 ของ SunFounder
ในบทช่วยสอนนี้ เราจะเรียนรู้วิธีการใช้เซนเซอร์ตรวจจับความเคลื่อนไหว PIR ร่วมกับ ESP32 เพื่อตรวจจับการมีอยู่ของมนุษย์ ESP32 เป็นไมโครคอนโทรลเลอร์ที่ทรงพลังซึ่งมีความสามารถทั้ง Wi-Fi และ Bluetooth ทำให้เหมาะสำหรับโปรเจกต์ IoT โดยการรวมเซนเซอร์ PIR เข้าด้วยกัน เราสามารถสร้างระบบที่เปิดใช้งาน LED หรือออดเมื่อตรวจพบความเคลื่อนไหว ซึ่งเป็นวิธีที่ง่ายแต่มีประสิทธิภาพในการตรวจสอบกิจกรรมของมนุษย์
เซนเซอร์ PIR (Passive Infrared) ตรวจจับความเคลื่อนไหวโดยการรับรู้รังสีอินฟราเรดที่ปล่อยออกมาจากวัตถุ โดยเฉพาะวัตถุที่มีความอบอุ่นเช่นมนุษย์ เมื่อตรวจพบความเคลื่อนไหว เซนเซอร์จะส่งสัญญาณไปยัง ESP32 ซึ่งสามารถสั่งให้เกิดเอาต์พุต เช่น การเปิดไฟ LED หรือการส่งเสียงออด บทช่วยสอนนี้จะแนะนำคุณเกี่ยวกับการตั้งค่าฮาร์ดแวร์ การเดินสายไฟ และโค้ดที่จำเป็นเพื่อให้ระบบทำงานได้อย่างถูกต้อง (ในวิดีโอที่เวลา 00:45)
อธิบายฮาร์ดแวร์
โปรเจกต์นี้เกี่ยวข้องกับส่วนประกอบสำคัญหลายอย่าง ไมโครคอนโทรลเลอร์ ESP32 ทำหน้าที่เป็นสมองของการทำงาน จัดการข้อมูลจากเซนเซอร์และควบคุมเอาต์พุต เซนเซอร์ตรวจจับความเคลื่อนไหว PIR ตรวจจับการเคลื่อนไหวโดยการวัดการเปลี่ยนแปลงของรังสีอินฟราเรด LED หรือออดให้สัญญาณเตือนที่มองเห็นหรือได้ยินเมื่อตรวจพบความเคลื่อนไหว
ESP32 มาพร้อมกับ Wi-Fi และ Bluetooth ทำให้สามารถขยายฟังก์ชันการทำงาน เช่น การเชื่อมต่อคลาวด์ได้ เซนเซอร์ PIR ประกอบด้วยเลนส์ที่โฟกัสแสงอินฟราเรดไปยังเซนเซอร์ไพโรอิเล็กทริก ซึ่งสร้างสัญญาณแรงดันไฟฟ้าเมื่อตรวจพบการเปลี่ยนแปลงของระดับอินฟราเรด ซึ่งบ่งบอกถึงการเคลื่อนไหว
รายละเอียดจาก Datasheet
| ผู้ผลิต | 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 สำหรับความไวและหน่วงเวลาตามความต้องการ
- ทดสอบเซนเซอร์ในสภาพแวดล้อมที่แตกต่างกันเพื่อประสิทธิภาพที่ดีที่สุด
คำแนะนำการเดินสายไฟ

ในการเดินสายไฟเซนเซอร์ตรวจจับความเคลื่อนไหว PIR และ LED เข้ากับ ESP32 ให้เริ่มต้นโดยเชื่อมต่อพิน VCC ของเซนเซอร์ PIR เข้ากับเอาต์พุต 3.3 V บน ESP32 จากนั้นเชื่อมต่อพินกราวด์ของเซนเซอร์ PIR เข้ากับพินกราวด์บน ESP32 พินสัญญาณ (มักระบุเป็น S) จากเซนเซอร์ PIR ควรเชื่อมต่อกับพิน GPIO 14 บน ESP32
สำหรับ LED ให้เชื่อมต่อขาที่ยาวกว่า (แอโนด) เข้ากับพิน GPIO 26 ผ่านตัวต้านทาน 220 โอห์ม และเชื่อมต่อขาที่สั้นกว่า (แคโทด) เข้ากับกราวด์ ตรวจสอบให้แน่ใจว่าการเชื่อมต่อทั้งหมดแน่นหนาเพื่อให้ทำงานได้อย่างถูกต้อง หากคุณใช้ออดแทน 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() เราอ่านสถานะของเซนเซอร์ PIR อย่างต่อเนื่องโดยใช้ digitalRead(pirPin); หากเซนเซอร์ตรวจพบความเคลื่อนไหว (แสดงโดยสถานะ HIGH) เราจะเปิด LED โดยใช้ digitalWrite(ledPin, HIGH); มิฉะนั้น เราจะปิด LED
if (pirState == HIGH) {
digitalWrite(ledPin, HIGH); // เปิด LED
} else {
digitalWrite(ledPin, LOW); // ปิด LED
}
ตรรกะนี้ช่วยให้ LED ตอบสนองต่อความเคลื่อนไหวที่ตรวจพบโดยเซนเซอร์ PIR ตรวจสอบให้แน่ใจว่าอัปโหลดโค้ดเต็มที่ให้ไว้ด้านล่างบทความเพื่อการทำงานที่สมบูรณ์
การสาธิต / สิ่งที่คาดหวัง
เมื่อตั้งค่าทุกอย่างเรียบร้อยและอัปโหลดโค้ดแล้ว LED จะสว่างขึ้นเมื่อเซนเซอร์ PIR ตรวจพบความเคลื่อนไหว คุณสามารถทดสอบเซนเซอร์ได้โดยการเคลื่อนไหวด้านหน้าเซนเซอร์ LED ควรสว่างขึ้นทันที หากเซนเซอร์ตั้งค่าเป็นโหมดหน่วงเวลา มันจะยังคงสว่างอยู่ตามเวลาที่กำหนดก่อนจะดับลงอีกครั้ง (ในวิดีโอที่เวลา 12:15)
ข้อผิดพลาดทั่วไปรวมถึงการเดินสายไฟที่ไม่ถูกต้อง ซึ่งอาจทำให้เซนเซอร์ไม่ทำงาน ตรวจสอบให้แน่ใจว่าเซนเซอร์ PIR ได้รับพลังงานอย่างถูกต้อง และขาสัญญาณเชื่อมต่อกับขา GPIO ที่ถูกต้องบน ESP32 การปรับปุ่มความไวและหน่วงเวลาบนเซนเซอร์ PIR ยังช่วยเพิ่มประสิทธิภาพการทำงานตามสภาพแวดล้อมของคุณได้อีกด้วย
ไทม์สแตมป์ของวิดีโอ
- 00:00 เริ่มต้น
- 1:54 แนะนำเซนเซอร์ PIR
- 6:38 อธิบายการเดินสายไฟ
- 10:21 อธิบายโค้ด Arduino
- 12:45 เลือกบอร์ด ESP32 และพอร์ต COM ใน Arduino IDE
- 14:27 การสาธิตและการปรับเทียบเซนเซอร์ PIR
// 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);
}
}
Common Course Links
Common Course Files
แหล่งข้อมูลและเอกสารอ้างอิง
ยังไม่มีทรัพยากรเลย
ไฟล์📁
แผ่นข้อมูล (pdf)
-
RE200B_PRI motion sensor datasheet
RE200B_PRI_datasheet.pdf0.02 MB -
BISS0001 motion sensor chip datasheet
BISS0001_datasheet.pdf0.16 MB
ไฟล์อื่น ๆ
-
คู่มือผู้ใช้เซ็นเซอร์ตรวจจับการเคลื่อนไหว HC-SR501
robojax-HC-SR501-motion-manual.pdf0.83 MB