Mundarija:

MP3 kodini hal qilish uchun Arduino kutubxonasi: 4 qadam
MP3 kodini hal qilish uchun Arduino kutubxonasi: 4 qadam

Video: MP3 kodini hal qilish uchun Arduino kutubxonasi: 4 qadam

Video: MP3 kodini hal qilish uchun Arduino kutubxonasi: 4 qadam
Video: Output DC or AC Voltage using MCP4725 DAC with LCD and PWM to Voltage Converter with Arduino 2024, Noyabr
Anonim
MP3 kodini hal qilish uchun Arduino kutubxonasi
MP3 kodini hal qilish uchun Arduino kutubxonasi
MP3 kodini hal qilish uchun Arduino kutubxonasi
MP3 kodini hal qilish uchun Arduino kutubxonasi

ESP32 va ARM M seriyali tezkor mikrokontrolderlarning tarqalishi oshganligi sababli MP3 -ni dekodlash endi maxsus uskunalar yordamida amalga oshirilmaydi. Endi dekodlash dasturiy ta'minotda amalga oshirilishi mumkin.

Earlephilhower -da juda ko'p kutubxona mavjud, u turli xil audio fayllarni dekodlash va ularni ESP mikrokontrollerlarida ijro etishni ko'rsatadi. Bundan ilhomlanib, men ba'zi kodlarni mikrokontrollerlarda MP3 fayllarini o'qishning modulli usulini yaratish uchun moslashtirdim.

Umid qilamanki, bu usul har qanday tezkor mikrokontrolderda (faqat ESP32 kartasida emas) foydalanish uchun etarlicha umumiy bo'ladi, lekin hozircha men faqat ESP32da sinab ko'rdim.

Ta'minotlar

Yuqorida aytganimdek, umid qilamanki, bu usul har qanday tezkor mikrokontroller uchun ishlaydi, lekin bunday bo'lmasligi mumkin. Shunday qilib, natijalarimni takrorlash uchun sizga kerak bo'ladi:

  • ESP32 kartasi
  • SD uzilish taxtasi
  • SD -karta
  • Jumper simlari
  • non taxtasi
  • mikro USB kabeli (eskizni yuklash uchun)
  • Arduino IDE

1 -qadam: elektron jadvalni joylashtirish

Elektron jadvalni joylashtirish
Elektron jadvalni joylashtirish

ESP32 va SD -karta bo'laklarini non paneliga qo'ying.

2 -qadam: SD -kartani ulash

SD -kartani ulash
SD -kartani ulash

SD -karta ulanishlari (ESP32 SD uzilishi) quyidagicha:

GND GND

3v3 VDD

23 DI (MOSI)

19 DO (MISO)

18 SCLK

5 CS

E'tibor bering, agar siz boshqa mikrokontrolderdan foydalansangiz, bu ulanishlar boshqacha bo'ladi.

3 -qadam: dasturiy ta'minot kutubxonalari

agar sizda ESP-IDF o'rnatilmagan bo'lsa, ularni o'z veb-saytiga o'ting va o'rnating.

Keyin mikrokoderlar kutubxonasini o'rnating. Siz buni omborni yuklab olish va Arduino kutubxonalari papkasiga joylashtirish orqali qilishingiz mumkin. Hozirgi vaqtda mikrokoderlar kutubxonasi.wav va.mp3 fayllarini qo'llab -quvvatlaydi.

Formatidan qat'i nazar, har bir sinf bilan bog'liq bo'lgan bir nechta umumiy usullar mavjud va ular quyidagi kodda yoritilgan. Bularga ba'zi fayllar metadatasini olish va uni ketma -ket monitorga chop etish kiradi.

#"SD.h" // kiritish

#include "mp3.h" // dekoder #include "pcm.h" // xom audio ma'lumotlar konteyner mp3 MP3; void setup () {Serial.begin (115200); // Serial SD.begin () ni sozlash; // SD ulanishini o'rnatish Fayl fayli = SD.open ("/cc.mp3"); // MP3 faylini oching MP3.begin (fayl); // MP3 sinfiga MP3.getMetadata () ni qanday fayl bilan ishlashini ayting; // metadata ma'lumotlarini olish Serial.print ("Bitta namuna uchun bitlar:"); Serial.println (MP3.bitsPerSample); // Serial.print namuna uchun bitlarni chop etish ("Namuna darajasi:"); Serial.println (MP3. Fs); // va namuna tezligi} void loop () {}

4 -qadam: MP3 ma'lumotlarini ketma -ket monitorda joylashtiring

MP3 ma'lumotlarini ketma -ket monitorda joylashtiring
MP3 ma'lumotlarini ketma -ket monitorda joylashtiring

Quyidagi kod yordamida siz ketma -ket monitorda ba'zi audio ma'lumotlarni chizishingiz mumkin. Bu juda sekin bo'ladi, lekin MP3 kutubxonasidan qanday foydalanishni ko'rsatib beradi. Shuningdek, u ma'lumotni 16 marta kamaytiradi, shuning uchun ma'lumotlar chizilganida u audio to'lqin shakliga o'xshaydi. Bu kod SPI_MP3_Serial.ino misolidan olingan bo'lib, u mikrokoderlar kutubxonasi bilan birga keladi. Albatta, oldinga siljish bilan siz bu audio ma'lumotni qandaydir tarzda ijro etishni xohlaysiz, lekin bu boshqa o'rgatiladigan mavzu.

#"SD.h" // kiritish

#include "mp3.h" // dekoder mp3 MP3; // MP3 sinf pcm audio; // xom audio ma'lumotlarning bo'shligini sozlash () {Serial.begin (115200); // Serial SD.begin () ni sozlash; // SD ulanishini o'rnatish Fayl fayli = SD.open ("/cc.mp3"); // MP3 faylini oching MP3.begin (fayl); // Faylni MP3 sinfiga o'tkazing} void loop () {audio = MP3.decode (); // Audio ma'lumotlarni pcm sinfiga dekodlash / * audio.interleavedda 32 ta namuna bor (16 ta chap va 16 ta o'ngda) *, lekin biz faqat har bir kanalda birinchi ma'lumot nuqtasini tuzamiz. * Bu ma'lumotni 16 baravar kamaytiradi (faqat to'lqin shaklini ko'rish uchun) */ Serial.print (audio.interleaved [0]); // chap kanal Serial.print (""); Serial.println (audio.interleaved [1]); // o'ng kanal}

Tavsiya: