Search Code

บทเรียน ESP32 21/55 - การตรวจจับมนุษย์ด้วยเซนเซอร์ตรวจจับการเคลื่อนไหว PIR | ชุดเรียนรู้ IoT ESP32 ของ SunFounder

บทเรียน ESP32 21/55 - การตรวจจับมนุษย์ด้วยเซนเซอร์ตรวจจับการเคลื่อนไหว PIR | ชุดเรียนรู้ IoT ESP32 ของ SunFounder

ในบทช่วยสอนนี้ เราจะเรียนรู้วิธีการใช้เซนเซอร์ตรวจจับความเคลื่อนไหว PIR ร่วมกับ ESP32 เพื่อตรวจจับการมีอยู่ของมนุษย์ ESP32 เป็นไมโครคอนโทรลเลอร์ที่ทรงพลังซึ่งมีความสามารถทั้ง Wi-Fi และ Bluetooth ทำให้เหมาะสำหรับโปรเจกต์ IoT โดยการรวมเซนเซอร์ PIR เข้าด้วยกัน เราสามารถสร้างระบบที่เปิดใช้งาน LED หรือออดเมื่อตรวจพบความเคลื่อนไหว ซึ่งเป็นวิธีที่ง่ายแต่มีประสิทธิภาพในการตรวจสอบกิจกรรมของมนุษย์

เซนเซอร์ PIR RE 200B

เซนเซอร์ PIR (Passive Infrared) ตรวจจับความเคลื่อนไหวโดยการรับรู้รังสีอินฟราเรดที่ปล่อยออกมาจากวัตถุ โดยเฉพาะวัตถุที่มีความอบอุ่นเช่นมนุษย์ เมื่อตรวจพบความเคลื่อนไหว เซนเซอร์จะส่งสัญญาณไปยัง ESP32 ซึ่งสามารถสั่งให้เกิดเอาต์พุต เช่น การเปิดไฟ LED หรือการส่งเสียงออด บทช่วยสอนนี้จะแนะนำคุณเกี่ยวกับการตั้งค่าฮาร์ดแวร์ การเดินสายไฟ และโค้ดที่จำเป็นเพื่อให้ระบบทำงานได้อย่างถูกต้อง (ในวิดีโอที่เวลา 00:45)

แผนผังวงจร ESP32-21_motion_sensor

อธิบายฮาร์ดแวร์

โปรเจกต์นี้เกี่ยวข้องกับส่วนประกอบสำคัญหลายอย่าง ไมโครคอนโทรลเลอร์ 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 สำหรับความไวและหน่วงเวลาตามความต้องการ
  • ทดสอบเซนเซอร์ในสภาพแวดล้อมที่แตกต่างกันเพื่อประสิทธิภาพที่ดีที่สุด

คำแนะนำการเดินสายไฟ

ESP32-21_motion_sensor-wiring

ในการเดินสายไฟเซนเซอร์ตรวจจับความเคลื่อนไหว 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

ภาพ

ESP32-21_motion_sensor-wiring
ESP32-21_motion_sensor-wiring
PIR SENSOR RE 200B
PIR SENSOR RE 200B
ESP32-21_motion_sensor-schematic
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);
  }
}

แหล่งข้อมูลและเอกสารอ้างอิง

ยังไม่มีทรัพยากรเลย

ไฟล์📁

แผ่นข้อมูล (pdf)