Cách sử dụng mạch đọc ghi thẻ SD trong dự án âm thanh

Hôm nay, tôi sẽ giới thiệu với các bạn về SDcard breakout board (mạch đọc ghi thẻ SD) và ứng dụng của nó trong dự án sử dụng âm thanh như phát nhạc, âm thanh cảnh báo, giọng nói…

Phần cứng

  • Arduino Uno
  • 01 SDcard breakout board
  • 01 thẻ micro SD + adapter
  • Dây cắm breadboard
  • 01 Mạch khuếch đại âm 6W
  • 01 Tụ điện 4700uF

Lắp mạch

1. SDcard breakout board

sdcard breakout board

Thông số kỹ thuật:

  • Tương thích với cả nguồn 5V và 3.3V
  • Hỗ trợ khe cắm mở rộng
  • SD Card hỗ trợ định dạng FAT16 và FAT32 (các định dạng khác như NTFS, ext1-4,… không chơi được). Tốt nhất là bỏ vào máy windows format lại theo định dạng FAT16 hoặc FAT32.
  • Hỗ trợ việc recording và playback cho lượng âm thanh lớn.
  • Giao tiếp thông qua chuẩn SPI (4 Pin): MOSI, SCK, MISO và CS.

2. Kết nối với Arduino

3. Mạch khuếch đại âm 6W

mạch khuếch đại âm 6W

Mạch khuếch đại âm thanh có thứ tự nối dây như sau:

  • R+ nối với cực + loa bên trái
  • R- nối với cực – loa bên trái
  • L- nối với cực – loa bên phải
  • L+ nối với cực + loa bên phải
  • Gnd nối với cực âm của nguồn
  • 5V nối với cực dương của nguồn 3.3V – 5.5V
  • SW được sử dụng như 1 công tắc của mạch, SW nối Gnd mạch ngưng hoạt động
  • Gnd để nối với SW khi tắt mạch
  • Lin nối với dây jack phone 3.5mm kênh LEFT
  • Gnd nối với phần chung của dây jack phone 3.5mm
  • Rin nối với dây jack phone 3.5mm kênh RIGHT

Mạch khuếch đại âm thanh chống chập mạch
Mạch sẽ ngưng hoạt động ngay khi các dây nối ra loa (R+ R- L+ L-) chập nhau hoặc bị nối với Gnd. Sau khi hết bị chập, mạch hoạt động lại bình thường.

Lưu ý: mạch không có chế độ bảo vệ khi bạn đấu ngược nguồn (Gnd và 5V), cần lưu ý nối đúng cực nguồn vào mạch! Chỉ cần một chút lơ đễnh là bạn sẽ tiền đưa em nó về sọt rác đó, không thể sửa được đâu!

Mạch khuếch đại cho công suất tối ưu
Mạch hoạt động với độ nhiễu cực thấp, công suất khuếch đại lên đến 6W (3W mỗi loa đầu ra). Để mạch hoạt động ổn định, bạn cần hàn thêm 1 tụ 4700uF vào vị trí tụ C7.

Lập trình

Trước tiên, bạn cần download các thư viện hỗ trợ: thư viện SD, thư viện SPI và thư viện TRMpcm (dự phòng).

Chúng ta sẽ bắt đầu bằng cách đọc và phát file âm thanh từ thẻ SD thông qua Arduino. Bạn phải đảm bảo trong thẻ SD đã có sẵn file âm thanh cần phát.

Ở đây, bạn có thể sử dụng 2 file âm thanh có sẵn để làm ví dụ (tải tại đây – dự phòng). Sau đó, bỏ chúng vào thẻ SD của bạn.

Ngoài ra, có thể chạy các file âm thanh khác (lưu ý chúng ta chỉ có thể phát nhạc .wav được lưu dạng 8-bit). Vì sao?

“Vì nó là file âm thanh RAW, nghĩa là âm thanh được lưu ở dạng dữ liệu thô. Hay nói một cách khác, nó chưa được nén và chỉ cần đọc từng byte là ta sẽ có được mảng giá trị các nốt nhạc. Vì sao lại đọc từng byte mà không phải đọc từng word hay dài hơn? Bởi vì, Arduino dùng vi điều khiển ATmega328 – vi điều khiển 8 bit vì vậy xử lý 8 bit sẽ cực nhanh và đã có sẵn thư viện hỗ trợ :3. Muốn phát nhạc được nén như MP3 thì bạn cần phải có mạch giải mã nữa, nói chung là thêm mạch thêm công sức ra đi.”

#include <SD.h>
//#define SD_ChipSelectPin 53 //sử dụng SS Pin 53 trên Mega2560
#define SD_ChipSelectPin 4 //thường sử dụng digital pin 4 trên arduino nano 328, hoặc chân tùy ý
#include <TMRpcm.h>
#include <SPI.h>

TMRpcm tmrpcm;

unsigned long time = 0;

void setup() {
  tmrpcm.speakerPin = 9; //5,6,11 hoặc 46 trên Mega, 9 trên Uno, Nano. Vì sao, xem bài viết cứng của anh NTP_PRO http://arduino.vn/bai-viet/411-timercounter-tren-avrarduino
  Serial.begin(9600); //bật serial monitor ở mức baudrate 9600 :)

  if (!SD.begin(SD_ChipSelectPin)) {
    Serial.println("SD fail");
    return;
  } else {
    Serial.println("OK");
  }

  tmrpcm.play("xinchao.wav");
  delay(3000);
  time = millis();
}

void loop() {
  tmrpcm.play("tambiet.wav");
  delay(5500);
  digitalWrite(9, LOW);

  if(millis() - time > 50) {
    if (!tmrpcm.isPlaying())
      digitalWrite(9, LOW);
    time = millis();
  }
}

Phần mềm hỗ trợ

Để đảm bảo file âm thanh của bạn chơi thành công và có chất lượng tốt, bạn nên làm theo các bước sau đây.

  1. Phần mềm Audacity: (nếu bạn muốn ghi âm âm thanh riêng)
    Phần mềm này cho phép bạn ghi âm, xử lí âm thanh theo ý muốn như cắt, ghép, chỉnh sửa âm thanh. (Tham khảo tại đây)

  2. Phần mềm Total Audio Converter: (nếu bạn đã có sẵn file âm thanh)
    Đây là một trong những phần mềm chuyển đuôi đơn giản và hiệu quả. (tải tại đây / pass: khopm.com).

Bước 1: Chọn file âm thanh cần định dạnh và chọn loại định dạng là .wav
audio converter step 1

Bước 2: Chọn thông số như hình
audio converter step 2

Bước 3: Nhấn Start.

Kết luận

Rất đơn giản phải không nào! Qua cách tiếp cận như thế này, bạn hoàn toàn có thể thực hiện các dự án kết hợp phát âm thanh. Đừng quên bookmark lại để dễ tìm sau này nhé 😉.