Last updated on
ต่อใช้งานเซ็นเซอร์วัดการสั่นสะเทือน KY-002 กับ ESP8266
ต่อใช้งานเซ็นเซอร์วัดการสั่นสะเทือน KY-002 กับ ESP8266
บทความนี้จะสอนวิธีต่อใช้งานเซ็นเซอร์ตรวจจับการสั่นสะเทือน KY-002 กับบอร์ด ESP8266 โดยเขียนโค้ดให้อ่านค่าแรงสั่นสะเทือนผ่าน Serial Monitor และสั่งให้ LED ติดเมื่อตรวจพบการสั่นสะเทือน
อุปกรณ์ที่ต้องใช้
- บอร์ด NodeMCU ESP8266 V2
- เซ็นเซอร์ตรวจจับการสั่นสะเทือน KY-002
- LED สีแดงขนาด 5mm
- ตัวต้านทาน 220 Ohm
- บอร์ดทดลอง MB-102 830 Point
- สายไฟจัมเปอร์ ผู้-ผู้, ผู้-เมีย, เมีย-เมีย
- สาย Micro USB สำหรับ Upload โค้ด
วงจรและการต่อสาย
ต่ออุปกรณ์ตามนี้
| ESP8266 | KY-002 |
|---|---|
| Vin (5V) | + |
| GND | - |
| D2 | S |
| ESP8266 | LED |
|---|---|
| D1 | ขายาว (Anode) |
| GND | ตัวต้านทาน 220 Ohm → ขาสั้น (Cathode) |
โค้ด Arduino สำหรับ ESP8266
// กำหนดขาเชื่อมต่อ
const int sensorPin = D2; // ขา Signal ของ KY-002
const int ledPin = D1; // ขาที่ต่อกับ LED
void setup() {
Serial.begin(9600);
pinMode(sensorPin, INPUT);
pinMode(ledPin, OUTPUT);
// ดึงสถานะเริ่มต้นของ Sensor
int sensorState = digitalRead(sensorPin);
Serial.print("Initial sensor state: ");
Serial.println(sensorState == LOW ? "ตรวจพบการสั่นสะเทือน" : "ไม่พบแรงสั่นสะเทือน");
}
void loop() {
int sensorState = digitalRead(sensorPin);
if (sensorState == LOW) {
// ตรวจพบการสั่นสะเทือน
digitalWrite(ledPin, HIGH);
Serial.println("ตรวจพบแรงสั่นสะเทือน");
delay(3000); // LED ติด 3 วินาที
digitalWrite(ledPin, LOW);
} else {
// ไม่มีการสั่นสะเทือน
Serial.println("ไม่พบแรงสั่นสะเทือน");
}
delay(500); // หน่วงเวลาระหว่างการอ่านค่า
}
หมายเหตุ: โค้ดนี้เป็นตัวอย่างพื้นฐาน เหมาะสำหรับทดลองเข้าใจหลักการทำงาน ถ้าต้องการให้ตรวจจับได้แม่นยำขึ้นควรใช้ interrupt หรือ debounce logic
ขั้นตอนการอัปโหลดโค้ด
- เปิดโปรแกรม Arduino IDE
- ตั้งค่า Board เป็น NodeMCU 1.0 (ESP-12E Module) ที่ Tools → Board
- เลือก Port ที่เชื่อมต่อที่ Tools → Port
- กดปุ่ม Upload
- เปิด Serial Monitor แล้วตั้ง Baud Rate เป็น 9600
ทดสอบการทำงาน
เมื่ออัปโหลดโค้ดเสร็จแล้วให้เปิด Serial Monitor ดู
- ถ้ายังไม่มีแรงสั่นสะเทือน จะขึ้นข้อความ “ไม่พบแรงสั่นสะเทือน” ทุก 0.5 วินาที
- ลองเคาะโต๊ะหรือเขย่าบอร์ดเบาๆ จะเห็น LED ติดและข้อความเปลี่ยนเป็น “ตรวจพบแรงสั่นสะเทือน” ค้าง 3 วินาที
- ถ้าเขย่าแรงขึ้น LED ก็จะติดชัดเจนขึ้น
ข้อควรระวัง
- ขา Vin ของ ESP8266 รับไฟได้ 5V แต่ logic level ของ GPIO จะอยู่ที่ 3.3V ดังนั้น KY-002 ที่ใช้ 5V จะส่งสัญญาณ HIGH ออกมาเป็น 5V ซึ่งอาจทำให้ ESP8266 อ่านค่าผิดเพี้ยนได้ แนะนำให้ใช้วงจรแบ่งแรงดันหรือต่อผ่านขา 3.3V แทน
- เซ็นเซอร์ KY-002 เป็น mechanical switch อาจเกิด bounce ได้ ควรเพิ่ม debounce ถ้าต้องการตรวจจับถี่
อยากทำโปรเจคแบบนี้?
รับทำโปรเจค Arduino / IoT จบงานไว ส่งงานครบ พร้อมสอน
หากต้องการ รับทำโปรเจคอาดูโน่ หรือระบบ IoT แบบเร่งด่วน สามารถดูรายละเอียดบริการได้ที่หน้าแรก
จ้างทำโปรเจคเลย