विषयसूची:

MP3 डिकोडिंग के लिए Arduino लाइब्रेरी: 4 चरण
MP3 डिकोडिंग के लिए Arduino लाइब्रेरी: 4 चरण

वीडियो: MP3 डिकोडिंग के लिए Arduino लाइब्रेरी: 4 चरण

वीडियो: MP3 डिकोडिंग के लिए Arduino लाइब्रेरी: 4 चरण
वीडियो: A compete guide to mp3 Module using Arduino & ESP32 board | DFPlayer Mini | Arduino Projects 2024, नवंबर
Anonim
MP3 डिकोडिंग के लिए Arduino लाइब्रेरी
MP3 डिकोडिंग के लिए Arduino लाइब्रेरी
MP3 डिकोडिंग के लिए Arduino लाइब्रेरी
MP3 डिकोडिंग के लिए Arduino लाइब्रेरी

ESP32 और ARM M सीरीज MP3 डिकोडिंग जैसे तेज माइक्रोकंट्रोलर्स के बढ़ते प्रचलन के कारण अब विशेषज्ञ हार्डवेयर द्वारा किए जाने की आवश्यकता नहीं है। डिकोडिंग अब सॉफ्टवेयर में की जा सकती है।

इयरलेफिलहोवर से एक महान पुस्तकालय उपलब्ध है जो दिखाता है कि विभिन्न प्रकार की ऑडियो फाइलों को कैसे डीकोड किया जाए और उन्हें ईएसपी माइक्रोकंट्रोलर पर चलाया जाए। इससे प्रेरित होकर मैंने माइक्रोकंट्रोलर्स पर एमपी3 फाइलों को पढ़ने की एक मॉड्यूलर विधि बनाने के लिए कुछ कोड को अनुकूलित किया।

मेरी आशा है कि यह विधि किसी भी तेजी से पर्याप्त माइक्रोकंट्रोलर (न केवल एक ईएसपी 32 बोर्ड) पर उपयोग के लिए पर्याप्त सामान्य होगी, लेकिन अभी तक मैंने केवल ईएसपी 32 पर परीक्षण किया है।

आपूर्ति

जैसा कि मैंने पहले कहा, मुझे आशा है कि यह विधि किसी भी तेज़ माइक्रोकंट्रोलर के लिए काम करेगी, लेकिन ऐसा नहीं हो सकता है। इसलिए मेरे परिणामों को दोहराने के लिए आपको आवश्यकता होगी:

  • एक ESP32 बोर्ड
  • एसडी ब्रेकआउट बोर्ड
  • एसडी कार्ड
  • जम्पर तार
  • ब्रेड बोर्ड
  • माइक्रो यूएसबी केबल (स्केच अपलोड करने के लिए)
  • अरुडिनो आईडीई

चरण 1: ब्रेडबोर्ड बिछाना

ब्रेडबोर्ड बिछाना
ब्रेडबोर्ड बिछाना

ब्रेडबोर्ड पर ESP32 और SD कार्ड ब्रेकआउट रखें।

चरण 2: एसडी कार्ड को तार करना

एसडी कार्ड वायरिंग
एसडी कार्ड वायरिंग

एसडी कार्ड कनेक्शन (ESP32 SD ब्रेकआउट) इस प्रकार हैं:

जीएनडी जीएनडी

3v3 वीडीडी

23 डीआई (एमओएसआई)

19 डीओ (एमआईएसओ)

18 एससीएलके

5 सीएस

कृपया ध्यान दें कि यदि आप किसी भिन्न माइक्रोकंट्रोलर का उपयोग कर रहे हैं तो ये कनेक्शन भिन्न होंगे।

चरण 3: सॉफ्टवेयर पुस्तकालय

यदि आपके पास उनकी वेबसाइट पर ESP-IDF स्थापित नहीं है और इसे स्थापित करें।

फिर माइक्रोडिकोडर लाइब्रेरी स्थापित करें। आप इसे रिपॉजिटरी को डाउनलोड करके और इसे अपने Arduino लाइब्रेरी फ़ोल्डर में रखकर कर सकते हैं। माइक्रोडिकोडर लाइब्रेरी वर्तमान में.wav और.mp3 फ़ाइलों का समर्थन करती है।

प्रारूप के बावजूद, प्रत्येक वर्ग से जुड़े कुछ सामान्य तरीके हैं और उन्हें नीचे दिए गए कोड में शामिल किया गया है। इनमें कुछ फाइलें मेटाडेटा प्राप्त करना और इसे सीरियल मॉनिटर पर प्रिंट करना शामिल है।

#शामिल "SD.h" // इनपुट

#include "mp3.h" // डिकोडर #include "pcm.h" // रॉ ऑडियो डेटा कंटेनर mp3 MP3; शून्य सेटअप () {Serial.begin(११५२००); // सेटअप सीरियल SD.begin (); // सेटअप एसडी कनेक्शन फ़ाइल फ़ाइल = एसडी.ओपन ("/ cc.mp3"); // एक एमपी 3 फ़ाइल खोलें MP3.begin (फ़ाइल); // MP3 वर्ग को बताएं कि MP3.getMetadata () को संसाधित करने के लिए कौन सी फ़ाइल है; // मेटाडाटा सीरियल.प्रिंट प्राप्त करें ("प्रति नमूना बिट्स:"); Serial.println (MP3.bitsPerSample); // प्रति नमूना प्रिंट बिट्स सीरियल.प्रिंट ("नमूना दर:"); Serial.println (MP3. Fs); // और नमूना दर} शून्य लूप () { }

चरण 4: सीरियल मॉनिटर पर एमपी3 डेटा प्लॉट करें

सीरियल मॉनिटर पर एमपी3 डेटा प्लॉट करें
सीरियल मॉनिटर पर एमपी3 डेटा प्लॉट करें

नीचे दिए गए कोड से आप सीरियल मॉनीटर पर कुछ ऑडियो डेटा प्लॉट कर सकते हैं। यह बहुत धीमा होगा लेकिन आपको दिखाएगा कि एमपी 3 लाइब्रेरी का उपयोग कैसे करें। यह डेटा को 16 के फ़ैक्टर से भी घटाता है ताकि जब डेटा प्लॉट किया जाए तो यह एक ऑडियो तरंग जैसा दिखता है। यह कोड उदाहरण SPI_MP3_Serial.ino से लिया गया है जो माइक्रोडिकोडर लाइब्रेरी के साथ आता है। बेशक, आगे बढ़ते हुए आप इस ऑडियो डेटा को किसी तरह चलाना चाहेंगे, लेकिन यह एक अलग निर्देश का विषय है।

#शामिल "SD.h" // इनपुट

#include "mp3.h" // डिकोडर mp3 MP3; // एमपी 3 क्लास पीसीएम ऑडियो; // कच्चा ऑडियो डेटा शून्य सेटअप () {Serial.begin (115200); // सेटअप सीरियल SD.begin (); // सेटअप एसडी कनेक्शन फ़ाइल फ़ाइल = एसडी.ओपन ("/ cc.mp3"); // एक एमपी 3 फ़ाइल खोलें MP3.begin (फ़ाइल); // MP3 क्लास में फाइल पास करें} शून्य लूप () {ऑडियो = MP3.decode (); // ऑडियो डेटा को pcm वर्ग में डिकोड करें /* audio.interleaved में 32 नमूने हैं (16 बाएं और 16 दाएं) * लेकिन हम केवल प्रत्येक चैनल में पहला डेटा बिंदु प्लॉट करने जा रहे हैं। * यह प्रभावी रूप से डेटा को 16 के कारक से कम कर देता है (* केवल तरंग देखने के लिए) */ Serial.print(audio.interleaved[0]); // बायां चैनल सीरियल.प्रिंट (""); Serial.println(audio.interleaved[1]); // सही चैनल }

सिफारिश की: