เป้าหมายและหลักการทำงานของโปรเจค
ต้องการควบคุม เปิดปิดไฟด้วยเสียง รวมทั้งหรี่ไฟด้วยเสียง เพื่อเป็นการประหยัดพลังงาน และความสะดวกในการควบคุม ซึ่งจะทำให้หลอดไฟกินไฟน้อยลง นอกจากนั้นยังช่วยทำให้ยืดอายุหลอดไฟได้ยาวนานขึ้น เพราะไม่ต้องทำงานเต็มกำลังความสว่าง 100% ตลอดเวลา โดยสามารถเลือกความสว่างและเลิกใช้งานได้ตามความเหมาะสม ด้วยเสียง ดังนี้
1. เสียงปรบมือ 1 ครั้ง ให้หลอดไฟติด 100 % แต่ถ้าหลอดไฟติดอยู่ให้ดับ
2. เสียงปรบมือ 2 ครั้ง ให้หรี่ไฟหรือความสว่างลดลงเหลือ 60 %
3. เสียงปรบมือ 3 ครั้ง ให้หรี่ไฟหรือความสว่างลดลงลงเหลือ 30 %
อุปกรณ์ที่ใช้ในโปรเจค
2. Sensor Shield V 5.0
3. Voice Sound Detection Sensor Module
4. Jumper (F2F) 20cm Female to Female
5. 1 Channel AC Light Lamp Dimmer Module
อุปกรณ์ไฟฟ้าอื่นๆ เช่น หลอดไฟ , ปลั๊กไฟ , ขั้วหลอดไฟ , สายไฟ หาซื้อได้ตามร้านขายอุปกรณ์ไฟฟ้าทั่วๆไป
*** การใช้งานแบบไม่ต้องการเชื่อมต่อสาย USB กับ คอมพิวเตอร์ ให้ใช้ Adapter DC 9V 1A Power Supply เป็นแหล่งจ่ายไฟ เสียบเข้ากับ DC Power Jack ของ บอร์ด Arduino ***
(เพื่อความปลอดภัย : ผู้ทำโปรเจค ควรมี ความรู้ด้านไฟฟ้าเป็นอย่างดี)
ขั้นตอนการทำโปรเจค
1. ทดสอบการทำงาน Dimmer Module
เชื่อมต่อ Sensor Shield กับ Dimmer Module
เชื่อมต่อ Dimmer Module กับ อุปกรณ์ไฟฟ้าอื่นๆ
( หลอดไฟควรมีคุณสมบัติหรีไฟได้ เช่น หลอดไส้ร้อนแบบธรรมดา 60 - 100 วัตต์ )
https://github.com/RobotDynOfficial/RBDDimmer
ไปที่ Clone or download -> Download ZIP
เปิดโปรแกรม Arduino IDE
ไปที่ Skecth -> Include Library -> Add .ZIP Library...
ไปที่ ไลบรารี RBDDimmer-master.zip ที่เรา ดาวน์โหลด มา -> Open
เชื่อมต่อสาย USB ระหว่าง คอมพิวเตอร์ กับ บอร์ด Arduino
เปิดโปรแกรม Arduino IDE เขียนโค้ดดังนี้
#include <RBDdimmer.h>
dimmerLamp dimmer4(4); //initialase port for dimmer: name(PinNumber);
void setup() {
Serial.begin(9600);
dimmer4.begin(NORMAL_MODE, ON); //dimmer initialisation: name.begin(MODE, STATE)
Serial.println("--- Simple dimmer example ---");
dimmer4.setState(ON); // setState(ON/OFF);
}
void loop() {
// put your main code here, to run repeatedly:
dimmer4.setPower(90); // setPower(0-100%);
delay(5000);
dimmer4.setPower(60); // setPower(0-100%);
delay(5000);
}
ไปที่ Tools > Board เลือกเป็น Arduino/Genuino UNO
ไปที่ Tools > Port แล้วเลือกพอร์ตที่ปรากฏ (กรณีใช้เครื่องคอมพิวเตอร์ที่มี COM Port มากกว่าหนึ่ง ให้เลือกตัวอื่นที่ไม่ใช่ COM1)
ในตัวอย่างเลือกเป็น "COM8"
(ถ้ายังว่าง หรือ เป็น COM1 ให้ตรวจสอบการติดตั้งไดร์เวอร์ การต่อสาย USB ของ Arduino UNO)
(ถ้าไม่พบให้ทำการติดตั้งไดร์เวอร์ก่อน)
การติดตั้งโปรแกรม Arduino (IDE) และ การติดตั้งไดร์เวอร์
กดปุ่ม เพื่ออัพโหลด
หากสามารถอัพโหลดโปรแกรมลงบอร์ดได้สำเร็จ จะแสดงคำว่า Done uploading. ที่แถบด้านล่าง
เสียบปลั๊กไฟ 220V AC หลอดไฟจะสว่าง 90%
และ 30% สลับไปมา
แสดงว่า การเชื่อมต่อ Dimmer Module ของเรานั้นถูกต้อง และ พร้อมใช้งานแล้ว
2. ทดสอบเซ็นเซอร์เสียง Sound Detection Sensor
เชื่อมต่อ Sensor Shield กับ Sound Detection Sensor
เปิดโปรแกรม Arduino IDE อัพโหลดโค้ดดังนี้
เปิดโปรแกรม Arduino IDE อัพโหลดโค้ดดังนี้
int sound_sensor = 5; int clap = 0; long detection_range_start = 0; long detection_range = 0; void setup() { Serial.begin(9600); pinMode(sound_sensor, INPUT); } void loop() { int status_sensor = digitalRead(sound_sensor); 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++; } }
ทดสอบการทำงาน
ให้เอาไขควงหมุน ปรับค่าการรับสัญญาณเสียง โดยให้หมุนตัว R ปรับค่าได้ แบบ trimpot สีฟ้า
ให้ไฟ LED สีเขียว ด้านซ้ายมือติดดวงเดียว
เมื่อปรบมือให้ LED สีเขียวด้านขวามือ กระพริบ ตาม การปรบมือของเรา
เปิดหน้าต่าง Serial Monitor โดยไปที่ Tools > Serial Monitor
มุมขวาล่าง ของ Serial Monitor เลือกเป็น 9600 baud คือ ตั้งค่าความเร็วในการรับ-ส่งข้อมูล คือ 9600 ตามที่เราเขียนโค้ดไว้
ทดสอบให้ได้ผลลัพธ์ดังนี้
1. เสียงปรบมือ 1 ครั้ง ให้ Serial Monitor แสดง clap = 1
2. เสียงปรบมือ 2 ครั้ง ให้ Serial Monitor แสดง clap = 2
3. เสียงปรบมือ 3 ครั้ง ให้ Serial Monitor แสดง clap = 3
ทดสอบให้ได้ผลลัพธ์ดังนี้
1. เสียงปรบมือ 1 ครั้ง ให้ Serial Monitor แสดง clap = 1
2. เสียงปรบมือ 2 ครั้ง ให้ Serial Monitor แสดง clap = 2
3. เสียงปรบมือ 3 ครั้ง ให้ Serial Monitor แสดง clap = 3
3. ทดสอบ โปรเจค เปิดปิดไฟ 220V และ หรี่ไฟบ้านด้วยเสียง
เปิดโปรแกรม Arduino IDE อัพโหลดโค้ดดังนี้
#include <RBDdimmer.h> dimmerLamp dimmer4(4); int sound_sensor = 5; int clap = 0; long detection_range_start = 0; long detection_range = 0; boolean status_lights = false; void setup() { Serial.begin(9600); pinMode(sound_sensor, INPUT); dimmer4.begin(NORMAL_MODE, ON); dimmer4.setState(OFF); } void loop() { int status_sensor = digitalRead(sound_sensor); 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 && clap == 1) { Serial.println("clap = 1 , Lamp = ON"); dimmer4.setState(ON); dimmer4.setPower(100); status_lights = true; } else if (status_lights && clap == 1) { Serial.println("clap = 1 , Lamp = OFF"); dimmer4.setState(OFF); status_lights = false; } else if (status_lights && clap == 2) { Serial.println("clap = 2 , Lamp = 90%"); dimmer4.setPower(90); } else if (status_lights && clap == 3) { Serial.println("clap = 3 , Lamp = 60%"); dimmer4.setPower(60); } clap = 0; } }
จะได้ผลลัพธ์ตามคลิปด้านบน