บทความนี้ กล่าวถึงขั้นตอนการทำโปรเจค เปิดปิดไฟด้วยเสียงปรบมือ โดยใช้ ไมโครคอนโทรลเลอร์ STM32 รุ่น STM32F407VET6 โดยประโยชน์ของโปรเจคนี้คือ การเปิดปิดไฟแบบไม่สัมผัส เพื่อลดการติดต่อของเชื้อโรค เช่น เชื้อโควิด 19 ผ่านการสัมผัสสวิทซ์จุดเดียวกัน จากผู้ใช้หลายๆคนใช้ร่วมกัน
การทำงานเริ่มจากการรับสัญญาณเสียงเช่น เสียงปรบมือ หรือเสียงอื่นๆที่มีความดังใกล้เคียงกัน ผ่านทางเซ็นเซอร์เสียง (Voice Sound Detection Sensor) แล้วประมวลผลด้วย STM32 ส่งค่าการเปิดปิด (LOW / HIGH) ไปยังรีเลย์ ใช้การแสดงผลด้วย LED 2 ตัว โดย เสียงปรบมือ 2 ครั้ง ให้ LED ตัวที่ 1 ติดหรือดับ และ เสียงปรบมือ 3 ครั้ง ให้ LED ตัวที่ 2 ติดหรือดับ เช่นเดียวกัน
ขั้นตอนการทํางาน
1 : ทดสอบการใช้งาน STM32 รุ่น STM32F407VET6
ทดสอบการใช้งานเบื้องต้นของบอร์ด STM32 รุ่น STM32F407VET6 ตามลิงค์ด้านล่าง
2 : อัพโหลดโค้ดโปรเจค STM32 เปิดปิดไฟด้วยเสียง
เขียนโค้ดและอัพโหลดโค้ดด้านล่างนี้ ไปที่ STM32
int sound_sensor_1 = PC0;
int relay_1 = PA6;
int relay_2 = PA7;
int clap = 0;
long detection_range_start = 0;
long detection_range = 0;
boolean status_lights_1 = false;
boolean status_lights_2 = false;
void setup() {
pinMode(sound_sensor_1, INPUT);
pinMode(relay_1, OUTPUT);
pinMode(relay_2, OUTPUT);
}
void loop() {
int status_sensor = digitalRead(sound_sensor_1);
if (status_sensor == 0)
{
if (clap == 0)
{
detection_range_start = detection_range = millis();
clap++;
}
else if (clap > 0 && millis() - detection_range >= 40)
{
detection_range = millis();
clap++;
}
}
if (millis() - detection_range_start >= 600)
{
if (!status_lights_1 && clap == 2)
{
digitalWrite(relay_1, HIGH);
status_lights_1 = true;
}
else if (status_lights_1 && clap == 2)
{
digitalWrite(relay_1, LOW);
status_lights_1 = false;
}
else if (!status_lights_2 && clap == 3)
{
digitalWrite(relay_2, HIGH);
status_lights_2 = true;
}
else if (status_lights_2 && clap == 3)
{
digitalWrite(relay_2, LOW);
status_lights_2 = false;
}
clap = 0;
}
}
3 : เชื่อมต่อและทดสอบ เซ็นเซอร์เสียง (Voice Sound Detection Sensor)
เชื่อมต่อสายระหว่าง เซ็นเซอร์เสียง กับ STM32 ตามรูปด้านล่าง
*** ขั้นตอนสำคัญ ***
ให้เอาไขควงหมุน ค่อยๆปรับค่าการรับสัญญาณเสียง โดยให้หมุนตัว R ปรับค่าได้ แบบ trimpot สีฟ้า
ให้ไฟ LED สีเขียว ด้านซ้ายมือติดดวงเดียว เมื่อปรบมือให้ LED สีเขียวด้านขวามือ กระพริบ ตาม การปรบมือของเรา
สังเกตที่ STM32F407VET6 ตำแหน่ง D2 ติด/ดับ เมื่อปรบมือ 2 ครั้ง และ ตำแหน่ง D3 ติด/ดับ เมื่อปรบมือ 3 ครั้ง
4 : เชื่อมต่อ แหล่งจ่ายไฟ ให้กับ STM32
เพื่อให้ STM32 ทำงานได้โดยไม่ต้อง ต่อสายใช้แหล่งจ่ายไฟ จากคอมพิวเตอร์ แต่เนืองจาก STM32 ต้องการแหล่งจ่ายไฟ 5V ดังนั้นต้องลดแรงดันไฟ 12V จากรางถ่านให้เหลือ 5V ด้วยการเชื่อมต่อสายจากรางถ่าน ไปยัง DC 5V Step-down และ DC 5V Step-down ไปยัง STM32 ด้วยสาย USB ตามรูปด้านล่าง
ทดสอบการทำงานด้วยการปรบมือ โดย ตำแหน่ง D2 ติด/ดับ เมื่อปรบมือ 1 ครั้ง และ ตำแหน่ง D3 ติด/ดับ เมื่อปรบมือ 2 ครั้ง แสดงว่าโปรเจคเราพร้อมที่จะทำงานในขั้นตอนต่อไปแล้ว
5 : เชื่อมต่อและทดสอบ Relay 2 Channel
เชื่อมต่อและทดสอบ รีเลย์ 2 ช่อง กับ STM32 เพื่อควบคุมการเปิด/ปิด ไฟ LED 12 โวลต์ หรืออุปกรณ์ไฟฟ้าอื่นๆ ตามรูปด้านล่าง
ทดสอบการทำงาน เมื่อปรบมือ 2 ครั้ง และ ตำแหน่ง LED สีแดง ด้านบน ติด/ดับ
ทดสอบการทำงาน เมื่อปรบมือ 3 ครั้ง และ ตำแหน่ง LED สีแดงด้านล่าง ติด/ดับ
6 : เชื่อมต่อหลอดไฟ LED 12 โวลต์ กับ Relay 2 Channel
ทดสอบผลลัพธ์การทำงาน ได้ตามคลิปวิดีโอด้านบนสุด แสดงว่าโปรเจค STM32 เปิดปิดไฟด้วยเสียง สำเร็จแล้ว
7 : อุปกรณ์ที่ใช้
- 1. STM32F407VET6 Development Board Cortex-M4 ARM STM32
- 2. ST-Link V2 STM32 Simulator Programmer
- 3. Jumper (F2F) 20cm Female to Female
- 4. Jumper (M2M) 20cm Male to Male
- 5. Voice Sound Detection Sensor Module
- 6. รางถ่าน AA 8 ก้อน 12 โวลต์
- 7. DC 5V Step-down Power Supply Module
- 8. Relay 2 Channel 5V DC Low Level Trigger
- 9. Mini Breadboard 170 holes
- 10. SMD LED Lighting G4 DC 12V 6W *** จำนวน 2 หลอด ***