ชื่อโปรเจกต์: Clap Sensing Servo Control
โปรเจกต์นี้เป็นการควบคุม Servo ด้วยเสียง โดยผู้ใช้สามารถสร้างเสียงในช่วงการตรวจจับของ Sensor เพื่อให้ Servo เคลื่อนที่
นี่เป็นโปรเจกต์ที่สนุก ดังนั้น หากใครนำไปใช้สร้างระบบล็อกอัตโนมัติในบ้านของตนเอง ทาง JB electronics จะไม่รับผิดชอบใดๆ ทั้งสิ้น เนื่องจากได้แจ้งเตือนไว้แล้วว่านี่เป็นการเพิ่มช่องทางที่ง่ายอีกช่องทางหนึ่งสำหรับผู้บุกรุกในการเข้าบ้าน
การทำงานของโปรเจกต์นี้ง่ายมาก เมื่อใดก็ตามที่ Sensor ได้ยินเสียงใดๆ ภายใต้ช่วงการตรวจจับของมัน มันจะทำให้ Servo หมุนประมาณ 180 องศา ซึ่งจะเปิด LED เพื่อให้ผู้ใช้ทราบทิศทางของ Servo เมื่อมีเสียงคล้ายกันเกิดขึ้นอีกครั้ง มันจะนำ Servo กลับสู่ตำแหน่งเดิม โดยปิด LED
สำหรับสิ่งนี้ คุณจะต้องมี:
1) บอร์ด Arduino UNO
2) โมดูลตรวจจับเสียง
3) Servo
4) LED
5) Breadboard
6) ตัวต้านทาน 1k ohm
7) สาย Jumper
นี่คือโค้ด:
#include <Servo.h>
Servo myservo;
int pos = 0;
int soundSensor=2;
int LED=4;
boolean LEDStatus=false;
void setup() {
myservo.attach(9);
pinMode(soundSensor, INPUT);
pinMode(LED, OUTPUT);
}
void loop() {
int SensorData=digitalRead(soundSensor);
if(SensorData==1){
if(LEDStatus==false){
LEDStatus=true;
digitalWrite(LED, HIGH);
for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
// in steps of 1 degree
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
}
else{
LEDStatus=false;
digitalWrite(LED, LOW);
for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
}
}
}

รายละเอียดทางเทคนิคเพิ่มเติม
ระบบอัตโนมัติด้วยแรงกระตุ้นเสียง
โปรเจกต์นี้สาธิตวิธีการควบคุมการเคลื่อนไหวทางกลไก โดยใช้การตรวจจับเหตุการณ์เสียงความเร็วสูง
- **การทำแผนที่ Acoustic Envelope**: Arduino จะจับสัญญาณอนาล็อกจากโมดูลไมโครโฟนที่มี Gain สูง เฟิร์มแวร์จะมองหาสัญญาณ "Peak and Decay" ที่เฉพาะเจาะจง ซึ่งตรงกับการตบมือของมนุษย์ โดยไม่สนใจเสียงรบกวนพื้นหลังคงที่ - **ลอจิกการสลับสถานะ Servo**: เมื่อมีการ "ตบมือ" สำเร็จแต่ละครั้ง Arduino จะสลับตำแหน่งของ **servo motor** (เช่น 0° เป็น 90°) ซึ่งสามารถนำไปใช้ในการเปิดผ้าม่าน เปิดสวิตช์ หรือป้อนอาหารสัตว์เลี้ยงได้โดยไม่ต้องสัมผัสทางกายภาพประสิทธิภาพ
- ช่วงเวลาความไวแบบมีเวลาจำกัด: มี "ช่วงเวลาเงียบ" 500ms หลังจากตรวจจับเสียงตบมือแต่ละครั้ง เพื่อป้องกันการทริกเกอร์ซ้ำที่เกิดจากเสียงสะท้อนหรือเสียงจากการเคลื่อนไหวทางกลไกของ Servo เอง