Բովանդակություն:

Arduino գրադարան MP3 վերծանման համար. 4 քայլ
Arduino գրադարան MP3 վերծանման համար. 4 քայլ

Video: Arduino գրադարան MP3 վերծանման համար. 4 քայլ

Video: Arduino գրադարան MP3 վերծանման համար. 4 քայլ
Video: 7 ПОЛЕЗНЫХ устройств на АРДУИНО, которые можно собрать за 15 минут. 2024, Նոյեմբեր
Anonim
Arduino գրադարան MP3 վերծանման համար
Arduino գրադարան MP3 վերծանման համար
Arduino գրադարան MP3 վերծանման համար
Arduino գրադարան MP3 վերծանման համար

Արագ միկրոկոնտրոլերների տարածվածության պատճառով, ինչպիսիք են ESP32- ը և ARM M սերիան, MP3 ապակոդավորումն այլևս չի պահանջվում կատարել հատուկ սարքավորումներով: Այժմ վերծանումը կարող է կատարվել ծրագրային ապահովման մեջ:

Earlephilhower- ից հասանելի է մի մեծ գրադարան, որը ցույց է տալիս, թե ինչպես կարելի է վերծանել աուդիո ֆայլերի լայն տեսականի և դրանք նվագարկել ESP միկրոկոնտրոլերների վրա: Ոգեշնչվելով դրանից ՝ ես որոշ կոդեր հարմարեցրի ՝ միկրոկոնտրոլերների վրա MP3 ֆայլեր կարդալու մոդուլային մեթոդ ստեղծելու համար:

Իմ հույսն այն է, որ այս մեթոդը բավական ընդհանուր կլինի ցանկացած արագ միկրոկոնտրոլերի (ոչ միայն ESP32 տախտակի) օգտագործման համար, բայց մինչ այժմ ես փորձարկել եմ միայն ESP32- ի վրա:

Պարագաներ

Ինչպես արդեն ասացի, հուսով եմ, որ այս մեթոդը կգործի ցանկացած արագ միկրոկոնտրոլերի համար, բայց կարող է և ոչ: Հետևաբար, իմ արդյունքները կրկնելու համար ձեզ հարկավոր է.

  • ESP32 տախտակ
  • SD բեկման տախտակ
  • SD քարտ
  • Jumper լարերը
  • տախտակ
  • միկրո USB մալուխ (էսքիզ վերբեռնելու համար)
  • Arduino IDE

Քայլ 1: Տեղադրեք Breadboard- ը

Տեղադրելով դուրս Breadboard
Տեղադրելով դուրս Breadboard

Տեղադրեք ESP32 և SD քարտերի բեկորները սեղանի վրա:

Քայլ 2: SD քարտի միացում

SD քարտի միացում
SD քարտի միացում

SD քարտի միացումները (ESP32 SD breakout) հետևյալն են.

GND GND

3v3 VDD

23 DI (MOSI)

19 ԱՆԵԼ (MISO)

18 SCLK

5 CS

Խնդրում ենք նկատի ունենալ, որ այս միացումները տարբեր կլինեն, եթե այլ միկրոկոնտրոլեր եք օգտագործում:

Քայլ 3: Softwareրագրային գրադարաններ

եթե ESP-IDF- ը տեղադրված չէ, անցեք նրանց կայք և տեղադրեք այն:

Այնուհետև տեղադրեք միկրոոդակոդավորման գրադարանը: Դուք կարող եք դա անել ՝ ներբեռնելով պահեստը և տեղադրելով այն ձեր Arduino գրադարանների պանակում: Միկրոդեկոդավորող գրադարանը ներկայումս աջակցում է.wav և.mp3 ֆայլերը:

Անկախ ձևաչափից, յուրաքանչյուր դասի հետ կապված մի քանի սովորական մեթոդներ կան, որոնք ծածկված են ստորև նշված կոդով: Դրանք ներառում են որոշ ֆայլերի մետատվյալներ ստանալը և դրանք սերիական մոնիտորի վրա տպելը:

#ներառել «SD.h» // մուտքագրում

#ներառել «mp3.h» // ապակոդավորող #ներառել «pcm.h» // չմշակված աուդիո տվյալների բեռնարկղ mp3 MP3; void setup () {Serial.begin (115200); // Կարգավորել Serial SD.begin (); // Կարգավորել SD միացում Ֆայլի ֆայլ = SD.open ("/cc.mp3"); // Բացեք MP3 ֆայլ MP3.begin (ֆայլ); // ասեք MP3 դասին, թե ինչ ֆայլ է մշակվելու MP3.getMetadata (); // ստանալ metdadata Serial.print («Բիթեր մեկ նմուշի համար»); Serial.println (MP3.bitsPerSample); // տպել բիթեր մեկ նմուշի համար Serial.print ("Sample Rate:"); Serial.println (MP3. Fs); // և նմուշի տոկոսադրույքը} void loop () {}

Քայլ 4. Ստորև բերված MP3 տվյալները սերիական մոնիտորի վրա

Գծեք MP3 տվյալները սերիական մոնիտորի վրա
Գծեք MP3 տվյալները սերիական մոնիտորի վրա

Ստորև բերված ծածկագրով դուք կարող եք որոշ աուդիո տվյալներ գծել սերիական մոնիտորի վրա: Սա շատ դանդաղ կլինի, բայց ցույց կտա ձեզ, թե ինչպես օգտագործել MP3 գրադարանը: Այն նաև նվազեցնում է տվյալները 16 գործոնով, այնպես որ երբ տվյալները գծապատկերվում են, այն նման է աուդիո ալիքի ձևի: Այս կոդը վերցված է SPI_MP3_Serial.ino- ի օրինակից, որն ուղեկցվում է միկրոոդակոդավորող գրադարանով: Իհարկե, առաջ գնալով, կցանկանաք ինչ -որ կերպ նվագարկել այս աուդիո տվյալները, բայց դա այլ ուսանելի թեմա է:

#ներառել «SD.h» // մուտքագրում

#ներառել «mp3.h» // ապակոդավորիչ MP3 MP3; // MP3 դասի pcm աուդիո; // raw audio data void setup () {Serial.begin (115200); // Կարգավորել Serial SD.begin (); // Կարգավորել SD միացում Ֆայլի ֆայլ = SD.open ("/cc.mp3"); // Բացեք MP3 ֆայլ MP3.begin (ֆայլ); // Ֆայլը փոխանցել MP3 դասին} void loop () {audio = MP3.decode (); // Ձայնային տվյալները վերծանեք pcm դասարանում / * audio.interleaved- ում կան 32 նմուշներ (16 ձախ և 16 աջ) *, բայց մենք պատրաստվում ենք յուրաքանչյուր ալիքում գծել միայն տվյալների առաջին կետը: * Սա արդյունավետորեն նվազեցնում է տվյալները 16 գործոնով (միայն * ալիքի ձևը դիտելու համար) */ Serial.print (audio.interleaved [0]); // ձախ ալիք Serial.print (""); Serial.println (audio.interleaved [1]); // աջ ալիք}

Խորհուրդ ենք տալիս: