Სარჩევი:

Arduino ბიბლიოთეკა MP3 დეკოდირებისთვის: 4 ნაბიჯი
Arduino ბიბლიოთეკა MP3 დეკოდირებისთვის: 4 ნაბიჯი

ვიდეო: Arduino ბიბლიოთეკა MP3 დეკოდირებისთვის: 4 ნაბიჯი

ვიდეო: Arduino ბიბლიოთეკა MP3 დეკოდირებისთვის: 4 ნაბიჯი
ვიდეო: 7 ПОЛЕЗНЫХ устройств на АРДУИНО, которые можно собрать за 15 минут. 2024, ივლისი
Anonim
არდუინოს ბიბლიოთეკა MP3 დეკოდირებისთვის
არდუინოს ბიბლიოთეკა MP3 დეკოდირებისთვის
არდუინოს ბიბლიოთეკა MP3 დეკოდირებისთვის
არდუინოს ბიბლიოთეკა MP3 დეკოდირებისთვის

სწრაფი მიკროკონტროლერების გავრცელების გამო, როგორიცაა ESP32 და ARM M სერია, MP3 დეკოდირება აღარ არის საჭირო ტექნიკის მიერ. ახლა გაშიფვრა შესაძლებელია პროგრამულ უზრუნველყოფაში.

არსებობს დიდი ბიბლიოთეკა earlephilhower– დან, რომელიც აჩვენებს, თუ როგორ ხდება სხვადასხვა აუდიო ფაილების დეკოდირება და მათი დაკვრა ESP მიკროკონტროლერებზე. ამით შთაგონებულმა მე შევარჩიე ზოგიერთი კოდი მიკროკონტროლერებზე MP3 ფაილების კითხვის მოდულური მეთოდის შესაქმნელად.

მე ვიმედოვნებ, რომ ეს მეთოდი იქნება საკმაოდ ზოგადი ნებისმიერი სწრაფი მიკროკონტროლერის (არა მხოლოდ ESP32 დაფაზე) გამოსაყენებლად, მაგრამ ჯერჯერობით მე მხოლოდ ESP32– ზე გამოვცადე.

მარაგები

როგორც ადრე ვთქვი, ვიმედოვნებ, რომ ეს მეთოდი იმუშავებს ნებისმიერ სწრაფ მიკროკონტროლერზე, მაგრამ შეიძლება არა. ამიტომ ჩემი შედეგების გამეორებისთვის დაგჭირდებათ:

  • ESP32 დაფა
  • SD გარღვევის დაფა
  • SD ბარათი
  • Jumper Wires
  • პურის დაფა
  • მიკრო USB კაბელი (ესკიზის ასატვირთად)
  • Arduino IDE

ნაბიჯი 1: პურის დაფის დაგება

პურის დაფის დაგება
პურის დაფის დაგება

მოათავსეთ ESP32 და SD ბარათის გარღვევა პურის დაფაზე.

ნაბიჯი 2: SD ბარათის გაყვანილობა

SD ბარათის გაყვანილობა
SD ბარათის გაყვანილობა

SD ბარათის კავშირი (ESP32 SD გარღვევა) შემდეგია:

GND GND

3v3 VDD

23 DI (MOSI)

19 DO (MISO)

18 SCLK

5 CS

გთხოვთ გაითვალისწინოთ, რომ ეს კავშირები განსხვავებული იქნება, თუ თქვენ იყენებთ სხვა მიკროკონტროლერს.

ნაბიჯი 3: პროგრამული ბიბლიოთეკები

თუ არ გაქვთ ESP-IDF დაინსტალირებული მათ ვებგვერდზე და დააინსტალირეთ.

შემდეგ დააინსტალირეთ მიკროდეკოდერი ბიბლიოთეკა. ამის გაკეთება შეგიძლიათ საცავის გადმოტვირთვით და თქვენს Arduino ბიბლიოთეკების საქაღალდეში განთავსებით. მიკროდეკოდერი ბიბლიოთეკა ამჟამად მხარს უჭერს.wav და.mp3 ფაილებს.

ფორმატის მიუხედავად, თითოეულ კლასთან არის დაკავშირებული რამდენიმე საერთო მეთოდი და ისინი მოცემულია ქვემოთ მოცემულ კოდში. ეს მოიცავს ფაილების მეტამონაცემების მიღებას და სერიულ მონიტორზე დაბეჭდვას.

#ჩართეთ "SD.h" // შეყვანა

#ჩართეთ "mp3.h" // დეკოდირება #ჩართეთ "pcm.h" // ნედლი აუდიო მონაცემების კონტეინერი mp3 MP3; void setup () {Serial.begin (115200); // სერიული SD.begin () დაყენება (); // SD კავშირის დაყენება ფაილის ფაილი = SD.open ("/cc.mp3"); // MP3 ფაილის გახსნა MP3.begin (ფაილი); // უთხარით MP3 კლასს რა ფაილის დამუშავება MP3.getMetadata (); // მიიღეთ მეტდანაცემების 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 აუდიო; // ნედლი აუდიო მონაცემების ბათილად დაყენება () {Serial.begin (115200); // სერიული SD.begin () დაყენება (); // SD კავშირის დაყენება ფაილის ფაილი = SD.open ("/cc.mp3"); // MP3 ფაილის გახსნა MP3.begin (ფაილი); // ფაილის გადატანა MP3 კლასში} void loop () {audio = MP3.decode (); // აუდიო მონაცემების გაშიფვრა pcm კლასში / * აუდიოში არის 32 ნიმუში. ინტერლეიდირებული (16 მარცხნივ და 16 მარჯვნივ) *, მაგრამ ჩვენ ვაპირებთ მხოლოდ დავამყაროთ პირველი მონაცემთა წერტილი თითოეულ არხზე. * ეს ეფექტურად ამცირებს მონაცემებს 16 ფაქტორით (მხოლოდ * ტალღის ფორმის სანახავად) */ Serial.print (audio.interleaved [0]); // მარცხენა არხი Serial.print (""); Serial.println (audio.interleaved [1]); // მარჯვენა არხი}

გირჩევთ: