วิธีใช้ Arduino เล่นไฟล์เสียงจาก SD Card
วิธีใช้ Arduino เล่นไฟล์เสียงจาก SD Card
หลายคนอยากให้ Arduino พูดหรือเล่นเสียงเพลงได้ งานนี้ต้องใช้ SD Card Module กับลำโพง ไม่ต้องซื้อ shield แพง ๆ ก็ทำได้
อุปกรณ์ที่ต้องใช้
- Arduino UNO R3
- Micro SD Card Module (แบบ SPI)
- SD Card พร้อม adapter
- ลำโพง 8 โอห์ม (ดอกละ 5W ขึ้นไป)
- Breadboard และสายจัมเปอร์
- Power Adapter 9V 2A (ถ้าจะใช้ลำโพงดัง ๆ)
การต่อสาย
SD Card Module ใช้พอร์ต SPI ต่อเข้า Arduino ดังนี้
| SD Card Module | Arduino |
|---|---|
| CS | ขา 4 |
| SCK | ขา 13 |
| MOSI | ขา 11 |
| MISO | ขา 12 |
| VCC | 5V |
| GND | GND |
ลำโพงต่อข้างหนึ่งเข้าขา 9 อีกข้างต่อ GND
เตรียม SD Card และไฟล์เสียง
Arduino รองรับแค่ไฟล์ WAV เท่านั้น และต้องตั้งค่าตามนี้
// สเปคไฟล์เสียงที่ใช้ได้กับ Arduino
// - ฟอร์แมต: WAV
// - Sampling Rate: 16000 Hz
// - Channels: Mono
// - Bit Resolution: 8-bit
ขั้นตอนเตรียมไฟล์
- Format SD Card เป็น FAT32
- แปลงไฟล์ MP3 เป็น WAV ด้วยเว็บ online-convert.com หรือโปรแกรม Audacity
- ตั้งค่า Sampling Rate = 16000 Hz
- ตั้งค่า Channels = Mono
- ตั้งค่า Bit Resolution = 8-bit
- ตั้งชื่อไฟล์เป็น 8.3 format เช่น
sound.wavหรือ1.wav
ติดตั้ง Library
ต้องลง Library สองตัว
- SD Library - มากับ Arduino IDE อยู่แล้ว แต่ถ้าไม่มี ดาวน์โหลดได้จาก Arduino Libraries
- TMRpcm Library - สำหรับเล่นไฟล์เสียง WAV
วิธีติดตั้ง Library ใน Arduino IDE
- ดาวน์โหลดไฟล์ ZIP ของ TMRpcm
- ไปที่ Sketch > Include Library > Add .ZIP Library
- เลือกไฟล์ที่ดาวน์โหลดมา
โค้ด Arduino เล่นไฟล์เสียงจาก SD Card
#include <SD.h>
#include <TMRpcm.h>
#include <SPI.h>
#define SD_CSPin 4 // ขา CS ของ SD Card Module
#define speakerPin 9 // ขาลำโพง
TMRpcm tmrpcm; // สร้าง object สำหรับเล่นเสียง
void setup() {
Serial.begin(9600);
// ตั้งค่า SD Card
if (!SD.begin(SD_CSPin)) {
Serial.println("SD Card เริ่มต้นไม่ได้");
return;
}
Serial.println("SD Card พร้อมใช้งาน");
// ตั้งค่าลำโพง
tmrpcm.speakerPin = speakerPin;
// ปรับคุณภาพเสียง (0-7) ค่ายิ่งสูงยิ่งใช้ RAM มาก
// UNO ใช้ค่าได้ถึง 4 โดยไม่ค้าง
tmrpcm.setVolume(5);
Serial.println("พิมพ์ชื่อไฟล์ (ไม่มี .wav) แล้วกด Send");
}
void loop() {
if (Serial.available()) {
String filename = Serial.readStringUntil('\n');
filename.trim();
// เพิ่ม .wav ต่อท้ายชื่อไฟล์
if (!filename.endsWith(".wav")) {
filename += ".wav";
}
Serial.print("กำลังเล่น: ");
Serial.println(filename);
if (!tmrpcm.play(filename.c_str())) {
Serial.println("เล่นไฟล์ไม่ได้ ตรวจสอบชื่อไฟล์ใน SD Card");
}
}
}
วิธีใช้งาน
- อัพโหลดโค้ดลงบอร์ด
- เปิด Serial Monitor ( baud rate 9600 )
- ใส่ SD Card ที่มีไฟล์เสียง เช่น
1.wav - พิมพ์
1แล้วกด Send - Arduino จะเล่นเสียงออกลำโพงทันที
ปัญหาที่พบบ่อย
เสียงเพี้ยนหรือกระโดด
- ลด Bit Resolution ลงเหลือ 8-bit
- ลด Sampling Rate ลงเหลือ 16000 Hz
- เพิ่ม capacitor 100uF ขนานกับขาลำโพง
เล่นไฟล์ไม่ได้
- ตรวจสอบว่าชื่อไฟล์ถูกต้อง (ตัวพิมพ์เล็ก/ใหญ่มีผล)
- ตรวจสอบว่า SD Card format เป็น FAT32
- ลองเปลี่ยนไฟล์อื่นที่แน่ใจว่าแปลงถูกต้องแล้ว
ลำโพงเบามาก
- ใช้ลำโพง 8 โอห์ม ขนาด 5W ขึ้นไป
- เพิ่มค่า volume ในโค้ด
tmrpcm.setVolume(7); - ใช้ Power Adapter แทน USB จ่ายไฟ
สรุป
การใช้ Arduino เล่นไฟล์เสียงจาก SD Card ทำได้ไม่ยาก ขอแค่มี SD Card Module, ลำโพง และ Library TMRpcm ก็พอ ข้อจำกัดคือรองรับแค่ไฟล์ WAV และคุณภาพเสียงจะไม่เทียบเท่า MP3 player แต่สำหรับโปรเจกต์งานเสียงพูดหรือเสียงบรรยายถือว่าใช้ได้
อยากทำโปรเจคแบบนี้?
รับทำโปรเจค Arduino / IoT จบงานไว ส่งงานครบ พร้อมสอน
หากต้องการ รับทำโปรเจคอาดูโน่ หรือระบบ IoT แบบเร่งด่วน สามารถดูรายละเอียดบริการได้ที่หน้าแรก
จ้างทำโปรเจคเลย