การสังเคราะห์เสียงด้วย Arduino (ตอนที่1)
การสร้างสัญญาณเสียงจากเซนเซอร์ต่าง ๆ ด้วย Library Mozzi โดยใช้ Arduino
เรียนรู้การสร้างสัญญาณเสียงจากไมโครคอนโทรลเลอร์ Arduino ไม่ใช่เรื่องยากอีกต่อไปเนื่องจากมี Library MOZZI หรือโปรแกรมตัวอย่างให้ลองเล่นกัน ซึ่งสามารถดัดแปลงเป็นชุดกำเนิดเสียงแปลก ๆ ได้หลากหลายเช่น เสียง กบ เสียงยุง เสียงกลอง เสียงความถี่ และอีกมากมาย
Table of Contents
- บทความการสังเคราะห์เสียงด้วย Arduino (ตอนที่1)
- บทความการสังเคราะห์เสียงด้วย Arduino (ตอนที่2)
รายการอุปกรณ์
- บอร์ด Arduino Nano 1 ตัว
- บอร์ดทดลอง (Breadboard) 1 บอร์ด
- ตัวต้านทานปรับค่าได้ 100 กิโลโอห์ม (VR 100K) 1 ตัว
- สวิทช์แบบกดติดปล่อยดับ (Switch)1 ตัว
- ตัวต้านทานเปลี่ยนค่าตามแสง (LDR) 2ตัว
- Piezo 1 ตัว
- ตัวต้านทานค่า 5.1 กิโลโอห์ม 2 ตัว
- ตัวต้านทานค่า 10 กิโลโอห์ม 1ตัว
- ตัวต้านทานค่า 1 เมกะโอห์ม 1ตัว
- สายจั้มเปอร์ (Jumper wire) 1 ชุด
- ช่องเสียสายสัญญาณเสียง Audio socket 1 ตัว
- สายสัญญาณเสียง Audio cable 1 เส้น
- สายเชื่อมต่อคอมพิวเตอร์กับบอร์ด Arduino Nano (USB cable) 1 เส้น
- เครื่องขยายเสียงขนาดเล็ก หรือใช้คอมพิวเตอร์แทนได้
เตรียมการใช้งานบอร์ด Arduino Nano
วางบอร์ด Arduino Nano ลงบนบอร์ดทดลองจากนั้นเสียบสาย USB เชื่อมต่อกับคอมพิวเตอร์
- ติดตั้งโปรแกรม Arduino IDE และ ไดร์เวอร์ของบอร์ด จากเว็บไซต์ Arduino คลิ๊ก
ดาวน์โหลด Library
- ดาวน์โหลด Mozzi Library จากเว็บไซต์บน Github คลิ๊ก
- เมื่อดาวน์โหลดเสร็จแล้วให้ทำการติดตั้ง Library โดยเข้าไปที่
การเดินสายไฟบนบอร์ด
- ต่อสายสัญญาณเสียงที่ขา D9(เส้นสีเขียว) ของบอร์ด Arduino Nano เข้ากับอินพุตช่องเสียสายสัญญาณเสียง และต่อลงกราวด์ (เส้นสีขาว) จากนั้นเสียบสายสัญญาณกับเครื่องเล่นเสียง หรือคอมพิวเตอร์ในช่องไมค์โครโฟนและติดตั้งโปรแกรมเล่นเสียงในคอมพิวเตอร์ตัวอย่างเช่นโปรแกรม Audacity
การทดสอบโปรแกรมตัวอย่างของ Library Mozzi
- เลือกโปรแกรมตัวอย่างตามหัวข้อข้างล่างจากนั้นอัปโหลดโปรแกรม
เมื่ออัพโหลดโปรแกรมเสร็จ จะมีเสียงเล่นเป็นจังหวะตามตัวอย่าง
***ข้อสังเกตุสัญญาณเสียงที่ออกมาจะออกเป็นแบบ Mono หรือ ออกข้างเดียวถ้าหากเครื่องเล่นเสียงเป็นระบบ Stereo
การใช้เซนเซอร์ ควบคุมการสร้างสัญญาณเสียง
ตัวต้านทานปรับค่าได้ (VR)
- การต่อตัวต้านทานปรับค่าได้ ขาที่ 1 ต่อกับไฟ+5V (เส้นสีเหลือง) ขาที่ 2 ต่อกับขา A0 ของบอร์ด Arduino Nano (เส้นสีขาว) ขาที่ 3 ต่อลงกราวน์ (เส้นสีเขียว)
- เลือกโปรแกรมตามหัวข้อข้างล่างจากนั้นอัปโหลดโปรแกรมและเปิด Serial Monitor เลือก baud rate ที่ 115200 baud
ตัวต้านทานเปลี่ยนค่าตามแสง (LDR)
- การต่อตัวต้านเปลี่ยนค่าตามแสง ขาที่ 1 ต่อกับขา A1 ของบอร์ด Arduino Nano (เส้นสีเหลือง) ขาที่ 2 ต่อลงกราวน์
- ต่อตัวต้านทานค่า 5.1 กิโลโอห์ม ขาที่ 1 ต่อกับขา A1 ของบอร์ด Arduino Nano ขาที่ 2 ต่อกับไฟ +5V การต่อลักษณะนี้เป็นการต่อแบบ Voltage Divider
- ปกติหาก LDR ไม่ได้รับแสงจะมีค่าความต้านทานประมาณ 1 เมกะโอห์ม ทำให้มีแรงดันตกคร่อม LDR ประมาณ 4.975 โวลต์ตามภาพตัวอย่างการคำนวน รูปที่ 9 การคำนวนวงจร Voltage Divider
- และหาก LDR ได้รับแสงจะมีค่าความต้านทานน้อยที่สุดประมาณ 400 โอห์ม ทำให้มีแรงดันตกคร่อม LDR ประมาณ 0.364 โวลต์ตามภาพตัวอย่างการคำนวน รูปที่ 10 การคำนวนวงจร Voltage Divider
- ซึ่งความแตกต่างคือเปรียบเสมือนเป็นเซนเซอร์ปรับระดับ เปลี่ยนค่าความต้านทานตามแสงสว่างนั่นเอง
- เลือกโปรแกรมตามหัวข้อข้างล่างจากนั้นอัปโหลดโปรแกรมและเปิด Serial Monitor เลือก baud rate ที่ 115200 baud
Arduino➞File➞Examples➞Mozzi➞03.Sensors➞Volume_Knob_LightLevel_Frequency
ตัวอย่าง Knob_LightLevel_FMsynth
การต่อตัวต้านเปลี่ยนค่าตามแสงตัสที่ 2จะต่อคล้ายกับตัวที่ 1 ทุกอย่างเพียงแต่ ขาที่ 1 ของ LDR จะต่อกับขา A2 ของบอร์ด Arduino Nano (เส้นสีเขียว)
- เลือกโปรแกรมตามหัวข้อข้างล่างจากนั้นอัปโหลดโปรแกรมและเปิด Serial Monitor เลือก baud rate ที่ 115200 baud
Arduino➞File➞Examples➞Mozzi➞03.Sensors➞Knob_LightLevel_x2_FMsynth
Arduino➞File➞Examples➞Mozzi➞03.Sensors➞LDR_x2_Knob_WavePacket
เปียโซ Piezo
- การต่อเปียโซ ขาที่ 1 ต่อกับขา A1 ของบอร์ด Arduino Nano (เส้นสีเหลือง) ขาที่ 2 ต่อลงกราวน์ (เส้นสีดำ)
- ต่อตัวต้านทานค่า 1 เมกะโอห์ม ขาที่ 1 ต่อกับขา A3 ของบอร์ด Arduino Nano ขาที่ 2 ต่อกับไฟ +5V การต่อลักษณะนี้เป็นการต่อแบบ Voltage Divider
- เลือกโปรแกรมตามหัวข้อข้างล่างจากนั้นอัปโหลดโปรแกรมและเปิด Serial Monitor เลือก baud rate ที่ 115200 baud
Arduino➞File➞Examples➞Mozzi➞03.Sensors➞Piezo_Frequency
สวิทช์แบบกดติดปล่อยดับ
- การต่อสวิทช์แบบกดติดปล่อยดับ ขาที่ 1 ต่อกับขา D4 ของบอร์ด Arduino Nano ขาที่ 2 ต่อกับไฟ +5V
- ต่อตัวต้านทานค่า 10 กิโลโอห์ม ขาที่ 1 ต่อกับขา D4 ของบอร์ด Arduino Nano ขาที่ 2 ต่อลงกราวน์ การต่อลักษณะนี้เป็นการต่อแบบ Switch and Pull Down
- เลือกโปรแกรมตามหัวข้อข้างล่างจากนั้นอัปโหลดโปรแกรม
Arduino➞File➞Examples➞Mozzi➞03.Sensors➞Piezo_Switch_Pitch
วงจร Low Pass Filter
เพื่อคุณภาพเสียงที่ดีขึ้นมีความเพี้ยนของสัญญาณน้อยลงหรือ ลดทอนสัญญาณลบกวนสามารถเพิ่มวงจร Low Pass Filter เข้าไปได้จากการคำนวนให้ความถี่ที่ประมาณ 6 กิโลเฮิรตซ์ผ่าน ตามตัวอย่างวงจรข้างล่าง
บทสรุป
หลังจากที่ได้ทดลองพบว่า Library Mozzi นั้นทำมาดีมากสามารถสร้างความถี่ได้หลากหลายอีกทั้งยังสามารถปรับแต่งได้หลากหลายความถี่อีกด้วย เหมาะสำหรับ เด็กนักเรียน นักศึกษาที่ต้องการศึกษา Arduino และสัญญาณเสียง waveform ต่าง ๆ ในบทความถัดไปเราจะมาสร้างกล่องที่สามารถสร้างเสียงต่าง ๆ จากการหมุนปรับของตัวต้านทานปรับค่าได้ จะสนุกขนาดไหนรอติดตามตอนต่อไปได้เลยครับ
ตามมาดูตอนที่ 2 กันต่อเลย
ขอขอบคุณแหล่งที่มา