Raspberry Pi Pico โปรเจกต์เสียงที่มือใหม่ทำตามได้
ต้องการสร้าง USB Microphone ของตัวเองด้วยราคาประหยัด? Raspberry Pi Pico คือคำตอบที่คุณกำลังหา! ด้วยบอร์ด microcontroller ที่เล็กเบา และราคาถูก เพียงแค่มีไมโครโฟน MEMS PDM เล็ก ๆ เพียงตัวเดียว คุณก็สามารถสร้าง USB Microphone ที่ทำงานได้ดีเสมือนสินค้าในท้องตลาด บทความนี้จะพาคุณเข้าใจเทคโนโลยี และเรียนรู้วิธีสร้างอย่างละเอียด

ภาพรวมโปรเจกต์
Raspberry Pi Pico นำเสนอชุดคุณสมบัติที่น่าสนใจสำหรับการอัดเสียง แม้ว่าจะเป็นบอร์ด microcontroller ที่เล็ก และราคาประหยัด แต่มันมี RP2040 ที่มีประสิทธิภาพ สามารถใช้เป็น USB Audio Device ได้โดยตรง ไม่จำเป็นต้องใช้บอร์ดเพิ่มเติมอื่น ๆ
โปรเจกต์นี้เหมาะสำหรับผู้ที่ต้องการ:
- → สร้างไมโครโฟนราคาต่ำสำหรับการบันทึกเสียง
- → เรียนรู้เกี่ยวกับการประมวลผลเสียงดิจิตอล
- → ทำความเข้าใจเทคนิค PDM (Pulse Density Modulation)
- → พัฒนาโปรเจกต์ IoT เกี่ยวกับเสียง
💰 ค่าใช้จ่าย: ประมาณ 200-400 บาท สำหรับอุปกรณ์ทั้งหมด (ไม่รวมเครื่องคอมพิวเตอร์)
USB Microphone คืออะไร
USB Microphone เป็นอุปกรณ์ที่สามารถเชื่อมต่อเข้ากับคอมพิวเตอร์ผ่านสาย USB ได้โดยตรง ไม่จำเป็นต้องมีการ์ดเสียง (Sound Card) เพิ่มเติม คอมพิวเตอร์จะจำได้จดจำและรู้ว่าเป็นอุปกรณ์เสียง หลังจากเชื่อมต่อ และสามารถใช้งานได้ทันที
ใน Raspberry Pi Pico ที่มี RP2040 สามารถทำหน้าที่เป็น USB Audio Device ได้เอง! กล่าวคือเมื่อเชื่อมต่อกับคอมพิวเตอร์ Pico จะประกาศตัวเองว่า "ฉันคือ Microphone" แล้วคอมพิวเตอร์ก็จะอ่านเสียงจาก Pico ได้ทันที
ขั้นตอนการทำงาน:
ไมโครโฟน MEMS PDM → Pico ประมวลผล → ส่งเป็น USB Audio → คอมพิวเตอร์ (Audacity, Teams, Discord ฯลฯ)
การเลือกไมโครโฟน
ไมโครโฟนที่เหมาะสำหรับโปรเจกต์นี้คือ MEMS PDM Microphone โดยเฉพาะ ไมค์กล้อง INMP441 หรือ MP34DT01TR ซึ่งมีคุณสมบัติ:
-
ขนาดเล็ก (MEMS):
เป็น Microelectromechanical Systems ทำให้ขนาดเล็กมากและประหยัดพื้นที่
-
ใช้ Protocol PDM:
เป็นการส่งข้อมูลเสียงรูปแบบหนึ่งที่ต่างจากแบบปกติ (ดูรายละเอียดด้านล่าง)
-
สายไฟน้อย:
ต้องเพียง 3-4 สายสำหรับสาย CLK, DATA, VDD, GND ขณะที่ไมค์กล้องอื่นอาจต้องสายมากกว่า
-
คุณภาพเสียงดี:
เหมาะสำหรับบันทึกเสียงสาย ห้องประชุม และการพูดอย่างทั่วไป
คุณสามารถหา MEMS PDM Microphone ได้จากจำหน่ายออนไลน์ราคาประมาณ 50-150 บาท
หลักการ PDM (Pulse Density Modulation)
PDM เป็นวิธีการส่งสัญญาณเสียงรูปแบบหนึ่งที่อาจดูซับซ้อนแต่แนวความคิดพื้นฐานนั้นง่ายมาก
PDM ทำงานอย่างไร?
แทนที่จะส่งค่าตัวเลขที่แน่นอน (เช่น 128, 256, 512) ไมโครโฟน PDM จะส่งสัญญาณเป็นลำดับของ 1 และ 0 เรียกว่า "bits"
ตัวอย่าง: เสียงระดับกลาง → 10101100101... เสียงดังขึ้น → 11101111101... เสียงเบาลง → 00101001010...
Raspberry Pi Pico ได้รับลำดับ bits นี้จากไมโครโฟน แล้วคำนวณความหนาแน่นของ 1 และ 0 เพื่อสร้างค่าเสียงที่แท้จริง เป็นกระบวนการทางคณิตศาสตร์ที่ถูกทำขึ้นอัตโนมัติ
ทำไม PDM? PDM ประหยัดสายไฟและพลังงานมากกว่าแบบอื่น ทำให้เหมาะสำหรับ IoT devices ที่ต้องประหยัดพื้นที่และพลังงาน
Processing Pipeline
เมื่อ Pico รับข้อมูลเสียง PDM มันจะต้องประมวลผลมันให้เป็นรูปแบบ USB Audio ก่อน ที่เรียกว่า PCM (Pulse Code Modulation) ซึ่งเป็นมาตรฐาน
ขั้นตอนการประมวลผล:
1. รับ PDM: Pico ได้รับข้อมูล bits จากไมโครโฟน
2. Decimation: ลดจำนวน bits ให้เหมาะสม
3. Filtering: กรองสัญญาณรบกวนที่ไม่ต้องการ
4. Conversion to PCM: แปลงเป็น PCM 16-bit audio
5. USB Streaming: ส่งออกผ่าน USB Audio Device
โชคดีที่มี Library ชื่อ pico-microphone ที่จัดการขั้นตอนนี้ให้เราแล้ว เราแค่เรียกใช้ Function พื้น ๆ ได้
Hardware Setup
การต่อสายนั้นง่ายมาก เพียงแค่ 4 สายเท่านั้น:
• CLK (Clock) → GPIO 0
• DATA → GPIO 1
• VDD → 3.3V
• GND → GND
เพียงเท่านี้! ไม่จำเป็นต้องสร้าง Breadboard ที่ซับซ้อน Pico จะสอบสัญญาณเสียงจากไมโครโฟนและส่งออกผ่าน USB ได้ทันที
อุปกรณ์ที่ต้องใช้
บอร์ดหลัก RM2040 microcontroller
INMP441 หรือ MP34DT01TR
4 เส้นสำหรับต่อ CLK, DATA, VDD, GND
สำหรับต่อกับคอมพิวเตอร์
Windows, macOS หรือ Linux
โปรแกรมบันทึกและตัดต่อเสียง
ราคาประมาณ: 200-400 บาท (ขึ้นอยู่กับที่ซื้อ)


การตั้งค่าสภาพแวดล้อมการพัฒนา
ต้องติดตั้งเครื่องมือ Pico SDK สำหรับการเขียน compile โค้ด ตามขั้นตอนนี้:
ขั้นตอนที่ 1: ติดตั้ง Pico SDK
ดาวน์โหลด Pico SDK จากหน้าเว็บ Raspberry Pi ตามระบบปฏิบัติการของคุณ (Windows, macOS, Linux)
ขั้นตอนที่ 2: ติดตั้ง CMake และ GCC
ใช้ Command Line เพื่อติดตั้ง:
Windows: ใช้ Visual Studio Build Tools
macOS: ใช้ Homebrew
Linux: ใช้ apt-get หรือ yum
ขั้นตอนที่ 3: ดาวน์โหลด pico-microphone Library
ใช้ git clone หรือดาวน์โหลดจาก GitHub
URL: github.com/raspberrypi/pico-sdk
ขั้นตอนที่ 4: Compile ตัวอย่างโค้ด
ใช้ Command Line navigate ไปยังโฟลเดอร์ตัวอย่าง และสั่ง:cmake ..make
หลังจากสำเร็จ ไฟล์ .uf2 จะถูก Generate ขึ้นมา ไฟล์นี้จะถูก Upload เข้าไปใน Pico
โค้ด Example
ด้านล่างคือตัวอย่างโค้ด C ที่ใช้กับ Pico SDK:
#include <stdio.h>
#include "pico/stdlib.h"
#include "pico/audio_i2s.h"
const uint MICROPHONE_CLK = 0;
const uint MICROPHONE_DATA = 1;
int main() {
stdio_init_all();
// ตั้งค่า PDM Microphone
audio_i2s_config_t audio_config = {
.sample_rate = 16000, // 16 kHz
.bit_width = 16,
.stereo = false,
.gpio_clk = MICROPHONE_CLK,
.gpio_data = MICROPHONE_DATA,
};
audio_i2s_init(&audio_config);
// Allocate buffer
int16_t buffer[512];
while (1) {
// อ่านข้อมูลเสียงจากไมโครโฟน
int samples_read = audio_i2s_read(buffer, 512);
if (samples_read > 0) {
// ส่งออกผ่าน USB Audio Device
for (int i = 0; i < samples_read; i++) {
printf("%d,", buffer[i]);
}
printf("\n");
}
}
return 0;
}
โค้ดนี้เป็นตัวอย่างพื้นฐาน โปรเจกต์จริงจะมีรายละเอียดมากกว่านี้ เช่น USB Audio Class Implementation
Recording Audio Data
หลังจากที่ Pico ประมวลผลเสียง และส่งออกเป็น USB Audio Device แล้ว คอมพิวเตอร์จะจำได้จดจำว่ามี Microphone ใหม่เชื่อมต่ออยู่
ขณะนี้ คุณสามารถใช้ Pico Microphone ได้กับโปรแกรมใดก็ได้ที่ต้องการใช้ Microphone เช่น:
- ✓ Audacity: โปรแกรมบันทึกและตัดต่อเสียงฟรี
- ✓ Discord/Teams/Zoom: สำหรับวิดีโอคอล
- ✓ OBS Studio: สำหรับ Streaming
- ✓ โปรแกรมอื่น ๆ: ที่ต้องการใช้ Microphone
💡 ทดสอบแรก: เปิด Audacity (ดาวน์โหลดจาก audacityteam.org) และเลือก Pico Microphone จากเมนู Audio Device ทดลองอัดเสียง 10 วินาที


เคล็ดลับและการแก้ไขปัญหา
❓ ปัญหา: Pico ไม่ถูกจำได้จดจำ
✓ ตรวจสอบ USB Cable ว่าสามารถส่งข้อมูลได้ (บางเส้นเป็นสายชาร์จเท่านั้น)
✓ ลองใช้ Micro USB Cable อื่น
❓ ปัญหา: ไม่ได้ยินเสียงจากไมโครโฟน
✓ ตรวจสอบว่าไมโครโฟน MEMS ต่อถูกต้อง (CLK, DATA, VDD, GND)
✓ ตรวจสอบบนตั้งค่าเสียง ว่า Pico Microphone ถูกเลือกหรือไม่
❓ ปัญหา: เสียงเป็นสัญญาณรบกวน
✓ ตรวจสอบการต่อสายให้ติด หรือใช้สายที่หุ้มโล่
✓ ลดระดับ Gain หรือ Volume ในโปรแกรม
💡 เคล็ดลับ: คุณภาพเสียงดีขึ้น
ใช้ Foam Pop Filter หรือ Foam Cover สำหรับลดเสียงปุ่ด และทำให้เสียงชัดขึ้น
ขั้นตอนถัดไป: พัฒนาต่อไป
หลังจากโปรเจกต์เบื้องต้นสำเร็จแล้ว คุณสามารถพัฒนาต่อได้ด้วยการ:
- → เพิ่มการประมวลผลเสียงจริงเวลา: เพิ่ม Filter เพื่อลดเสียงรบกวน (Noise Cancellation)
- → บันทึกบนบอร์ด: ต่อ SD Card เพื่อบันทึกเสียงโดยตรง
- → ใช้ Stereo Microphone: เพิ่มไมโครโฟน 2 ตัว สำหรับการบันทึกสเตอริโอ
- → Voice Recognition: เพิ่ม TinyML เพื่อรู้จำคำพูด
- → IoT Integration: ส่งข้อมูลเสียงไปยัง Cloud สำหรับประมวลผล
พร้อมที่จะสร้างแล้วหรือ
สั่งซื้ออุปกรณ์ครบชุด หรือสอบถามคำปรึกษาจากทีมผู้เชี่ยวชาญของเรา