วิธีใช้งาน Arduino กับเซ็นเซอร์ตรวจจับความเคลื่อนไหว HB100 แบบคลื่นไมโครเวฟ
วิธีใช้งาน Arduino กับเซ็นเซอร์ตรวจจับความเคลื่อนไหว HB100 แบบคลื่นไมโครเวฟ
บทความนี้จะพาทดลองต่อวงจรและเขียนโค้ด Arduino เพื่ออ่านค่าจากเซ็นเซอร์ตรวจจับความเคลื่อนไหว HB100 ซึ่งทำงานด้วยหลักการ Doppler Radar ความถี่ 10.525 GHz

HB100 Microwave Sensor คืออะไร
HB100 เป็นเซ็นเซอร์ตรวจจับความเคลื่อนไหวแบบไมโครเวฟ (Microwave Motion Sensor) ที่ใช้หลักการ Doppler Effect ส่งคลื่นความถี่สูงออกไปแล้ววัดการเปลี่ยนแปลงความถี่สะท้อนกลับเมื่อมีวัตถุเคลื่อนที่
ข้อดีหลักของ HB100 เทียบกับ PIR Sensor:
- ไม่ถูกรบกวนจากสภาพแวดล้อม แสงแดด หรืออุณหภูมิ
- ตรวจจับได้รอบทิศทาง 360 องศา
- เหมาะกับงานอุตสาหกรรมและกลางแจ้ง
อุปกรณ์ที่ต้องใช้
| อุปกรณ์ | จำนวน |
|---|---|
| Arduino UNO R3 | 1 ชิ้น |
| HB100 Microwave Doppler Sensor Module | 1 ชิ้น |
| LED 5mm สีแดง | 1 ชิ้น |
| ตัวต้านทาน 220 Ohm | 1 ชิ้น |
| บอร์ดทดลอง Breadboard MB-102 | 1 ชิ้น |
| สายจัมเปอร์ ผู้-ผู้ 20cm | 5 เส้น |
| Power Adapter 9V 2A (ถ้าต้องการจ่ายไฟแยก) | 1 ชิ้น |
วิธีต่อวงจร HB100 กับ Arduino
ขา HB100 Module
เซ็นเซอร์ HB100 มีขาต่อใช้งาน 4 ขา:
- VCC - ขาจ่ายไฟ 5V
- GND - ขากราวด์
- OUT - ขาส่งสัญญาณเมื่อตรวจจับเคลื่อนไหว
- 3.3V - ขาอ้างอิงไฟ 3.3V (สำหรับบางรุ่น)
การต่อสาย

ต่อวงจรตามนี้:
- LED ต่อขา anode (ขายาว) เข้าขา 13 ผ่าน R 220 Ohm และขา cathode (ขาสั้น) เข้า GND
- HB100 VCC ต่อเข้า 5V ของ Arduino
- HB100 GND ต่อเข้า GND ของ Arduino
- HB100 OUT ต่อเข้าขา Digital Pin 2 ของ Arduino

ติดตั้ง Library MsTimer2
ต้องติดตั้ง Library MsTimer2 ก่อนเขียนโค้ด:
- ดาวน์โหลด Library จาก GitHub หรือ MediaFire
- เปิด Arduino IDE
- ไปที่ Sketch > Include Library > Add .ZIP Library
- เลือกไฟล์ MsTimer2-master.zip
- รอจน IDE แจ้งว่าติดตั้งเสร็จ
โค้ด Arduino อ่านค่า HB100
#include <MsTimer2.h>
// กำหนดขาที่ต่อกับ HB100
#define HB100_OUT 2
// ตัวแปรเก็บจำนวนครั้งที่ตรวจจับเคลื่อนไหว
volatile int motionCount = 0;
// ฟังก์ชัน Interrupt สำหรับนับจำนวนครั้งที่มีเคลื่อนไหว
void motionDetected() {
motionCount++;
}
void setup() {
Serial.begin(9600);
// ตั้งค่าขา Interrupt (Pin 2 = INT0)
pinMode(HB100_OUT, INPUT);
// ตั้งค่า Timer Interrupt ทุก 1 วินาที
// ปรับค่าให้เหมาะสมกับการใช้งาน
MsTimer2::set(1000, printMotionCount);
MsTimer2::start();
// เมื่อมีสัญญาณขึ้นลงที่ขา OUT ให้เรียกฟังก์ชัน motionDetected
attachInterrupt(digitalPinToInterrupt(HB100_OUT), motionDetected, CHANGE);
Serial.println("Arduino HB100 Microwave Sensor Ready");
Serial.println("ค่าที่แสดง = จำนวนครั้งที่ตรวจจับได้ใน 1 วินาที");
}
void loop() {
// ไม่ต้องทำอะไรใน loop เพราะใช้ Interrupt
}
// ฟังก์ชันแสดงผลทุก 1 วินาที
void printMotionCount() {
Serial.println(motionCount);
motionCount = 0; // รีเซ็ตค่าหลังแสดงผล
}
หมายเหตุ: ค่า Timer (1000ms) สามารถปรับได้ตามความต้องการ ถ้าต้องการอ่านเร็วขึ้นก็ลดค่าลง แต่ต้องระวังเรื่อง debounce
ขั้นตอนอัพโหลดโค้ดและทดสอบ
- เปิด Arduino IDE แล้ว copy โค้ดด้านบนไปวาง
- เลือกบอร์ด Tools > Board > Arduino Uno
- เลือก Port Tools > Port > COMx (ดูที่ Device Manager ถ้าไม่แน่ใจ)
- กดปุ่ม Upload (ลูกศรขวา)
- รอจนขึ้น “Done uploading”
- เปิด Serial Monitor ที่ Tools > Serial Monitor หรือกด Ctrl+Shift+M
- ตั้งค่า Baud Rate เป็น 9600
ผลลัพธ์ที่คาดหวัง
เมื่อเปิด Serial Monitor จะเห็น:
- ค่าเริ่มต้นเป็น 0 เมื่อไม่มีการเคลื่อนไหว
- ค่าเปลี่ยนไปตามจำนวนครั้งที่ตรวจจับเคลื่อนไหวได้
- LED บนขา 13 จะกระพริบตามการตรวจจับ (ถ้าเพิ่มโค้ด)
วิดีโออ้างอิง
ปัญหาที่พบบ่อยและวิธีแก้
| ปัญหา | สาเหตุ | วิธีแก้ |
|---|---|---|
| ค่าเป็น 0 ตลอด | ต่อสายผิดขา | ตรวจสอบการต่อ VCC, GND, OUT |
| ค่าอ่านได้แต่ไม่แม่นยำ | ระยะห่างจากเซ็นเซอร์ | ปรับระยะให้เหมาะสม |
| ค่ากระโดดไม่หยุด | สัญญาณรบกวน | เพิ่ม Capacitor กรองสัญญาณ |
สรุป
การใช้งาน HB100 กับ Arduino ต้องอาศัย Library MsTimer2 สำหรับ Interrupt เพื่อนับจำนวนครั้งที่ตรวจจับเคลื่อนไหวได้ ความไวขึ้นอยู่กับการตั้งค่า Timer และระยะห่างจากเซ็นเซอร์ เหมาะกับงานที่ต้องการตรวจจับการเคลื่อนไหวในสภาพแวดล้อมที่ PIR ไม่เสถียร
อยากทำโปรเจคแบบนี้?
รับทำโปรเจค Arduino / IoT จบงานไว ส่งงานครบ พร้อมสอน
หากต้องการ รับทำโปรเจคอาดูโน่ หรือระบบ IoT แบบเร่งด่วน สามารถดูรายละเอียดบริการได้ที่หน้าแรก
จ้างทำโปรเจคเลย