ต่อวงจร ESP32 กับเซ็นเซอร์สั่นสะเทือน KY-002 อ่านค่าการสั่นสะเทือน
ต่อวงจร ESP32 กับเซ็นเซอร์สั่นสะเทือน KY-002 อ่านค่าการสั่นสะเทือน
เซ็นเซอร์ KY-002 เป็นโมดูลตรวจจับการสั่นสะเทือนแบบดิจิตอล ทำงานง่าย ราคาถูก เหมาะสำหรับเรียนรู้พื้นฐานการตรวจจับแรงสั่นสะเทือน หรือเอาไปประยุกต์ใช้ในโปรเจกต์ที่ต้องการรู้ว่ามีการเคลื่อนไหวหรือสั่นเกิดขึ้นหรือไม่
อุปกรณ์ที่ต้องใช้
- บอร์ด ESP32 (หรือ ESP8266)
- เซ็นเซอร์สั่นสะเทือน KY-002
- LED สีแดงขนาด 5mm
- ตัวต้านทาน 220 โอห์ม
- บอร์ดทดลอง (Breadboard)
- สายจัมเปอร์ ผู้-ผู้ ผู้-เมีย เมีย-เมีย
- สาย Micro USB สำหรับupload
วงจรและการต่อสาย
การต่อวงจรเริ่มจากเซ็นเซอร์ KY-002 ก่อน โมดูลนี้มี 3 ขา คือ
| ขา KY-002 | ขา ESP32 | หมายเหตุ |
|---|---|---|
| + (VCC) | VIN (5V) | ขาไฟเลี้ยง |
| - (GND) | GND | ขากราวด์ |
| S (Signal) | D22 | ขาสัญญาณเอาต์พุตดิจิตอล |
![วงจรการต่อ ESP32 กับ KY-002 และ LED บนบอร์ดทดลอง]
ต่อ LED ตามนี้
| ขา LED | ขา ESP32 | หมายเหตุ |
|---|---|---|
| ขายาว (Anode) | D23 | ผ่าน R 220Ω |
| ขาสั้น (Cathode) | GND | ต่อร่วม GND |
![ภาพวงจร LED พร้อมตัวต้านทาน 220 โอห์ม แสดงขายาว-ขาสั้น]
โค้ด Arduino สำหรับอ่านค่าเซ็นเซอร์สั่นสะเทือน
// กำหนดขาที่ใช้งาน
const int SENSOR_PIN = 22; // ขาสัญญาณจาก KY-002
const int LED_PIN = 23; // ขาควบคุม LED
// ตัวแปรเก็บสถานะ
int vibrationState = 0; // เก็บสถานะการตรวจจับ (0 = ปกติ, 1 = ตรวจพบ)
void setup() {
Serial.begin(9600); // เริ่ม Serial Monitor ที่ 9600 baud
// ตั้งค่าขา
pinMode(SENSOR_PIN, INPUT);
pinMode(LED_PIN, OUTPUT);
Serial.println("พร้อมรอตรวจจับการสั่นสะเทือน");
}
void loop() {
// อ่านค่าจากเซ็นเซอร์ (HIGH = ตรวจพบ, LOW = ไม่มีแรงสั่น)
vibrationState = digitalRead(SENSOR_PIN);
if (vibrationState == HIGH) {
// ถ้าตรวจพบการสั่น ให้ LED ติด 3 วินาที
digitalWrite(LED_PIN, HIGH);
Serial.println("ตรวจพบแรงสั่นสะเทือน");
delay(3000); // หน่วงเวลา 3 วินาที
digitalWrite(LED_PIN, LOW);
} else {
// ไม่มีการสั่น
Serial.println("ไม่พบแรงสั่นสะเทือน");
digitalWrite(LED_PIN, LOW);
}
delay(100); // หน่วงเวลาสั้นๆ ระหว่างรอบลูป
}
จุดที่ต้องปรับตามบอร์ดที่ใช้
- ESP8266 (NodeMCU): เปลี่ยน
SENSOR_PINเป็นD3หรือD4และLED_PINเป็นD7หรือD8 - Arduino Uno/Nano: ใช้ขาอะนาล็อก A0-A5 สำหรับ Signal และขาดิจิตอล 2-13 สำหรับ LED
ขั้นตอนการอัพโหลดและทดสอบ
- เปิด Arduino IDE ขึ้นมา คัดลอกโค้ดด้านบนไปวาง
- เลือกบอร์ดที่ใช้งาน ที่ Tools → Board → เลือกบอร์ดของคุณ
- เลือก Port ที่เชื่อมต่อ ที่ Tools → Port
- กด Upload เพื่ออัพโหลดโค้ดลงบอร์ด
- เมื่อเสร็จแล้ว เปิด Serial Monitor ขึ้นมา
- ตั้งค่า baud rate เป็น 9600
- พิมพ์ค่าที่แสดงจะเป็น “ไม่พบแรงสั่นสะเทือน” ถ้ายังไม่มีแรงสั่น
![ภาพหน้าจอ Serial Monitor แสดงผลลัพธ์การทำงาน]
ทดสอบการตรวจจับ
วิธีทดสอบง่ายๆ คือใช้มือเคาะโต๊ะเบาๆ หรือเคาะบนบอร์ดทดลอง ถ้าเซ็นเซอร์ตรวจจับได้
- LED จะติด 3 วินาที
- Serial Monitor จะแสดง “ตรวจพบแรงสั่นสะเทือน”
ถ้าไม่ตอบสนอง แสดงว่าแรงสั่นไม่ถึงเกณฑ์ ลองเคาะแรงขึ้นหรือเคาะโดยตรงบนเซ็นเซอร์
หลักการทำงานของ KY-002
โมดูล KY-002 ใช้สวิตช์แบบลูกสูบ (ball switch) ข้างในมีลูกโลหะเล็กๆ ไส้อยู่ เมื่อมีแรงสั่นมากพอ ลูกโลหะจะกระทบผนังและปิดวงจรไฟฟ้า ทำให้เอาต์พุตเปลี่ยนจาก LOW เป็น HIGH
ข้อจำกัดที่ต้องรู้คือ
- ให้ค่าแค่ HIGH/LOW ไม่สามารถวัดระดับความแรงได้
- ต้องใช้แรงสั่นเกินเกณฑ์ถึงจะทริกเกอร์ได้
- ความไวขึ้นอยู่กับมุมติดตั้งและทิศทางการสั่น
ตัวอย่างการประยุกต์ใช้จริง
| โปรเจกต์ | วิธีต่อยอด |
|---|---|
| ตรวจจับการเปิดประตู | ติดเซ็นเซอร์ที่ประตู ถ้ามีการสั่นสะเทือนแสดงว่ามีคนมาเปิด |
| ตรวจจับการเคลื่อนไหว | ติดบนอุปกรณ์ที่ต้องการเตือนถ้าถูกย้าย |
| วัดความเร็วพัดลม | ใช้หลายตัววัดจังหวะการหมุน |
สรุป
KY-002 เป็นเซ็นเซอร์ที่เข้าใจง่าย ใช้งานไม่ซับซ้อน เหมาะสำหรับผู้ที่เริ่มศึกษาเรื่องการตรวจจับการสั่นสะเทือน ข้อสำคัญคือต้องเข้าใจว่าเซ็นเซอร์ตัวนี้ให้เอาต์พุตแบบดิจิตอล ไม่ใช่อะนาล็อก ถ้าต้องการวัดค่าความแรงของการสั่นต้องเลือกโมดูลแบบอื่นแทน
อยากทำโปรเจคแบบนี้?
รับทำโปรเจค Arduino / IoT จบงานไว ส่งงานครบ พร้อมสอน
หากต้องการ รับทำโปรเจคอาดูโน่ หรือระบบ IoT แบบเร่งด่วน สามารถดูรายละเอียดบริการได้ที่หน้าแรก
จ้างทำโปรเจคเลย