Mục lục:
- Quân nhu
- Bước 1: Đặt ra bảng mạch
- Bước 2: Kết nối thẻ SD
- Bước 3: Thư viện phần mềm
- Bước 4: Vẽ dữ liệu MP3 trên Serial Monitor
Video: Thư viện Arduino để giải mã MP3: 4 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:31
Do sự phổ biến ngày càng tăng của các bộ vi điều khiển tốc độ cao như ESP32 và ARM M series, việc giải mã MP3 dòng M không còn được yêu cầu thực hiện bởi phần cứng chuyên dụng. Việc giải mã hiện có thể được thực hiện trong phần mềm.
Có một thư viện tuyệt vời có sẵn từ earlephilhower cho thấy cách giải mã nhiều loại tệp âm thanh và phát chúng trên vi điều khiển ESP. Lấy cảm hứng từ điều này, tôi đã điều chỉnh một số mã để tạo ra một phương pháp mô-đun để đọc các tệp MP3 trên vi điều khiển.
Hy vọng của tôi là phương pháp này sẽ đủ chung để sử dụng trên bất kỳ vi điều khiển nào đủ nhanh (không chỉ là bo mạch ESP32) nhưng hiện tại tôi mới chỉ thử nghiệm trên ESP32.
Quân nhu
Như tôi đã nói trước đây, tôi hy vọng phương pháp này sẽ hoạt động với bất kỳ bộ vi điều khiển nhanh nào, nhưng có thể không. Do đó, để tái tạo kết quả của tôi, bạn sẽ cần:
- Một bảng ESP32
- Bảng đột phá SD
- thẻ SD
- Dây nhảy
- breadboard
- cáp micro USB (để tải lên bản phác thảo)
- Arduino IDE
Bước 1: Đặt ra bảng mạch
Đặt ESP32 và thẻ SD breakout trên breadboard.
Bước 2: Kết nối thẻ SD
Các kết nối thẻ SD (ESP32 SD breakout) như sau:
GND GND
VDD 3v3
23 DI (MOSI)
19 LÀM (MISO)
18 SCLK
5 CS
Xin lưu ý rằng các kết nối này sẽ khác nhau nếu bạn đang sử dụng một bộ vi điều khiển khác.
Bước 3: Thư viện phần mềm
nếu bạn chưa cài đặt ESP-IDF, hãy truy cập trang web của họ và cài đặt nó.
Sau đó cài đặt thư viện bộ mã hóa vi mô. Bạn có thể thực hiện việc này bằng cách tải xuống kho lưu trữ và đặt nó vào thư mục Arduino Libraries của bạn. Thư viện bộ mã hóa vi mô hiện hỗ trợ các tệp.wav và.mp3.
Bất kể định dạng nào, có một vài phương thức phổ biến được liên kết với mỗi lớp và chúng được đề cập trong đoạn mã dưới đây. Chúng bao gồm nhận một số siêu dữ liệu tệp và in nó ra màn hình nối tiếp.
#include "SD.h" // đầu vào
#include "mp3.h" // bộ giải mã #include "pcm.h" // bộ chứa dữ liệu âm thanh thô mp3 MP3; void setup () {Serial.begin (115200); // Thiết lập Serial SD.begin (); // Thiết lập kết nối SD File file = SD.open ("/ cc.mp3"); // Mở tệp MP3 MP3.begin (tệp); // cho lớp MP3 biết tệp nào sẽ xử lý MP3.getMetadata (); // lấy siêu dữ liệu Serial.print ("Bits per Sample:"); Serial.println (MP3.bitsPerSample); // in các bit trên mỗi mẫu Serial.print ("Sample Rate:"); Serial.println (MP3. Fs); // và tỷ lệ mẫu} void loop () {}
Bước 4: Vẽ dữ liệu MP3 trên Serial Monitor
Với đoạn mã dưới đây, bạn có thể vẽ một số dữ liệu âm thanh trên màn hình nối tiếp. Điều này sẽ rất chậm nhưng sẽ chỉ cho bạn cách sử dụng thư viện MP3. Nó cũng làm giảm dữ liệu theo hệ số 16 để khi dữ liệu được vẽ biểu đồ, nó trông giống như một dạng sóng âm thanh. Mã này được lấy từ ví dụ SPI_MP3_Serial.ino đi kèm với thư viện bộ mã hóa vi mô. Tất nhiên, về sau, bạn sẽ muốn phát dữ liệu âm thanh này bằng cách nào đó nhưng đó là chủ đề của một hướng dẫn khác.
#include "SD.h" // đầu vào
#include "mp3.h" // bộ giải mã mp3 MP3; // Âm thanh pcm lớp MP3; // dữ liệu âm thanh thô void setup () {Serial.begin (115200); // Thiết lập Serial SD.begin (); // Thiết lập kết nối SD File file = SD.open ("/ cc.mp3"); // Mở tệp MP3 MP3.begin (tệp); // Truyền tệp sang lớp MP3} void loop () {audio = MP3.decode (); // Giải mã dữ liệu âm thanh thành lớp pcm / * có 32 mẫu trong audio.interleaved (16 trái và 16 phải) * nhưng chúng tôi sẽ chỉ vẽ điểm dữ liệu đầu tiên trong mỗi kênh. * Điều này có hiệu quả lấy mẫu dữ liệu theo hệ số 16 (để * chỉ xem dạng sóng) * / Serial.print (audio.interleaved [0]); // kênh bên trái Serial.print (""); Serial.println (audio.interleaved [1]); // kênh bên phải}
Đề xuất:
Giai điệu giai điệu Arduino đơn giản: 3 bước
Giai điệu Arduino đơn giản: Giai điệu giai điệu Arduino đơn giản là một cách bắt đầu với các dự án Arduino vì bạn chỉ tải lên mã từ phần mềm Arduino trực tiếp mà không cần phải viết gì cả
Bản đồ bãi đậu xe cho sinh viên trong khuôn viên trường đại học: 7 bước (có hình ảnh)
Bản đồ bãi đậu xe cho sinh viên trong khuôn viên trường Đại học: Nhiều sinh viên thắc mắc rằng họ có thể đậu xe ở đâu trong khuôn viên trường đại học. Để giải quyết vấn đề này, tôi đã tạo một bản đồ bãi đậu xe có ánh sáng của khu vực chính trong khuôn viên của Đại học Bang Utah. Bản đồ dành cho sinh viên để xem nhanh các tùy chọn đỗ xe là gì
Bộ giải mã giao thức điều khiển từ xa RC5 không có thư viện: 4 bước
RC5 Remote Control Protocol Decoder Without Library: trước khi giải mã rc5 đầu tiên chúng ta thảo luận về lệnh rc5 là gì và cấu trúc của nó là gì. vì vậy về cơ bản lệnh rc5 được sử dụng trong điều khiển từ xa được sử dụng trong TV, đầu đĩa CD, d2h, hệ thống rạp hát gia đình, v.v. nó có 13 hoặc 14 bit được sắp xếp theo
Arduino Text to Speech Converter sử dụng LM386 - Talking Arduino Project - Thư viện Talkie Arduino: 5 bước
Arduino Text to Speech Converter sử dụng LM386 | Talking Arduino Project | Thư viện Talkie Arduino: Xin chào các bạn, trong nhiều dự án, chúng tôi yêu cầu arduino nói một cái gì đó như đồng hồ nói hoặc nói một số dữ liệu
40 $ Kính viễn vọng Siêu viễn vọng USB, Dễ chế tạo, Nhìn thấy Miệng núi lửa trên Mặt trăng: 6 bước (có Hình ảnh)
Kính viễn vọng siêu USB 40 $, Dễ chế tạo, Nhìn thấy Miệng núi lửa trên Mặt trăng: Biến một kính viễn vọng cũ và một webcam thành một kính viễn vọng mạnh mẽ có khả năng nhìn thấy các miệng núi lửa trên mặt trăng. Bên cạnh webcam và ống kính tele, tất cả những gì bạn cần là một số vật liệu ống nước pvc tiêu chuẩn (ống, bộ điều hợp đường kính và endcaps)