ค้นหาโค้ด

รหัส Arduino และวิดีโอสำหรับเซนเซอร์ตรวจจับการเคลื่อนไหว HC-SR501

รหัส Arduino และวิดีโอสำหรับเซนเซอร์ตรวจจับการเคลื่อนไหว HC-SR501

ในบทช่วยสอนนี้ เราจะสำรวจเซนเซอร์ตรวจจับความเคลื่อนไหว HC-SR501 ซึ่งออกแบบมาเพื่อตรวจจับความเคลื่อนไหวผ่านเทคโนโลยีอินฟราเรด เซนเซอร์สามารถทริกเกอร์เอาต์พุต ทำให้คุณสามารถควบคุมอุปกรณ์ต่างๆ เช่น LED หรือสัญญาณเตือนตามการตรวจจับความเคลื่อนไหว เมื่อจบบทช่วยสอนนี้ คุณจะมีความเข้าใจที่ชัดเจนเกี่ยวกับวิธีการเดินสายเซนเซอร์และเขียนโค้ด Arduino เพื่อให้ทำงานได้อย่างมีประสิทธิภาพ (ในวิดีโอที่ 00:45)

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

เซนเซอร์ตรวจจับความเคลื่อนไหว HC-SR501 เป็นโมดูลขนาดกะทัดรัดที่มีขนาด 32 x 24 มิลลิเมตร สามารถทำงานได้ในช่วงแรงดันไฟฟ้า 5 ถึง 20 โวลต์ หัวใจสำคัญคือเซนเซอร์อินฟราเรด LHI 778 ซึ่งตรวจจับความเคลื่อนไหวโดยการรับรู้การเปลี่ยนแปลงของรังสีอินฟราเรด ทำให้เหมาะสำหรับการใช้งานต่างๆ รวมถึงระบบรักษาความปลอดภัยและโครงการหุ่นยนต์

โมดูลนี้มีพินหลักสามพิน: VCC สำหรับไฟเลี้ยง, GND สำหรับกราวด์ และ OUT สำหรับสัญญาณเอาต์พุต เมื่อตรวจจับความเคลื่อนไหว พิน OUT จะส่งสัญญาณสูง (3.3 โวลต์ TTL) ซึ่งสามารถใช้เพื่อทริกเกอร์สัญญาณเตือนหรืออุปกรณ์อื่นๆ เซนเซอร์ยังมีการตั้งค่าความไวและเวลาหน่วงที่ปรับได้ ทำให้คุณสามารถปรับแต่งการทำงานตามความต้องการเฉพาะของคุณได้

รายละเอียดจาก Datasheet

ผู้ผลิตHC-SR501
หมายเลขชิ้นส่วนHC-SR501
แรงดันไฟฟ้าลอจิก/IO3.3 V
แรงดันไฟฟ้าจ่าย5–20 V
กระแสเอาต์พุต (ต่อช่อง)≤ 20 mA
กระแสสูงสุด (ต่อช่อง)≤ 50 mA
คำแนะนำความถี่ PWMไม่เกี่ยวข้อง
เกณฑ์ลอจิกอินพุต0.8 V (ต่ำ), 2.0 V (สูง)
แรงดันตก / RDS(on) / อิ่มตัว0.1 V
ขีดจำกัดความร้อน0°C ถึง 70°C
แพ็คเกจโมดูล
หมายเหตุ / รุ่นต่างๆปรับความไวและเวลาหน่วงได้

  • ตรวจสอบให้แน่ใจว่าแรงดันไฟฟ้าจ่ายถูกต้อง (5-20 V)
  • ใช้ตัวต้านทานอนุกรมกับ LED เพื่อจำกัดกระแส
  • ปรับโพเทนชิโอมิเตอร์ความไวสำหรับระยะการตรวจจับ
  • ตั้งค่าเวลาหน่วงเพื่อควบคุมระยะเวลาที่เอาต์พุตคงสถานะสูง
  • ระวังอินพุตลอย ใช้ตัวต้านทาน pull-up หรือ pull-down ตามความจำเป็น

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

Arduino wiring for HC-SR501 Motions sensor
Arduino wiring for HC-SR501 Motions sensor

ในการเดินสายเซนเซอร์ตรวจจับความเคลื่อนไหว HC-SR501 ให้เริ่มต้นโดยเชื่อมต่อพิน VCC เข้ากับเอาต์พุต 5V บน Arduino จากนั้นเชื่อมต่อพิน GND เข้ากับกราวด์ (GND) บน Arduino พิน OUT ควรเชื่อมต่อกับดิจิทัลพิน 2 บน Arduino ซึ่งจะอ่านสัญญาณการตรวจจับความเคลื่อนไหว

หากคุณใช้ LED สำหรับการแสดงผลด้วยภาพ ให้เชื่อมต่อขั้วแอโนด (ขายาว) ของ LED เข้ากับดิจิทัลพิน 8 บน Arduino ขั้วแคโทด (ขาสั้น) ควรเชื่อมต่อกับขั้วหนึ่งของตัวต้านทาน 680 โอห์ม โดยขั้วอีกด้านของตัวต้านทานไปที่กราวด์ การตั้งค่านี้ช่วยให้ Arduino ควบคุม LED ตามการตรวจจับความเคลื่อนไหว

ตัวอย่างโค้ดและคำอธิบาย

โค้ด Arduino สำหรับการตั้งค่านี้เริ่มต้นซีเรียลมอนิเตอร์และกำหนดค่าพินอินพุตและเอาต์พุต ตัวระบุสำคัญในโค้ด ได้แก่ motion ซึ่งเก็บสถานะของเซนเซอร์ตรวจจับความเคลื่อนไหว และดิจิทัลพินที่ใช้สำหรับอ่านอินพุตและควบคุม LED

void setup() {
  Serial.begin(9600);// ตั้งค่าซีเรียลมอนิเตอร์เพื่อแสดงข้อมูล
  pinMode(2, INPUT);// อินพุตจากเซนเซอร์
  pinMode(8, OUTPUT);// เอาต์พุตไปยังสัญญาณเตือนหรือ LED
}

ในส่วนนี้ ฟังก์ชัน setup() เริ่มต้นการสื่อสารซีเรียลและตั้งค่าโหมดพินสำหรับเซนเซอร์และ LED พิน 2 ถูกตั้งเป็นอินพุตเพื่ออ่านเอาต์พุตของเซนเซอร์ตรวจจับความเคลื่อนไหว ในขณะที่พิน 8 ถูกตั้งเป็นเอาต์พุตเพื่อควบคุม LED

void loop() {
  int motion = digitalRead(2);
  if(motion){
    Serial.println("Motion detected");
    digitalWrite(8, HIGH);
  }else{
    Serial.println("===nothing moves");
    digitalWrite(8, LOW);
  }
  delay(500);
}

โค้ดส่วนนี้แสดงลูปหลักที่โปรแกรมตรวจสอบสถานะของเซนเซอร์ตรวจจับความเคลื่อนไหวอย่างต่อเนื่อง หากตรวจพบความเคลื่อนไหว จะพิมพ์ "Motion detected" ไปยังซีเรียลมอนิเตอร์และเปิด LED หากไม่พบความเคลื่อนไหว จะพิมพ์ "===nothing moves" และปิด LED

การสาธิต / สิ่งที่คาดหวัง

เมื่อการตั้งค่าเสร็จสมบูรณ์และอัปโหลดโค้ดไปยัง Arduino คุณควรคาดหวังให้ LED สว่างขึ้นเมื่อเซนเซอร์ HC-SR501 ตรวจจับความเคลื่อนไหว นอกจากนี้ ซีเรียลมอนิเตอร์จะแสดงข้อความระบุว่าตรวจพบความเคลื่อนไหวหรือไม่ หากคุณปรับการตั้งค่าความไวและเวลาหน่วงบนเซนเซอร์ คุณอาจสังเกตเห็นการเปลี่ยนแปลงในความเร็วที่เซนเซอร์ตอบสนองต่อความเคลื่อนไหว (ในวิดีโอที่ 05:30)

ข้อผิดพลาดทั่วไป ได้แก่ การเดินสายที่ไม่ถูกต้อง เช่น การสลับการเชื่อมต่อของ VCC และ GND ซึ่งอาจทำให้เซนเซอร์เสียหายได้ ตรวจสอบให้แน่ใจว่าพินเอาต์พุตของเซนเซอร์เชื่อมต่อกับพินอินพุตที่กำหนดบน Arduino อย่างถูกต้องเพื่อหลีกเลี่ยงอินพุตลอย

ไทม์สแตมป์ในวิดีโอ

  • 00:00 บทนำ
  • 00:45 ภาพรวมฮาร์ดแวร์
  • 02:30 คำแนะนำการเดินสาย
  • 04:00 คำอธิบายโค้ด
  • 05:30 การสาธิต

ภาพ

HC-SR501 back
HC-SR501 back
HC-SR501 module
HC-SR501 module
Arduino wiring for HC-SR501 Motions sensor
Arduino wiring for HC-SR501 Motions sensor
48-This is the Arduino code for the HC-SR501 motion sensor.
ภาษา: C++
/*
 * This is the Arduino code for HC-SR501 Motion Sensor
 * to detect motion of humans or objects using Arduino for robotic car and other applications
 * Watch the video https://youtu.be/mZCJNOf69JI
 * 
 * Written by Ahmad Shamshiri for Robojax Video
 * Date: Dec 27, 2017, in Ajax, Ontario, Canada
 * Permission granted to share this code given that this
 * note is kept with the code.
 * Disclaimer: this code is "AS IS" and for educational purposes only.
 * 
 */

void setup() {
  Serial.begin(9600);// setup Serial Monitor to display information
  pinMode(2, INPUT);// Input from sensor
  pinMode(8, OUTPUT);// OUTPUT to alarm or LED
}

void loop() {
  int motion =digitalRead(2);
  if(motion){
    Serial.println("Motion detected");
    digitalWrite(8,HIGH);
  }else{
     Serial.println("===nothing moves");
     digitalWrite(8,LOW);
  }
  delay(500);

}

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

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

ไฟล์📁

ไฟล์อื่น ๆ