การสังเคราะห์เสียงด้วย Arduino (ตอนที่1)

การสร้างสัญญาณเสียงจากเซนเซอร์ต่าง ๆ ด้วย Library Mozzi โดยใช้ Arduino

Sarawoot Chaichana
Chiang Mai Maker Club
4 min readSep 5, 2017

--

เรียนรู้การสร้างสัญญาณเสียงจากไมโครคอนโทรลเลอร์ Arduino ไม่ใช่เรื่องยากอีกต่อไปเนื่องจากมี Library MOZZI หรือโปรแกรมตัวอย่างให้ลองเล่นกัน ซึ่งสามารถดัดแปลงเป็นชุดกำเนิดเสียงแปลก ๆ ได้หลากหลายเช่น เสียง กบ เสียงยุง เสียงกลอง เสียงความถี่ และอีกมากมาย

Table of Contents

  1. บทความการสังเคราะห์เสียงด้วย Arduino (ตอนที่1)
  2. บทความการสังเคราะห์เสียงด้วย Arduino (ตอนที่2)

รายการอุปกรณ์

รูปที่ 1 รายการอุปกรณ์
  1. บอร์ด Arduino Nano 1 ตัว
  2. บอร์ดทดลอง (Breadboard) 1 บอร์ด
  3. ตัวต้านทานปรับค่าได้ 100 กิโลโอห์ม (VR 100K) 1 ตัว
  4. สวิทช์แบบกดติดปล่อยดับ (Switch)1 ตัว
  5. ตัวต้านทานเปลี่ยนค่าตามแสง (LDR) 2ตัว
  6. Piezo 1 ตัว
  7. ตัวต้านทานค่า 5.1 กิโลโอห์ม 2 ตัว
  8. ตัวต้านทานค่า 10 กิโลโอห์ม 1ตัว
  9. ตัวต้านทานค่า 1 เมกะโอห์ม 1ตัว
  10. สายจั้มเปอร์ (Jumper wire) 1 ชุด
  11. ช่องเสียสายสัญญาณเสียง Audio socket 1 ตัว
  12. สายสัญญาณเสียง Audio cable 1 เส้น
  13. สายเชื่อมต่อคอมพิวเตอร์กับบอร์ด Arduino Nano (USB cable) 1 เส้น
  14. เครื่องขยายเสียงขนาดเล็ก หรือใช้คอมพิวเตอร์แทนได้

เตรียมการใช้งานบอร์ด Arduino Nano

วางบอร์ด Arduino Nano ลงบนบอร์ดทดลองจากนั้นเสียบสาย USB เชื่อมต่อกับคอมพิวเตอร์

รูปที่ 2 เชื่อมต่อสาย USB ระหว่างบอร์ด Arduino Nano กับคอมพิวเตอร์
  • ติดตั้งโปรแกรม Arduino IDE และ ไดร์เวอร์ของบอร์ด จากเว็บไซต์ Arduino คลิ๊ก

ดาวน์โหลด Library

  • ดาวน์โหลด Mozzi Library จากเว็บไซต์บน Github คลิ๊ก
  • เมื่อดาวน์โหลดเสร็จแล้วให้ทำการติดตั้ง Library โดยเข้าไปที่
Arduino➞Sketch➞Include Library➞Add .ZIP Library

การเดินสายไฟบนบอร์ด

รูปที่ 3 การต่อใช้งานช่องเสียสายสัญญาณเสียง
รูปที่ 4 การต่อใช้งานช่องเสียสายสัญญาณเสียง
  • ต่อสายสัญญาณเสียงที่ขา D9(เส้นสีเขียว) ของบอร์ด Arduino Nano เข้ากับอินพุตช่องเสียสายสัญญาณเสียง และต่อลงกราวด์ (เส้นสีขาว) จากนั้นเสียบสายสัญญาณกับเครื่องเล่นเสียง หรือคอมพิวเตอร์ในช่องไมค์โครโฟนและติดตั้งโปรแกรมเล่นเสียงในคอมพิวเตอร์ตัวอย่างเช่นโปรแกรม Audacity

การทดสอบโปรแกรมตัวอย่างของ Library Mozzi

  • เลือกโปรแกรมตัวอย่างตามหัวข้อข้างล่างจากนั้นอัปโหลดโปรแกรม
Arduino➞File-Examples➞Mozzi➞09.Delays➞ReverbTank_STANDARD

เมื่ออัพโหลดโปรแกรมเสร็จ จะมีเสียงเล่นเป็นจังหวะตามตัวอย่าง

เมื่ออัพโหลดโปรแกรมเสร็จ โปรแกรมจะสร้างเสียงกลองเป็นจังหวะ

***ข้อสังเกตุสัญญาณเสียงที่ออกมาจะออกเป็นแบบ Mono หรือ ออกข้างเดียวถ้าหากเครื่องเล่นเสียงเป็นระบบ Stereo

การใช้เซนเซอร์ ควบคุมการสร้างสัญญาณเสียง

ตัวต้านทานปรับค่าได้ (VR)

รูปที่ 5 การต่อใช้งานตัวต้านทานปรับค่าได้
รูปที่ 6 การต่อใช้งานตัวต้านทานปรับค่าได้
  • การต่อตัวต้านทานปรับค่าได้ ขาที่ 1 ต่อกับไฟ+5V (เส้นสีเหลือง) ขาที่ 2 ต่อกับขา A0 ของบอร์ด Arduino Nano (เส้นสีขาว) ขาที่ 3 ต่อลงกราวน์ (เส้นสีเขียว)
  • เลือกโปรแกรมตามหัวข้อข้างล่างจากนั้นอัปโหลดโปรแกรมและเปิด Serial Monitor เลือก baud rate ที่ 115200 baud
Arduino➞File➞Examples➞Mozzi➞03.Sensors➞Volume_Knob
เมื่ออัพโหลดโปรแกรมเสร็จ เมื่อมีการปรับหมุนตัวต้านทานปรับค่าจะเป็นการเพิ่มและลดเสียง

ตัวต้านทานเปลี่ยนค่าตามแสง (LDR)

รูปที่ 7 การต่อใช้งานตัวต้านทานเปลี่ยนค่าตามแสง
รูปที่ 8 การต่อใช้งานตัวต้านทานเปลี่ยนค่าตามแสง
  • การต่อตัวต้านเปลี่ยนค่าตามแสง ขาที่ 1 ต่อกับขา A1 ของบอร์ด Arduino Nano (เส้นสีเหลือง) ขาที่ 2 ต่อลงกราวน์
  • ต่อตัวต้านทานค่า 5.1 กิโลโอห์ม ขาที่ 1 ต่อกับขา A1 ของบอร์ด Arduino Nano ขาที่ 2 ต่อกับไฟ +5V การต่อลักษณะนี้เป็นการต่อแบบ Voltage Divider
  • ปกติหาก LDR ไม่ได้รับแสงจะมีค่าความต้านทานประมาณ 1 เมกะโอห์ม ทำให้มีแรงดันตกคร่อม LDR ประมาณ 4.975 โวลต์ตามภาพตัวอย่างการคำนวน รูปที่ 9 การคำนวนวงจร Voltage Divider
รูปที่ 9 การคำนวนวงจร Voltage Divider
  • และหาก LDR ได้รับแสงจะมีค่าความต้านทานน้อยที่สุดประมาณ 400 โอห์ม ทำให้มีแรงดันตกคร่อม LDR ประมาณ 0.364 โวลต์ตามภาพตัวอย่างการคำนวน รูปที่ 10 การคำนวนวงจร Voltage Divider
รูปที่ 10 การคำนวนวงจร Voltage Divider
  • ซึ่งความแตกต่างคือเปรียบเสมือนเป็นเซนเซอร์ปรับระดับ เปลี่ยนค่าความต้านทานตามแสงสว่างนั่นเอง
  • เลือกโปรแกรมตามหัวข้อข้างล่างจากนั้นอัปโหลดโปรแกรมและเปิด Serial Monitor เลือก baud rate ที่ 115200 baud

Arduino➞File➞Examples➞Mozzi➞03.Sensors➞Volume_Knob_LightLevel_Frequency

เมื่ออัพโหลดโปรแกรมเสร็จ เมื่อมีการปรับหมุนตัวต้านทานปรับค่าและบังแสงสว่างของ LDR จะเป็นการปรับเปลี่ยนความถี่ตามตัวอย่าง

ตัวอย่าง Knob_LightLevel_FMsynth

Arduino➞File➞Examples➞Mozzi➞03.Sensors➞Knob_LightLevel_FMsynth
เมื่ออัพโหลดโปรแกรมเสร็จ เมื่อมีการปรับหมุนตัวต้านทานปรับค่าและบังแสงสว่างของ LDR จะเป็นการปรับเปลี่ยนความถี่ตามตัวอย่าง
รูปที่ 11 การต่อใช้งานตัวต้านทานเปลี่ยนค่าตามแสงตัวที่ 2
รูปที่ 12 การต่อใช้งานตัวต้านทานเปลี่ยนค่าตามแสงตัวที่ 2

การต่อตัวต้านเปลี่ยนค่าตามแสงตัสที่ 2จะต่อคล้ายกับตัวที่ 1 ทุกอย่างเพียงแต่ ขาที่ 1 ของ LDR จะต่อกับขา A2 ของบอร์ด Arduino Nano (เส้นสีเขียว)

  • เลือกโปรแกรมตามหัวข้อข้างล่างจากนั้นอัปโหลดโปรแกรมและเปิด Serial Monitor เลือก baud rate ที่ 115200 baud

Arduino➞File➞Examples➞Mozzi➞03.Sensors➞Knob_LightLevel_x2_FMsynth

เมื่ออัพโหลดโปรแกรมเสร็จ เมื่อมีการปรับหมุนตัวต้านทานปรับค่าและบังแสงสว่างของ LDR จะเป็นการปรับเปลี่ยนความถี่ตามตัวอย่าง

Arduino➞File➞Examples➞Mozzi➞03.Sensors➞LDR_x2_Knob_WavePacket

เมื่ออัพโหลดโปรแกรมเสร็จ เมื่อมีการปรับหมุนตัวต้านทานปรับค่าและบังแสงสว่างของ LDR ทั้ง 2 ตัวจะเป็นการปรับเปลี่ยนความถี่ตามตัวอย่าง

เปียโซ Piezo

รูปที่ 13 การต่อใช้งานเปียโซ
รูปที่ 14 การต่อใช้งานเปียโซ
  • การต่อเปียโซ ขาที่ 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

เมื่ออัพโหลดโปรแกรมเสร็จ เมื่อมีการกดเปียโซหรือเคาะจะเกิดเสียงตามจังหวะดังตัวอย่าง

สวิทช์แบบกดติดปล่อยดับ

รูปที่ 15 การต่อใช้งานสวิทช์แบบกดติดปล่อยดับ
รูปที่ 16 การต่อใช้งานสวิทช์แบบกดติดปล่อยดับ
  • การต่อสวิทช์แบบกดติดปล่อยดับ ขาที่ 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 กันต่อเลย

ขอขอบคุณแหล่งที่มา

--

--

Sarawoot Chaichana
Chiang Mai Maker Club

Maker ตัวน้อยผู้แสวงหาความกระจ่าง