มินิโปรเจ้คการเปิด-ปิดไฟ AC220Vด้วยเสียง
อุปกรณ์ที่ใช้
1. Arduino UNO R3 - Made in italy
2. Sensor Shield V 5.0
3. สาย Jumper Female to Male ยาว 20cm.
4. สาย Jumper Female to Female ยาว 20cm.
5. Relay 1 Channel 5V DC Solid State High Level Trigger
6. Voice Sound Detection Sensor Module
รูปผลงาน
1.
2.
3.
บล็อกไดอะแกรม
การต่อวงจร ระหว่าง Sensor Shield กับ เซ็นเซอร์เสียง
Shield <-> เซ็นเซอร์เสียง
G <-> GND
V <-> VCC
S(4) <-> OUT
การต่อวงจร ระหว่าง Sensor Shield กับ รีเลย์
Shield <-> รีเลย์
G <-> DC-
V <-> DC+
S(5) <-> CH1
การต่อวงจร ระหว่าง หลอดไฟ กับ รีเลย์
การอธิบายหลักการทำงานของโค้ด
ตัวแปรมีอยู่6ตัว มีอยู่3ชนิด // ชนิดที่1.int ชนิดที่2.long ชนิดที่3.boolean
ตัวแปร6ตัวได้แก่
1.sound_sensor 2. relay
3.clap
4. detection_range_start
5. detection_range
6.status_lights
int sound_sensor = 4; // กำหนดให้ sound sensorให้เป้น ขา 4.
int relay = 5; // กำหนดให้ relay ให้เป้น ขา 5
int clap = 0; // กำหนดให้ clap มีค่าเป็น 0
long detection_range_start = 0; // กำหนดให้ detection_range_start มีค่าเป็น 0
long detection_range = 0; // กำหนดให้ detection_range มีค่าเป็น 0
boolean status_lights = false; // boolean status_lights มี ค่าเป็น false หรือเท่ากับ 0
void setup() { // ฟังชั่นนี้คือการเซ็ตค่าเริ่มต้นเมื่อ Aduino เริ่มการทำงาน
pinMode(sound_sensor, INPUT); // คือการกำหนด sound_sensor ให้เป็น อินพุต
pinMode(relay, OUTPUT); // คือการกำหนด relay ให้เป็น เอาพุต
}
void loop() { // ฟังชั่นนี้คือการทำงานวน ซ้ำๆ
int status_sensor = digitalRead(sound_sensor);
if (status_sensor == 0) // คือการอ่านค่าจากซาวเซ็นเซอร์แล้วเอามาเก็บไว้ที่สเตตัส จากนั้นส่งมาที่ ฟังชั่นอีฟเพื่อตรวจสอบสถานะของข้อมูลว่าเป็นจริงหรือไม่
{
if (clap == 0) // ถ้าตรวจสอบเจอจะทำงานในตีกาเปิดในช่องนี้แต่ถ้าไม่จะกระโดดข้ามไปทำอีกช่องนึง
{
detection_range_start = detection_range = millis(); // ค่าของ detection_range เท่ากับ detection_range เท่ากับ millis()
clap++; // clap เพิ่มขึ้น 1
}
else if (clap > 0 && millis()-detection_range >= 50) // ถ้าค่าของ clap มีค่ามากกว่า 0 เเละเปรียบเทียบ millis()-detection_range มากกว่าหรือเท่ากับ 50
{
}etection_range = millis();// เก็บค่าเวลา ใน millis() เก็บไว้ในตัวแปร detection_range
clap++; // clap เพิ่มขึ้น1
}
if (millis()-detection_range_start >= 400) // ถ้าค่าของ millis() ลบด้วยค่าของ detection_range_start มากกว่าหรือเท่ากับ400ให้ทำงานปีกกาล่าง
{
if (clap == 2) //ลงมาทำงานที่บรรทัดนี้
{
if (!status_lights) // ถ้า ผลลัพท์status_lights เป็นเท็จ ให้ทำในปีกกาล่าง
{
status_lights = true; // ให้ค่า status_lights มีค่าเท่า true หรือ1
digitalWrite(relay, HIGH); // ส่งค่า ไปยังขาดิจิตอลให้ relay มีค่าเป็น high หรือ1
}
else if (status_lights) // ถ้าไม่ตรงตามเงื่อนไข
{
status_lights = false; // ให้ค่า status_lights มีค่าเป็น false หรือ 0
digitalWrite(relay, LOW); // ส่งค่า ไปยังขาดิจิตอลให้ relay มีค่าเป็น low หรือ0
}
}
clap = 0; // ค่าของ clap มีค่าเท่ากับ 0
}
}
ผลการทดลอง
วิธีควบคุม Arduino ด้วย เซ็นเซอร์เสียง Voice Sound Detection Sensor Module เราจะควบคุม การ เปิด ปิดไฟ AC 220V ด้วยเสียงตบมือ โดยเราจะใช้เซ็นเซอร์ตรวจจับเสียง + รีเลย์ และแสดงผลด้วยไฟ หลอดไฟบ้าน
ลิ้งดูวีดีโอผลการทดลองมินิโปรเจ้คเปิด-ปิดไฟ220Vด้วยเสียง