กลับหน้าหลัก
views
วิธีใช้ Arduino เล่นไฟล์เสียงจาก SD Card
Last updated on

วิธีใช้ Arduino เล่นไฟล์เสียงจาก SD Card


วิธีใช้ Arduino เล่นไฟล์เสียงจาก SD Card

หลายคนอยากให้ Arduino พูดหรือเล่นเสียงเพลงได้ งานนี้ต้องใช้ SD Card Module กับลำโพง ไม่ต้องซื้อ shield แพง ๆ ก็ทำได้

แผนภาพแสดงการต่อ SD Card Module และลำโพงเข้ากับ Arduino UNO

อุปกรณ์ที่ต้องใช้

  • 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 ModuleArduino
CSขา 4
SCKขา 13
MOSIขา 11
MISOขา 12
VCC5V
GNDGND

ลำโพงต่อข้างหนึ่งเข้าขา 9 อีกข้างต่อ GND

ตารางแสดงขาต่อสายระหว่าง SD Card Module กับ Arduino UNO

เตรียม SD Card และไฟล์เสียง

Arduino รองรับแค่ไฟล์ WAV เท่านั้น และต้องตั้งค่าตามนี้

// สเปคไฟล์เสียงที่ใช้ได้กับ Arduino
// - ฟอร์แมต: WAV
// - Sampling Rate: 16000 Hz
// - Channels: Mono
// - Bit Resolution: 8-bit

ขั้นตอนเตรียมไฟล์

  1. Format SD Card เป็น FAT32
  2. แปลงไฟล์ MP3 เป็น WAV ด้วยเว็บ online-convert.com หรือโปรแกรม Audacity
  3. ตั้งค่า Sampling Rate = 16000 Hz
  4. ตั้งค่า Channels = Mono
  5. ตั้งค่า Bit Resolution = 8-bit
  6. ตั้งชื่อไฟล์เป็น 8.3 format เช่น sound.wav หรือ 1.wav
หน้าต่างการตั้งค่าการแปลงไฟล์เสียงใน Audacity

ติดตั้ง Library

ต้องลง Library สองตัว

  1. SD Library - มากับ Arduino IDE อยู่แล้ว แต่ถ้าไม่มี ดาวน์โหลดได้จาก Arduino Libraries
  2. TMRpcm Library - สำหรับเล่นไฟล์เสียง WAV

วิธีติดตั้ง Library ใน Arduino IDE

  1. ดาวน์โหลดไฟล์ ZIP ของ TMRpcm
  2. ไปที่ Sketch > Include Library > Add .ZIP Library
  3. เลือกไฟล์ที่ดาวน์โหลดมา

โค้ด 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");
    }
  }
}

วิธีใช้งาน

  1. อัพโหลดโค้ดลงบอร์ด
  2. เปิด Serial Monitor ( baud rate 9600 )
  3. ใส่ SD Card ที่มีไฟล์เสียง เช่น 1.wav
  4. พิมพ์ 1 แล้วกด Send
  5. 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 แบบเร่งด่วน สามารถดูรายละเอียดบริการได้ที่หน้าแรก

จ้างทำโปรเจคเลย

ความคิดเห็น