Πίνακας περιεχομένων:

Βιβλιοθήκη Arduino για αποκωδικοποίηση MP3: 4 βήματα
Βιβλιοθήκη Arduino για αποκωδικοποίηση MP3: 4 βήματα

Βίντεο: Βιβλιοθήκη Arduino για αποκωδικοποίηση MP3: 4 βήματα

Βίντεο: Βιβλιοθήκη Arduino για αποκωδικοποίηση MP3: 4 βήματα
Βίντεο: Lesson 101: Using IR Remote to control TV, AC Bulb with Relay, DC Motor and Servo Motor 2024, Ιούλιος
Anonim
Βιβλιοθήκη Arduino για αποκωδικοποίηση MP3
Βιβλιοθήκη Arduino για αποκωδικοποίηση MP3
Βιβλιοθήκη Arduino για αποκωδικοποίηση MP3
Βιβλιοθήκη Arduino για αποκωδικοποίηση MP3

Λόγω της αυξημένης επικράτησης γρήγορων μικροελεγκτών όπως το ESP32 και η σειρά ARM M, η αποκωδικοποίηση MP3 δεν απαιτείται πλέον να γίνεται από εξειδικευμένο υλικό. Η αποκωδικοποίηση μπορεί πλέον να γίνει σε λογισμικό.

Υπάρχει μια μεγάλη βιβλιοθήκη διαθέσιμη από το earlephilhower που δείχνει πώς να αποκωδικοποιήσετε μια μεγάλη ποικιλία αρχείων ήχου και να τα παίξετε σε μικροελεγκτές ESP. Εμπνευσμένο από αυτό, προσάρμοσα μέρος του κώδικα για να δημιουργήσω μια αρθρωτή μέθοδο ανάγνωσης αρχείων MP3 σε μικροελεγκτές.

Η ελπίδα μου είναι ότι αυτή η μέθοδος θα είναι αρκετά γενική για χρήση σε οποιοδήποτε αρκετά γρήγορο μικροελεγκτή (όχι μόνο σε έναν πίνακα ESP32), αλλά μέχρι τώρα έχω δοκιμάσει μόνο σε ένα ESP32.

Προμήθειες

Όπως είπα και πριν, ελπίζω ότι αυτή η μέθοδος θα λειτουργήσει για οποιονδήποτε γρήγορο μικροελεγκτή, αλλά μπορεί και όχι. Επομένως, για να επαναλάβετε τα αποτελέσματά μου θα χρειαστείτε:

  • Μια πλακέτα ESP32
  • SD σανίδα ξεμπλοκαρίσματος
  • κάρτα SD
  • Jumper Wires
  • σανίδα ψωμιού
  • καλώδιο micro USB (για μεταφόρτωση σκίτσου)
  • Arduino IDE

Βήμα 1: Τοποθέτηση του Breadboard

Τοποθέτηση του Breadboard
Τοποθέτηση του Breadboard

Τοποθετήστε το ξεμπλοκάρισμα ESP32 και κάρτας SD στο breadboard.

Βήμα 2: Καλωδίωση της κάρτας SD

Καλωδίωση της κάρτας SD
Καλωδίωση της κάρτας SD

Οι συνδέσεις κάρτας SD (ESP32 SD breakout) είναι οι εξής:

GND GND

3v3 VDD

23 DI (MOSI)

19 DO (MISO)

18 SCLK

5 CS

Λάβετε υπόψη ότι αυτές οι συνδέσεις θα είναι διαφορετικές εάν χρησιμοποιείτε διαφορετικό μικροελεγκτή.

Βήμα 3: Οι βιβλιοθήκες λογισμικού

εάν δεν έχετε εγκαταστήσει το ESP-IDF, μεταβείτε στον ιστότοπό τους και εγκαταστήστε τον.

Στη συνέχεια, εγκαταστήστε τη βιβλιοθήκη μικροκωδικοποιητή. Μπορείτε να το κάνετε αυτό κατεβάζοντας το αποθετήριο και τοποθετώντας το στο φάκελο Arduino Libraries. Η βιβλιοθήκη μικροκωδικοποιητή υποστηρίζει προς το παρόν αρχεία.wav και.mp3.

Ανεξάρτητα από τη μορφή, υπάρχουν μερικές κοινές μέθοδοι που σχετίζονται με κάθε κλάση και καλύπτονται στον παρακάτω κώδικα. Αυτά περιλαμβάνουν τη λήψη ορισμένων μεταδεδομένων αρχείων και την εκτύπωσή τους στη σειριακή οθόνη.

#include "SD.h" // είσοδος

#include "mp3.h" // αποκωδικοποιητής #include "pcm.h" // raw MP3 audio data container mp3; void setup () {Serial.begin (115200); // Setup Serial SD.begin (); // Ρύθμιση σύνδεσης SD Αρχείο αρχείου = SD.open ("/cc.mp3"); // Άνοιγμα αρχείου MP3 MP3.begin (αρχείο). // πείτε στην τάξη MP3 ποιο αρχείο θα επεξεργαστεί το MP3.getMetadata (); // λάβετε το metdadata Serial.print ("Bits per Sample:"); Serial.println (MP3.bitsPerSample); // κομμάτια εκτύπωσης ανά δείγμα Serial.print ("Ποσοστό δείγματος:"); Serial.println (MP3. Fs); // και δείγμα ρυθμού} void loop () {}

Βήμα 4: Σχεδιάστε δεδομένα MP3 στη σειριακή οθόνη

Σχεδιάστε δεδομένα MP3 στη σειριακή οθόνη
Σχεδιάστε δεδομένα MP3 στη σειριακή οθόνη

Με τον παρακάτω κώδικα μπορείτε να σχεδιάσετε ορισμένα δεδομένα ήχου στη Σειριακή οθόνη. Αυτό θα είναι πολύ αργό, αλλά θα σας δείξει πώς να χρησιμοποιήσετε τη βιβλιοθήκη MP3. Χαμηλώνει επίσης τα δεδομένα κατά συντελεστή 16, έτσι ώστε όταν σχεδιάζονται τα δεδομένα να μοιάζει με ηχητική κυματομορφή. Αυτός ο κωδικός λαμβάνεται από το παράδειγμα SPI_MP3_Serial.ino που συνοδεύει τη βιβλιοθήκη μικροκωδικοποιητή. Φυσικά, προχωρώντας προς τα εμπρός, θα θέλετε να παίξετε με κάποιο τρόπο αυτά τα ηχητικά δεδομένα, αλλά αυτό είναι το θέμα μιας διαφορετικής διδακτικής.

#include "SD.h" // είσοδος

#include "mp3.h" // αποκωδικοποιητής mp3 MP3; // Κλάση MP3 pcm ήχου. // ακατέργαστα δεδομένα ήχου void setup () {Serial.begin (115200); // Setup Serial SD.begin (); // Ρύθμιση σύνδεσης SD Αρχείο αρχείου = SD.open ("/cc.mp3"); // Άνοιγμα αρχείου MP3 MP3.begin (αρχείο). // Μεταφορά αρχείου στην κλάση MP3} void loop () {audio = MP3.decode (); // Αποκωδικοποιήστε τα δεδομένα ήχου σε κλάση pcm / * υπάρχουν 32 δείγματα στο audio.interleaved (16 αριστερά και 16 δεξιά) * αλλά θα σχεδιάσουμε μόνο το πρώτο σημείο δεδομένων σε κάθε κανάλι. * Αυτό μειώνει αποτελεσματικά τα δεδομένα κατά συντελεστή 16 (για * προβολή μόνο της κυματομορφής) */ Serial.print (audio.interleaved [0]). // αριστερό κανάλι Serial.print (""); Serial.println (audio.interleaved [1]); // δεξί κανάλι}

Συνιστάται: