विषयसूची:

ESP32 का उपयोग कर इंटरनेट रेडियो: 7 कदम (चित्रों के साथ)
ESP32 का उपयोग कर इंटरनेट रेडियो: 7 कदम (चित्रों के साथ)

वीडियो: ESP32 का उपयोग कर इंटरनेट रेडियो: 7 कदम (चित्रों के साथ)

वीडियो: ESP32 का उपयोग कर इंटरनेट रेडियो: 7 कदम (चित्रों के साथ)
वीडियो: #195 DIY Internet Radio using an ESP32 (Arduino IDE) 2024, सितंबर
Anonim
Image
Image
ESP32 का उपयोग कर इंटरनेट रेडियो
ESP32 का उपयोग कर इंटरनेट रेडियो
ESP32 का उपयोग कर इंटरनेट रेडियो
ESP32 का उपयोग कर इंटरनेट रेडियो

प्रिय दोस्तों एक और इंस्ट्रक्शनल में आपका स्वागत है! आज हम एक सस्ते ESP32 बोर्ड का उपयोग करके एक बड़े 3.5” डिस्प्ले के साथ एक इंटरनेट रेडियो डिवाइस बनाने जा रहे हैं। मानो या न मानो, अब हम १० मिनट से भी कम समय में और ३० डॉलर से कम में एक इंटरनेट रेडियो बना सकते हैं। कवर करने के लिए बहुत कुछ है, चलिए शुरू करते हैं!

कुछ महीने पहले, मैंने एक Arduino FM Radio प्रोजेक्ट पूरा किया जो बहुत अच्छा काम करता है और मेरी राय में और भी बेहतर दिखता है। यदि आप यह देखना चाहते हैं कि मैंने इस परियोजना का निर्माण कैसे किया, तो आप यहाँ निर्देशयोग्य पढ़ सकते हैं। समस्या यह है कि, हालांकि यह रेडियो शांत दिखता है, यह व्यावहारिक नहीं है क्योंकि मैं दक्षिणी ग्रीस के एक छोटे से शहर में रहता हूं और बड़े ग्रीक रेडियो स्टेशन जिन्हें मैं सुनना पसंद करता हूं, यहां ट्रांसमीटर नहीं हैं। इसलिए, मैं अपने लैपटॉप या टैबलेट पीसी पर अपने पसंदीदा रेडियो ऑनलाइन सुनता हूं जो इतना व्यावहारिक भी नहीं है। इसलिए, आज मैं एक इंटरनेट रेडियो उपकरण बनाने जा रहा हूँ ताकि मैं दुनिया भर के अपने पसंदीदा रेडियो स्टेशनों को सुन सकूं!

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

मैंने एथेंस से रियल एफएम रेडियो स्टेशन में ट्यून किया है और इन बटनों का उपयोग करके हम उस रेडियो स्टेशन को बदल सकते हैं जिसे हम सुन रहे हैं। मैंने अपने पसंदीदा रेडियो स्टेशनों को ESP32 की मेमोरी में सहेज लिया है ताकि मैं उन्हें आसानी से एक्सेस कर सकूं। इस पोटेंशियोमीटर से मैं स्पीकर का वॉल्यूम बदल सकता हूं। मैं उस रेडियो स्टेशन का नाम प्रदर्शित करता हूं जिसे हम रेट्रो यूजर इंटरफेस के साथ एक बड़े 3.5”डिस्प्ले पर सुन रहे हैं। परियोजना ठीक काम करती है और इसे बनाना बहुत आसान है।

आप उसी प्रोजेक्ट को 10 मिनट से भी कम समय में बना सकते हैं लेकिन आपको कुछ अनुभव की आवश्यकता है। यदि यह आपकी पहली परियोजना है, तो कुछ अनुभव प्राप्त करने के लिए पहले एक सरल परियोजना बनाने पर विचार करें। सरल परियोजना विचारों के लिए मेरे निर्देशों की जाँच करें और जब आप Arduino के साथ अधिक सहज हों तो इलेक्ट्रॉनिक्स इस शांत परियोजना को बनाने के लिए वापस आ जाते हैं। आइए अब अपना खुद का इंटरनेट रेडियो बनाना शुरू करें।

अद्यतन 6/6/2019

आइसोलेटर ट्रांसफॉर्मर लगाकर शोर की समस्या का समाधान किया गया है। अद्यतन शेमैटिक आरेख देखें। धन्यवाद!

चरण 1: सभी भागों को प्राप्त करें

सभी भागों को प्राप्त करें
सभी भागों को प्राप्त करें

हमें निम्नलिखित भागों की आवश्यकता होगी:

  • ESP32 ▶
  • एमपी3 डिकोडर ▶
  • अलगाव ट्रांसफार्मर ▶
  • एम्पलीफायर ▶
  • 3W स्पीकर ▶
  • 3.5" नेक्स्टियन डिस्प्ले ▶
  • पुश बटन ▶
  • ब्रेडबोर्ड ▶
  • तार ▶

परियोजना की कुल लागत लगभग 40 डॉलर है लेकिन यदि आप डिस्प्ले का उपयोग नहीं करते हैं तो परियोजना की लागत लगभग 20 डॉलर है। अद्भुत सामान। हम सिर्फ 20$ में अपना खुद का इंटरनेट रेडियो बना सकते हैं!

चरण 2: ESP32 बोर्ड

Image
Image
ESP32 बोर्ड
ESP32 बोर्ड
ESP32 बोर्ड
ESP32 बोर्ड

परियोजना का दिल, निश्चित रूप से, शक्तिशाली ESP32 बोर्ड है। यदि आप इससे परिचित नहीं हैं, तो ESP32 चिप उस लोकप्रिय ESP8266 चिप का उत्तराधिकारी है जिसका हमने अतीत में कई बार उपयोग किया है। ESP32 एक जानवर है! यह दो 32 बिट प्रोसेसिंग कोर प्रदान करता है जो 160 मेगाहर्ट्ज पर काम करते हैं, लगभग 7 डॉलर की लागत के साथ बड़ी मात्रा में मेमोरी, वाईफाई, ब्लूटूथ और कई अन्य सुविधाएं! अद्भुत सामान!

कृपया इस बोर्ड के लिए तैयार की गई विस्तृत समीक्षा देखें। मैंने इस निर्देश पर वीडियो संलग्न किया है। यह समझने में मदद करेगा कि यह चिप हमारे चीजों को हमेशा के लिए बनाने के तरीके को क्यों बदल देगी! ESP32 के बारे में सबसे रोमांचक चीजों में से एक यह है कि यह इतना शक्तिशाली होने के बावजूद, यह एक गहरी नींद मोड प्रदान करता है जिसके लिए केवल 10μΑ की धारा की आवश्यकता होती है। यह ESP32 को कम बिजली के अनुप्रयोगों के लिए आदर्श चिप बनाता है।

इस प्रोजेक्ट में, ESP32 बोर्ड इंटरनेट से जुड़ता है और फिर यह उस रेडियो स्टेशन से MP3 डेटा प्राप्त करता है जिसे हम सुन रहे हैं, और यह डिस्प्ले पर कुछ कमांड भेजता है।

चरण 3: एमपी3 डिकोडर

एमपी3 डिकोडर
एमपी3 डिकोडर
एमपी3 डिकोडर
एमपी3 डिकोडर

MP3 डेटा तब SPI इंटरफ़ेस का उपयोग करके MP3 डिकोडर मॉड्यूल को भेजा जाता है। यह मॉड्यूल VS1053 IC का उपयोग करता है। यह आईसी एक समर्पित हार्डवेयर एमपी3 डिकोडर है। यह ESP32 से MP3 डेटा प्राप्त करता है और इसे वास्तव में तेजी से ऑडियो सिग्नल में परिवर्तित करता है।

इस ऑडियो जैक पर यह जो ऑडियो सिग्नल आउटपुट करता है वह कमजोर और शोर है, इसलिए हमें इसे शोर से साफ करने और इसे बढ़ाने की जरूरत है। (यदि आप हेडफ़ोन का उपयोग कर रहे हैं, तो सिग्नल को शोर या प्रवर्धित से साफ़ करने की आवश्यकता नहीं है।) इसलिए मैं ऑडियो को शोर से साफ़ करने के लिए एक आइसोलेशन ट्रांसफ़ॉर्मर का उपयोग कर रहा हूँ और ऑडियो सिग्नल को बढ़ाने के लिए एक PAM8403 ऑडियो एम्पलीफायर का उपयोग कर रहा हूँ और फिर इसे भेज रहा हूँ। एक वक्ता को। मैंने एमपी३ स्ट्रीम को बदलने के लिए ईएसपी३२ में दो बटन भी जोड़े हैं जिनसे हम डेटा प्राप्त कर रहे हैं और रेडियो स्टेशन को प्रदर्शित करने के लिए एक नेक्स्टियन डिस्प्ले जिसे हम सुन रहे हैं।

चरण 4: अगला प्रदर्शन

Image
Image
सभी भागों को जोड़ना
सभी भागों को जोड़ना

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

नेक्स्टियन डिस्प्ले नए तरह के डिस्प्ले हैं। उनके पीछे अपना एआरएम प्रोसेसर है जो डिस्प्ले को चलाने और ग्राफिकल यूजर इंटरफेस बनाने के लिए जिम्मेदार है। तो, हम उन्हें किसी भी माइक्रोकंट्रोलर के साथ उपयोग कर सकते हैं और शानदार परिणाम प्राप्त कर सकते हैं। मैंने इस नेक्स्टियन डिस्प्ले की एक विस्तृत समीक्षा तैयार की है जो गहराई से बताती है कि वे कैसे काम करते हैं, उनका उपयोग कैसे करें और उनकी कमियां। आप इसे यहां पढ़ सकते हैं, या संलग्न वीडियो देख सकते हैं।

चरण 5: सभी भागों को जोड़ना

सभी भागों को जोड़ना
सभी भागों को जोड़ना
सभी भागों को जोड़ना
सभी भागों को जोड़ना

अब हमें बस इतना करना है कि इस योजनाबद्ध आरेख के अनुसार सभी भागों को एक साथ जोड़ना है। आप यहां संलग्न योजनाबद्ध आरेख पा सकते हैं। कनेक्शन सीधा है।

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

प्रत्येक ऑडियो चैनल को एम्पलीफायर से कनेक्ट करने से पहले मौजूद किसी भी शोर को दूर करने के लिए आइसोलेशन ट्रांसफॉर्मर से गुजरना होगा।

डिस्प्ले पर डेटा भेजने के लिए, हमें केवल एक तार को ESP32 के TX0 पिन से कनेक्ट करना होगा। भागों को जोड़ने के बाद, हमें कोड को ESP32 पर लोड करना होगा, और हमें GUI को नेक्स्टियन डिस्प्ले पर लोड करना होगा।

GUI को नेक्स्टियन डिस्प्ले में लोड करने के लिए, InternetRadio.tft फ़ाइल को कॉपी करें जिसे मैं आपके साथ एक खाली एसडी कार्ड में साझा करने जा रहा हूँ। एसडी कार्ड को डिस्प्ले के पीछे एसडी कार्ड स्लॉट में डालें। फिर डिस्प्ले को पावर दें, और GUI लोड हो जाएगा। फिर एसडी कार्ड निकालें और फिर से पावर कनेक्ट करें।

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

चरण 6: परियोजना का कोड

परियोजना का कोड
परियोजना का कोड
परियोजना का कोड
परियोजना का कोड

सबसे पहले मैं आपको कुछ दिखाता हूँ। परियोजना का कोड कोड की 140 पंक्तियों से कम है। इसके बारे में सोचें, हम 3.5” डिस्प्ले के साथ 140 लाइन कोड के साथ एक इंटरनेट रेडियो बना सकते हैं, यह आश्चर्यजनक है। हम यह सब विभिन्न पुस्तकालयों का उपयोग करके प्राप्त कर सकते हैं जिनमें कोड की हजारों लाइनें होती हैं। यह Arduino और ओपन सोर्स समुदाय की शक्ति है। यह निर्माताओं के लिए चीजों को आसान बनाता है।

इस परियोजना में, मैं ESP32 बोर्ड के लिए VS1053 पुस्तकालय का उपयोग कर रहा हूँ।

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

चार एसएसआईडी = "आपका एसएसआईडी"; // आपका नेटवर्क SSID (नाम) चार पास = "yourWifiPassword"; // आपका नेटवर्क पासवर्ड

// कुछ रेडियो स्टेशन

चार *होस्ट[4] = {"149.255.59.162", "रेडियोस्ट्रीमिंग.एर्ट.जीआर", "realfm.live24.gr", "secure1.live24.gr"}; चार *पथ[4] = {"/1", "/ert-kosmos", "/realfm", "/skai1003"}; इंट पोर्ट [४] = {८०६२, ८०, ८०, ८०};

मैंने इस उदाहरण में 4 रेडियो स्टेशनों को शामिल किया है।

सेटअप फ़ंक्शन में हम बटन में इंटरप्ट संलग्न करते हैं, हम एमपी 3 डिकोडर मॉड्यूल को इनिशियलाइज़ करते हैं और हम वाई-फाई से कनेक्ट होते हैं।

व्यर्थ व्यवस्था () {

सीरियल.बेगिन (९६००); देरी (500); एसपीआई। शुरू ();

पिनमोड (पिछला बटन, INPUT_PULLUP);

पिनमोड (अगला बटन, INPUT_PULLUP);

अटैचइंटरप्ट (डिजिटलपिनटोइंटरप्ट (पिछला बटन), पिछलाबटनइंटरप्ट, फॉलिंग);

अटैचइंटरप्ट (डिजिटलपिनटोइंटरप्ट (अगला बटन), नेक्स्टबटनइंटरप्ट, फॉलिंग); initMP3Decoder (); कनेक्ट टॉवाईफाई (); }

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

शून्य लूप () { अगर (रेडियोस्टेशन! = पिछला रेडियो स्टेशन) {station_connect (रेडियोस्टेशन); पिछलारेडियोस्टेशन = रेडियोस्टेशन; } अगर (क्लाइंट.उपलब्ध ()> 0) { uint8_t बाइट्सरेड = क्लाइंट.रीड (mp3buff, 32); प्लेयर.प्लेचंक (एमपी3बफ, बाइटरीड); } }

बस इतना ही! जब उपयोगकर्ता एक बटन दबाता है, तो एक बाधा उत्पन्न होती है, और एक चर के मान को बदल देता है जो बताता है कि किस स्ट्रीम से कनेक्ट होना है।

शून्य IRAM_ATTR पिछलाबटनइंटरप्ट () {

स्थिर अहस्ताक्षरित लंबा last_interrupt_time = 0;

अहस्ताक्षरित लंबा इंटरप्ट_टाइम = मिली (); अगर (इंटरप्ट_टाइम - लास्ट_इंटरप्ट_टाइम> 200) { अगर (रेडियोस्टेशन> 0) रेडियोस्टेशन--; अन्य रेडियोस्टेशन = 3; } लास्ट_इंटरप्ट_टाइम = इंटरप्ट_टाइम; }

डिस्प्ले को अपडेट करने के लिए, हम बस कुछ कमांड्स को सीरियल पोर्ट पर भेजते हैं।

शून्य drawRadioStationName (int id) {स्ट्रिंग कमांड; स्विच (आईडी) {केस 0: कमांड = "p1.pic=2"; सीरियल.प्रिंट (कमांड); एंडनेक्स्टियन कमांड (); टूटना; //1940 यूके रेडियो केस 1: कमांड = "p1.pic=3"; सीरियल.प्रिंट (कमांड); एंडनेक्स्टियन कमांड (); टूटना; // कोसमोस ग्रीक केस 2: कमांड = "p1.pic=4"; सीरियल.प्रिंट (कमांड); एंडनेक्स्टियन कमांड (); टूटना; // रियल एफएम ग्रीक केस 3: कमांड = "p1.pic=5"; सीरियल.प्रिंट (कमांड); एंडनेक्स्टियन कमांड (); टूटना; // एसकेएआई १००.३ ग्रीक } }

अब नेक्स्टियन डिस्प्ले जीयूआई पर एक नजर डालते हैं। नेक्स्टियन जीयूआई में एक पृष्ठभूमि चित्र और एक चित्र होता है जो रेडियो स्टेशन का नाम प्रदर्शित करता है। ESP32 बोर्ड एम्बेडेड छवियों से रेडियो स्टेशन का नाम बदलने के लिए आदेश भेजता है। यह बहुत आसान है। अधिक जानकारी के लिए कृपया कुछ समय पहले तैयार किए गए नेक्स्टियन डिस्प्ले ट्यूटोरियल को देखें। यदि आप चाहें तो जल्दी से अपना स्वयं का GUI डिज़ाइन कर सकते हैं और उस पर और चीज़ें प्रदर्शित कर सकते हैं।

हमेशा की तरह आप इस निर्देश में संलग्न परियोजना का कोड पा सकते हैं।

चरण 7: अंतिम विचार और सुधार

अंतिम विचार और सुधार
अंतिम विचार और सुधार
अंतिम विचार और सुधार
अंतिम विचार और सुधार
अंतिम विचार और सुधार
अंतिम विचार और सुधार
अंतिम विचार और सुधार
अंतिम विचार और सुधार

यह परियोजना बहुत सरल है। मैं काम करने के लिए एक साधारण इंटरनेट रेडियो प्रोजेक्ट कंकाल चाहता था। अब जब परियोजना का पहला संस्करण तैयार हो गया है तो हम इसे बेहतर बनाने के लिए इसमें कई सुविधाएँ जोड़ सकते हैं। सबसे पहले, मुझे सभी इलेक्ट्रॉनिक्स को घर में रखने के लिए एक बाड़े को डिजाइन करने की आवश्यकता है।

अब तक के सबसे खूबसूरत रेडियो के बारे में इस किताब में इस परियोजना के लिए एक बाड़े के रूप में चुनने के लिए बहुत अच्छे रेडियो हैं। मुझे लगता है कि मैं इस शानदार आर्ट डेको रेडियो के चारों ओर एक बाड़े का निर्माण करने जा रहा हूं। आपको क्या लगता है, क्या आपको इस रेडियो का रूप पसंद है या आप कुछ अधिक आधुनिक पसंद करते हैं? क्या आपके पास कोई अन्य संलग्नक विचार है? साथ ही, क्या आपको यह इंटरनेट रेडियो प्रोजेक्ट पसंद है और इसे और अधिक उपयोगी बनाने के लिए हमें इसमें किन विशेषताओं को जोड़ने की आवश्यकता है? मुझे आपके विचारों और विचारों को पढ़ना अच्छा लगेगा, कृपया उन्हें नीचे टिप्पणी अनुभाग में पोस्ट करें।

सिफारिश की: