Module âm thanh WTV020 - Module âm thanh kết hợp với thẻ nhớ micro SD - Một giải pháp thông minh cho túi tiền của bạn

Bài viết này mình xin giới thiệu tới các bạn 1 loại module âm thanh khá dễ sử dụng tuy nhiên lại ít phổ biến trong cộng đồng Arduino VN. Đó là Module WTV-020. Bạn đã từng xem những con robot có thể phát ra tiếng nói và thậm chí xử lý được các tình huống và phát ra tiếng nói theo từng trường hợp. Ngoài việc xử dụng modul Micro SD Card ra, Module WTV-020 là 1 sự lựa chọn đáng để các bạn quan tâm khi các bạn có ý định khởi động 1 dự án có liên quan đến âm thanh.

P/S: mình đã hoàn thành được 1 dự án có sử dụng module này và khá hài lòng về kết quả mà nó mang lại cho mình (kể cả về kinh tế) heart

Đây là loại module có thể sử dụng trong các hệ thống định vị GPS, hệ thống nhà thông minh, các thiết bị y tế, thiết bị gia dụng (bếp, nồi cơm điện, lò vi sóng), máy chơi game, các thiết bị học tập và các công cụ như "sách nói", các dạng phương tiện giao thông thông minh (trạm thu phí, bãi đậu xe), thiết bị thông tin liên lạc (điện thoại), công nghiệp kiểm soát (thang máy), đồ chơi có phát ra âm thanh..v..v..

1. GIỚI THIỆU VỀ MODULE WTV-020

Có thể nói module WTV-020 là module tuyệt vời trong các dự án xử dụng đến âm thanh, với kích thước tương đối nhỏ gọn, khả năng xử lý nhanh, tốc độ lấy mẫu của các file âm thanh lên đến 32000Hz. Và điều đặc biệt đó là nó hoàn toàn có thể hoạt động được khi có vi điều khiển hoặc không có vi điều khiển. Điều đó có nghĩa là bạn có thể sử dụng Arduino để điều khiển WTV-020 hoặc bạn có thể để WTV-020 tự hoạt động mà không cần Arduino. Tuyệt không nào! wink

Dự án của mình thuộc lĩnh vực quân sự nên không thể share cho các bạn xem tuy nhiên để các bạn rõ hơn mình xin dẫn lại 1 video sử dụng WTV-020 (nguồn youtube)

Có 1 số điều cần lưu ý khi làm việc với module này

Hỗ trợ thẻ nhớ tối đa là  2GB

Hoạt động với định dạng âm thanh ad4 (việc chuyển đổi từ mp3, wav sang ad4 rất đơn giản mình sẽ hướng dẫn bên dưới)

Nguồn cấp là 3.3V

OK! Cùng xem sơ đồ chân của em này nào:

  • 1: Chân reset
  • 2: Chân audio, chân này có thể nối tới bộ khuyếch đại
  • 4,5: nối trực tiếp tới loa công suất nhỏ (tối đa 3W)
  • 7: Chân CLK
  • 8: Chân GND
  • 10: chân DATA giao tiêp với vi điều khiển
  • 15: chân Busy
  • 16: chân nguồn 3,3V
  • Các chân 3,6,11,14 không có tác dụng nhé
  • Chân 12, 13 sử dụng trong trường hợp không có arduino. các bạn có thể tham khảo hình bên dưới

Hãy để ý vùng khoanh tròn màu đỏ trên hình, đó chính là điểm chuẩn để bạn xác định các chân

Các bạn lưu ý, Module này chỉ hoạt động ở mức điện áp 3,3v vì vậy khi  sử dụng, hãy chắc chắn là mình cắm đúng nguồn 3,3v nếu không thẻ nhớ của bạn sẽ hỏng.

Các bạn có thể tham khảo datasheet của WTV020 tại đây (Có khá nhiều phiên bản khác nhau, tuy nhiên các chân cơ bản giống nhau)

2. KẾT NỐI VỚI ARDUINO THẾ NÀO?

Như mình đã nói ở phần đầu, Module WTV-020 có thể hoạt động ở 2 chế độ: có hoặc không có Arrduino. Ở mục này mình sẽ hướng dẫn các bạn kết nối Module WTV-020 với arduino

Có lẽ sơ đồ trên đã quá dễ dàng để kết nối rồi đúng không? Nếu bạn nào gặp khó khăn có thể liên hệ trực tiếp với mình qua mục tin nhắn hoặc bình luận nhé! heart

3. CHUYỂN ĐỔI ĐỊNH DẠNG ÂM mp3, wav  SANG *ad4

Nhiều bạn đọc đến đoạn này sẽ cảm thấy ngán vì lại mất công rườm rà chuyển đổi âm thanh mới sử dụng được.

Nhưng các bạn hãy tin mình đi, rất đơn giản thôi!!! laugh

Các bạn cần down phần mềm chuyển đổi định dạng tại đây cài đặt xong sau đó chạy chương trình có tên là USBRecorder ver 1.3, bạn sẽ thấy giao diện như sau

Bước 1. chọn file âm thanh định dạng *mp3 hoặc *wav

Bước 2. Chọn loại định dạng

Bước 3. Encode âm thanh

Bước 4. Các file âm thanh của bạn đã được convert sang dạng *ad4. Các bạn đổi tên file thành dạng 0000.ad4, 0001.ad4, 0002.ad4....v..v.. sau đó copy vào thẻ nhớ, lắp thẻ nhớ vào module.

Nếu các bạn muốn test luôn thì mình có 1 số file ad4 mẫu, các bạn có thể copy vào thẻ luôn và test thử nhé. Các bạn có thể down tại đây HOẶC tại đây.

OK vậy là xong!

4. CODE ARDUINO

Thư viện hỗ trợ cho module WTV-020 Các bạn có thể down tại đây giải nén và copy vào thư mục C:\Program Files\Arduino\libraries

#include <Wtv020sd16p.h>
int resetPin = 2;  // Chân số 2 được kết nối với chân Reset(1) trên Module
int clockPin = 3;  // Chân số 3 được kết nối với chân CLK(7) trên Module
int dataPin = 4;  //Chân số 4 được kết nối với chân data(10) trên Module
int busyPin = 5;  //Chân số 5 được kết nối với chân busy(15) trên Module
Wtv020sd16p wtv020sd16p(resetPin,clockPin,dataPin,busyPin);

void setup() {
  //Khởi tạo module
  wtv020sd16p.reset();
}

void loop() {
  //Chạy file âm thanh đồng bộ. Busy pin được sử dụng ở phương pháp này.
  wtv020sd16p.playVoice(0);
  //chạy âm thanh không đồng bộ
  wtv020sd16p.asyncPlayVoice(1);
  //Chạy tệp âm thanh số 1 trong 5 giây
  delay(5000);
  //tạm dừng tệp số 1 trong 5 giây
  wtv020sd16p.pauseVoice();
  delay(5000);
  //tiếp tục chạy tệp trong 5 giây
  wtv020sd16p.pauseVoice();
  delay(5000);  
  //dừng chạy âm thanh
  wtv020sd16p.stopVoice();
  wtv020sd16p.asyncPlayVoice(2);
  delay(2000);   
// tắt âm
  wtv020sd16p.mute();
  delay(2000);
  //bật âm
  wtv020sd16p.unmute();
  delay(2000);    
  //dừng chạy
  wtv020sd16p.stopVoice();
}

Các bạn có thể nạp chương trình và thử nghiệm tác dụng của từng câu lệnh nhé

Ứng dụng gì với đoạn code này?

Căn cứ vào tính năng của module, bạn hoàn toàn có thể nạp các đoạn âm thanh giọng nói vào thẻ nhớ, sử dụng có các chú robot tự chế có thể phản ứng bằng giọng nói với các trường hợp mà mình định sẵn với các điều kiện từ các cảm biến. Tất cả nằm ở sự sáng tạo của các bạn nhé! yes

Kinh nghiệm của mình khi sử dụng WTV020 cho thấy đây là một trong những module khá thú vị. Trên các trang web khác nhau và các diễn đàn nước ngoài các bạn sẽ tìm thấy các cuộc thảo luận về các phương pháp khác nhau để làm cho nó làm việc. Một số người nói rằng nó không làm việc với thẻ 2GB và một số nói rằng nó không chơi được file * .mp3 / *. Wav.

Trong thực tế, có một số vấn đề cần phải được giải quyết để module có thể hoạt động nhịp nhàng. Trong bài viết này, mình xin đưa ra những kinh nghiệm và mình nghĩ rằng nếu các bạn làm theo các bước này thì thiết bị của bạn sẽ làm việc.

Hãy format thẻ nhớ trước khi copy file âm thanh vào

Sử dụng thẻ nhớ chuẩn, thường là KingSton 2GB

Đặt tên các file âm thanh đúng thứ tự và nguyên tắc: 0000.ad4.... tối đa là 512 file

Nếu vẫn chưa được, hãy format lại thẻ bằng phần mềm chuyên dụng

 Một số module dòng WTV-020-M01 bị 1 lỗi phần cứng rất khó chịu, tuy nhiên cách khắc phục như sau

CHÚC CÁC BẠN THÀNH CÔNG!!! yes

Những hình ảnh về dự án: 
lên
22 thành viên đã đánh giá bài viết này hữu ích.
Các dự án được truyền cảm hứng

Cách dùng Module L298N để điều khiển 4 động cơ DC

Trên cộng đồng đã có nhiều bài viết về động cơ, nhưng chưa có bài viết nào nói về cách để điều khiển cùng 1 lúc 4 động cơ mà chỉ dùng 1 module L298N. Nên hôm nay mình sẽ chia sẻ về cách để điều khiển cùng lúc 4 động cơ trên 1 module L298N.

lên
25 thành viên đã đánh giá bài viết này hữu ích.
Các bài viết cùng tác giả

LCD Graphic 128x64 dòng KS0108 VÀ ST7920 - Viết, vẽ và làm mọi thứ với LCD

Graphic LCD (gọi tắt là GLCD) loại chấm không màu là các loại màn hình tinh thể lỏng nhỏ dùng để hiển thị chữ, số hoặc hình ảnh. Khác với Text LCD, GLCD không được chia thành các ô để hiển thị các mã ASCII vì GLCD không có bộ nhớ CGRAM (Character Generation RAM). GLCD 128x64 có 128 cột và 64 hàng tương ứng có 128x64=8192 chấm (dot). Mỗi chấm tương ứng với 1 bit dữ liệu, và như thế cần 8192 bits hay 1024 bytes RAM để chứa dữ liệu hiển thị đầy mỗi 128x64 GLCD. Tùy theo loại chip điều khiển, nguyên lý hoạt động của GLCD có thể khác nhau, trong bài này tôi giới thiệu loại GLCD được điều khiển bởi chip KS0108 của Samsung, có thể nói GLCD với KS0108 là phổ biến nhất trong các loại GLCD loại này (chấm, không màu). Hình 1 là hình ảnh thật của 1 GLCD 128x64 điều khiển bởi KS0108.

lên
26 thành viên đã đánh giá bài viết này hữu ích.

Giao tiếp giữa 2 boad Arduino ở cự li xa 1000m bằng chuẩn giao tiếp RS-485

Mình đã có 1 bài viết hướng dẫn về cách giao tiếp giữa 2 arduino bằng i2c, 1 câu hỏi đặt ra "Đối với trường hợp 2 arduino cách xa nhau 50-100m thì sẽ thế nào?", Tất nhiên đối với cự ly như vậy, giao tiếp i2c vẫn có thể thực hiện được nhưng với yêu cầu sử dụng cáp kết nối và nhiều vấn đề phức tạp khác để đối phó với vấn đề sụt giảm điện áp trên đường truyền tải tín hiệu.

Bài viết này mình xin đề cập đến chuẩn giao tiếp RS-485,giúp giao tiếp 2 boad arduino ở cự ly 1000m thậm chí có thể lên tới 1200m (4000feet)

lên
23 thành viên đã đánh giá bài viết này hữu ích.