รหัส 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 |
| แรงดันไฟฟ้าลอจิก/IO | 3.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 ตามความจำเป็น
คำแนะนำการเดินสาย

ในการเดินสายเซนเซอร์ตรวจจับความเคลื่อนไหว 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 การสาธิต
/*
* 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);
}
แหล่งข้อมูลและเอกสารอ้างอิง
ยังไม่มีทรัพยากรเลย
ไฟล์📁
ไฟล์อื่น ๆ
-
คู่มือเซ็นเซอร์ตรวจจับการเคลื่อนไหว HC-SR501 LHI778
robojax-HC-SR501-motion-LHI778-manual.pdf0.20 MB