সুচিপত্র:

একটি ESP32 ব্যবহার করে ইন্টারনেট রেডিও: 7 টি ধাপ (ছবি সহ)
একটি ESP32 ব্যবহার করে ইন্টারনেট রেডিও: 7 টি ধাপ (ছবি সহ)

ভিডিও: একটি ESP32 ব্যবহার করে ইন্টারনেট রেডিও: 7 টি ধাপ (ছবি সহ)

ভিডিও: একটি ESP32 ব্যবহার করে ইন্টারনেট রেডিও: 7 টি ধাপ (ছবি সহ)
ভিডিও: Part 1: Software Build of LoRa Receiver and WiFi Webserver based on Arduino ESP32 (EP12) 2024, নভেম্বর
Anonim
Image
Image
একটি ESP32 ব্যবহার করে ইন্টারনেট রেডিও
একটি ESP32 ব্যবহার করে ইন্টারনেট রেডিও
একটি ESP32 ব্যবহার করে ইন্টারনেট রেডিও
একটি ESP32 ব্যবহার করে ইন্টারনেট রেডিও

প্রিয় বন্ধুরা অন্য একটি নির্দেশনায় স্বাগতম! আজ আমরা একটি সস্তা ESP32 বোর্ড ব্যবহার করে একটি বড় 3.5”ডিসপ্লে সহ একটি ইন্টারনেট রেডিও ডিভাইস তৈরি করতে যাচ্ছি। বিশ্বাস করুন বা না করুন, আমরা এখন 10 মিনিটেরও কম সময়ে এবং 30 ডলারেরও কম সময়ে একটি ইন্টারনেট রেডিও তৈরি করতে পারি। কভার করার জন্য অনেক কিছু আছে, আসুন শুরু করা যাক!

কয়েক মাস আগে, আমি একটি আরডুইনো এফএম রেডিও প্রকল্প সম্পন্ন করেছি যা দুর্দান্ত কাজ করে এবং আমার মতে আরও ভাল দেখায়। যদি আপনি দেখতে চান যে আমি কিভাবে এই প্রকল্পটি তৈরি করেছি আপনি এখানে নির্দেশাবলী পড়তে পারেন। সমস্যা হল, যদিও এই রেডিওটি ঠান্ডা মনে হলেও এটি ব্যবহারিক নয় কারণ আমি দক্ষিণ গ্রীসের একটি ছোট শহরে বাস করি এবং যেসব বড় গ্রীক রেডিও স্টেশন আমি শুনতে পছন্দ করি, এখানে চারপাশে ট্রান্সমিটার নেই। সুতরাং, আমি আমার ল্যাপটপ বা ট্যাবলেট পিসিতে অনলাইনে আমার প্রিয় রেডিও শুনি যা খুব ব্যবহারিক নয়। সুতরাং, আজ আমি একটি ইন্টারনেট রেডিও ডিভাইস তৈরি করতে যাচ্ছি যাতে আমি সারা বিশ্ব থেকে আমার প্রিয় রেডিও স্টেশনগুলি শুনতে পারি!

আপনি দেখতে পাচ্ছেন, প্রকল্পের একটি প্রথম সংস্করণ একটি ব্রেডবোর্ডে প্রস্তুত। আসুন এটিকে শক্তিশালী করি। আপনি দেখতে পাচ্ছেন যে প্রকল্পটি ইন্টারনেটের সাথে সংযুক্ত এবং তারপরে পূর্বনির্ধারিত রেডিও স্টেশন থেকে সঙ্গীত প্রবাহিত করে।

আমি এথেন্স থেকে রিয়েল এফএম রেডিও স্টেশনে টিউন করেছি এবং এই বোতামগুলি ব্যবহার করে আমরা যে রেডিও স্টেশনটি শুনছি তা পরিবর্তন করতে পারি। আমি আমার প্রিয় রেডিও স্টেশনগুলিকে ESP32 এর স্মৃতিতে সংরক্ষণ করেছি যাতে আমি সেগুলি সহজেই অ্যাক্সেস করতে পারি। এই potentiometer দিয়ে, আমি স্পিকারের ভলিউম পরিবর্তন করতে পারি। আমি একটি রেট্রো ইউজার ইন্টারফেস সহ একটি বড় 3.5”ডিসপ্লেতে যে রেডিও স্টেশনটি শুনছি তার নাম প্রদর্শন করি। প্রকল্পটি সূক্ষ্মভাবে কাজ করে এবং এটি নির্মাণ করা খুবই সহজ।

আপনি 10 মিনিটেরও কম সময়ে একই প্রকল্প তৈরি করতে পারেন কিন্তু আপনার কিছু অভিজ্ঞতা থাকতে হবে। যদি এটি আপনার প্রথম প্রকল্প হয়, তাহলে কিছু অভিজ্ঞতা অর্জনের জন্য প্রথমে একটি সহজ নির্মাণের কথা বিবেচনা করুন। সহজ প্রকল্প ধারণাগুলির জন্য আমার নির্দেশাবলী পরীক্ষা করুন এবং যখন আপনি Arduino এর সাথে আরও আরামদায়ক হন তখন ইলেকট্রনিক্স এই শীতল প্রকল্পটি তৈরি করতে ফিরে আসে। আসুন এখন আমাদের নিজস্ব ইন্টারনেট রেডিও নির্মাণ শুরু করি।

6/6/2019 আপডেট করুন

একটি আইসোলেটর ট্রান্সফরমার যুক্ত করে গোলমালের সমস্যা সমাধান করা হয়েছে। আপডেট করা শেমেটিক ডায়াগ্রামটি দেখুন। ধন্যবাদ!

ধাপ 1: সমস্ত যন্ত্রাংশ পান

সব যন্ত্রাংশ পান
সব যন্ত্রাংশ পান

আমাদের নিম্নলিখিত অংশগুলির প্রয়োজন হবে:

  • ESP32 ▶
  • MP3 ডিকোডার ▶
  • বিচ্ছিন্নতা ট্রান্সফরমার ▶
  • পরিবর্ধক ▶
  • 3W স্পিকার ▶
  • 3.5 "নেক্সশন ডিসপ্লে ▶
  • পুশ বাটন ▶
  • ব্রেডবোর্ড ▶
  • তারের ▶

প্রকল্পের মোট খরচ প্রায় 40 ডলার কিন্তু আপনি যদি কোন ডিসপ্লে ব্যবহার না করেন তাহলে প্রকল্পের খরচ প্রায় 20 ডলার। আশ্চর্যজনক জিনিস। আমরা মাত্র 20 ডলার দিয়ে আমাদের নিজস্ব ইন্টারনেট রেডিও তৈরি করতে পারি!

ধাপ 2: ESP32 বোর্ড

Image
Image
ESP32 বোর্ড
ESP32 বোর্ড
ESP32 বোর্ড
ESP32 বোর্ড

প্রকল্পের কেন্দ্রবিন্দু অবশ্যই শক্তিশালী ESP32 বোর্ড। আপনি যদি এর সাথে পরিচিত না হন, ESP32 চিপ হল জনপ্রিয় ESP8266 চিপের উত্তরাধিকারী যা আমরা অতীতে বহুবার ব্যবহার করেছি। ESP32 একটি পশু! এটি দুটি 32 বিট প্রসেসিং কোর অফার করে যা 160MHz এ কাজ করে, প্রচুর পরিমাণে মেমরি, ওয়াইফাই, ব্লুটুথ এবং অন্যান্য বৈশিষ্ট্যগুলি প্রায় 7 $ খরচ সহ! আশ্চর্যজনক জিনিস!

এই বোর্ডের জন্য আমি প্রস্তুত করেছি বিস্তারিত পর্যালোচনা দেখুন। আমি এই নির্দেশাবলীতে ভিডিও সংযুক্ত করেছি। এটি বুঝতে সাহায্য করবে কেন এই চিপ আমাদের চিরকালের জন্য জিনিস তৈরির পদ্ধতি পরিবর্তন করবে! ESP32 সম্পর্কে সবচেয়ে উত্তেজনাপূর্ণ জিনিসগুলির মধ্যে একটি হল যে যদিও এটি এত শক্তিশালী, এটি একটি গভীর ঘুমের মোড প্রদান করে যার জন্য শুধুমাত্র 10μΑ কারেন্ট প্রয়োজন। এটি ESP32 কে কম বিদ্যুতের অ্যাপ্লিকেশনের জন্য আদর্শ চিপে পরিণত করে।

এই প্রকল্পে, ESP32 বোর্ড ইন্টারনেটের সাথে সংযোগ স্থাপন করে এবং তারপর আমরা যে রেডিও স্টেশনটি শুনছি তা থেকে এটি MP3 টি তথ্য পায় এবং এটি ডিসপ্লেতে কিছু কমান্ড পাঠায়।

ধাপ 3: MP3 ডিকোডার

MP3 ডিকোডার
MP3 ডিকোডার
MP3 ডিকোডার
MP3 ডিকোডার

এসপিআই ইন্টারফেস ব্যবহার করে এমপিথ্রি ডেটা এমপি 3 ডিকোডার মডিউলে পাঠানো হয়। এই মডিউলটি VS1053 IC ব্যবহার করে। এই আইসি একটি ডেডিকেটেড হার্ডওয়্যার MP3 ডিকোডার। এটি ESP32 থেকে MP3 ডেটা পায় এবং এটি সত্যিই দ্রুত একটি অডিও সিগন্যালে রূপান্তর করে।

এই অডিও জ্যাকটিতে যে অডিও সিগন্যালটি আউটপুট করে তা দুর্বল এবং শোরগোল, তাই আমাদের এটিকে গোলমাল থেকে পরিষ্কার করতে হবে এবং এটিকে বাড়িয়ে তুলতে হবে। (যদি আপনি হেডফোন ব্যবহার করেন, সংকেতটি শব্দ বা পরিবর্ধন থেকে সাফ করার প্রয়োজন হয় না।) এজন্য আমি শব্দ থেকে অডিও পরিষ্কার করার জন্য একটি বিচ্ছিন্নতা ট্রান্সফরমার এবং একটি PAM8403 অডিও পরিবর্ধক ব্যবহার করে অডিও সংকেতকে প্রশস্ত করতে এবং তারপর এটি পাঠান একজন বক্তার কাছে। আমি ESP32 এর সাথে দুটি বোতাম সংযুক্ত করেছি শুধু MP3 স্ট্রিম পরিবর্তন করার জন্য যা থেকে আমরা তথ্য পাচ্ছি এবং আমরা যে রেডিও স্টেশনটি শুনছি তা প্রদর্শনের জন্য একটি নেক্সশন ডিসপ্লে।

ধাপ 4: Nextion প্রদর্শন

Image
Image
সমস্ত অংশ সংযুক্ত করা হচ্ছে
সমস্ত অংশ সংযুক্ত করা হচ্ছে

আমি এই প্রকল্পের জন্য একটি নেক্সশন ডিসপ্লে ব্যবহার করতে পছন্দ করেছি কারণ এটি ব্যবহার করা খুব সহজ। এটি নিয়ন্ত্রণ করতে আমাদের কেবল একটি তারের সংযোগ করতে হবে।

নেক্সট ডিসপ্লেগুলি নতুন ধরনের ডিসপ্লে। তাদের পিছনে তাদের নিজস্ব এআরএম প্রসেসর রয়েছে যা ডিসপ্লে চালানোর এবং গ্রাফিকাল ইউজার ইন্টারফেস তৈরির জন্য দায়ী। সুতরাং, আমরা এগুলি যে কোনও মাইক্রোকন্ট্রোলারের সাথে ব্যবহার করতে পারি এবং দর্শনীয় ফলাফল অর্জন করতে পারি। আমি এই নেক্সশন ডিসপ্লের একটি বিস্তারিত পর্যালোচনা প্রস্তুত করেছি যা তারা কিভাবে কাজ করে, কিভাবে ব্যবহার করে এবং তাদের অপূর্ণতা সম্পর্কে গভীরভাবে ব্যাখ্যা করে। আপনি এটি এখানে পড়তে পারেন, অথবা সংযুক্ত ভিডিওটি দেখতে পারেন।

ধাপ 5: সমস্ত অংশ সংযুক্ত করা

সমস্ত অংশ সংযুক্ত করা হচ্ছে
সমস্ত অংশ সংযুক্ত করা হচ্ছে
সমস্ত অংশ সংযুক্ত করা হচ্ছে
সমস্ত অংশ সংযুক্ত করা হচ্ছে

আমাদের এখন যা করতে হবে তা হল এই পরিকল্পিত ডায়াগ্রাম অনুসারে সমস্ত অংশকে একসাথে সংযুক্ত করা। আপনি এখানে সংযুক্ত পরিকল্পিত চিত্রটি খুঁজে পেতে পারেন। সংযোগটি সোজা।

যদিও দুটি জিনিস লক্ষ্য করা যায়। MP3 ডিকোডার মডিউল একটি স্টিরিও সিগন্যাল আউটপুট করে কিন্তু আমি এই প্রকল্পে শুধুমাত্র একটি অডিও চ্যানেল ব্যবহার করছি। অডিও সিগন্যাল পাওয়ার জন্য, আমি মডিউলের অডিও জ্যাকের সাথে একটি অডিও ক্যাবল সংযুক্ত করেছি, এবং ভিতরে চারটি তারের প্রকাশ করতে এটি কেটেছি। আমি তারের দুটি সংযুক্ত করেছি। তার মধ্যে একটি হল GND এবং অন্যটি হল দুটি অডিও চ্যানেলের একটির অডিও সিগন্যাল। আপনি যদি চান তবে আপনি উভয় চ্যানেলকে এম্প্লিফায়ার মডিউলে সংযুক্ত করতে পারেন এবং দুটি স্পিকার চালাতে পারেন।

প্রতিটি অডিও চ্যানেলকে অবশ্যই বিচ্ছিন্নতা ট্রান্সফরমারের মধ্য দিয়ে যেতে হবে যাতে এম্প্লিফায়ারের সাথে সংযোগ স্থাপনের আগে উপস্থিত কোনো গোলমাল পরিষ্কার হয়।

ডিসপ্লেতে ডেটা পাঠানোর জন্য, আমাদের কেবল একটি তারকে ESP32 এর TX0 পিনের সাথে সংযুক্ত করতে হবে। যন্ত্রাংশ সংযুক্ত করার পর, আমাদের ESP32 এ কোড লোড করতে হবে, এবং আমাদের GUI কে Nextion ডিসপ্লেতে লোড করতে হবে।

নেক্সশন ডিসপ্লেতে GUI লোড করতে, InternetRadio.tft ফাইলটি অনুলিপি করুন আমি আপনার সাথে একটি খালি SD কার্ডে শেয়ার করতে যাচ্ছি। ডিসপ্লের পিছনে এসডি কার্ড স্লটে এসডি কার্ড রাখুন। তারপরে ডিসপ্লেটি শক্তিশালী করুন এবং GUI লোড হবে। তারপরে এসডি কার্ডটি সরান এবং আবার বিদ্যুৎ সংযোগ করুন।

সফলভাবে কোডটি লোড করার পর, আসুন প্রকল্পটিকে শক্তিশালী করি। এটি ডিসপ্লেতে কয়েক সেকেন্ডের জন্য "সংযোগকারী …" পাঠ্য প্রদর্শন করে। ইন্টারনেটের সাথে সংযুক্ত হওয়ার পর প্রকল্পটি একটি পূর্বনির্ধারিত রেডিও স্টেশনের সাথে সংযোগ স্থাপন করে। হার্ডওয়্যারটি প্রত্যাশা অনুযায়ী কাজ করছে কিন্তু এখন প্রকল্পের সফটওয়্যার দিকটি দেখা যাক।

ধাপ 6: প্রকল্পের কোড

প্রকল্পের কোড
প্রকল্পের কোড
প্রকল্পের কোড
প্রকল্পের কোড

প্রথমত, আমি আপনাকে কিছু দেখাই। প্রকল্পের কোড 140 লাইনের কম কোড। চিন্তা করুন, আমরা একটি Radio.৫”ডিসপ্লে দিয়ে 140 লাইন কোড সহ একটি ইন্টারনেট রেডিও তৈরি করতে পারি, এটি আশ্চর্যজনক। আমরা অবশ্যই বিভিন্ন লাইব্রেরি ব্যবহার করে এটি অর্জন করতে পারি যার মধ্যে হাজার হাজার লাইন কোড রয়েছে। এটি আরডুইনো এবং ওপেন সোর্স সম্প্রদায়ের শক্তি। এটি নির্মাতাদের জন্য জিনিসগুলিকে সহজ করে তোলে।

এই প্রকল্পে, আমি ESP32 বোর্ডের জন্য VS1053 লাইব্রেরি ব্যবহার করছি।

প্রথমে, আমাদের SSID এবং Wi-Fi নেটওয়ার্কের পাসওয়ার্ড নির্ধারণ করতে হবে। পরবর্তী, আমাদের এখানে কিছু রেডিও স্টেশন সংরক্ষণ করতে হবে। আমাদের প্রয়োজন হোস্ট ইউআরএল, সেই পথ যেখানে স্ট্রিমটি অবস্থিত এবং যে পোর্টটি আমাদের ব্যবহার করতে হবে। আমরা এই সমস্ত তথ্য এই ভেরিয়েবলে সংরক্ষণ করি।

char ssid = "yourSSID"; // আপনার নেটওয়ার্ক SSID (নাম) char pass = "yourWifiPassword"; // আপনার নেটওয়ার্ক পাসওয়ার্ড

// কয়েকটি রেডিও স্টেশন

char *host [4] = {"149.255.59.162", "radiostreaming.ert.gr", "realfm.live24.gr", "secure1.live24.gr"}; char *path [4] = {"/1", "/ert-kosmos", "/realfm", "/skai1003"}; int port [4] = {8062, 80, 80, 80};

আমি এই উদাহরণে 4 টি রেডিও স্টেশন অন্তর্ভুক্ত করেছি।

সেটআপ ফাংশনে আমরা বোতামে বাধা সংযুক্ত করি, আমরা MP3 ডিকোডার মডিউল শুরু করি এবং আমরা Wi-Fi এর সাথে সংযুক্ত হই।

অকার্যকর সেটআপ () {

Serial.begin (9600); বিলম্ব (500); SPI.begin ();

pinMode (previousButton, INPUT_PULLUP);

pinMode (nextButton, INPUT_PULLUP);

attachInterrupt (digitalPinToInterrupt (previousButton), previousButtonInterrupt, FALLING);

attachInterrupt (digitalPinToInterrupt (nextButton), nextButtonInterrupt, FALLING); initMP3Decoder (); connectToWIFI (); }

লুপ ফাংশনে, প্রথমত, আমরা যাচাই করি যে ব্যবহারকারী আমরা যে ডেটা পাচ্ছি তার থেকে আলাদা রেডিও স্টেশন নির্বাচন করেছে কিনা। যদি তাই হয়, আমরা নতুন রেডিও স্টেশনে সংযোগ করি অন্যথায় আমরা স্ট্রিম থেকে ডেটা পাই এবং তাদের MP3 ডিকোডার মডিউলে পাঠাই।

অকার্যকর লুপ () {যদি (রেডিও স্টেশন! = আগের রেডিও স্টেশন) {স্টেশন_কানেক্ট (রেডিও স্টেশন); পূর্ববর্তী রেডিও স্টেশন = রেডিও স্টেশন; } if (client.available ()> 0) {uint8_t bytesread = client.read (mp3buff, 32); player.playChunk (mp3buff, bytesread); }}

এখানেই শেষ! যখন ব্যবহারকারী একটি বোতাম টিপেন, একটি বাধা ঘটে, এবং একটি পরিবর্তনশীল এর মান পরিবর্তন করে যা বলে যে কোন স্ট্রীমের সাথে সংযোগ স্থাপন করতে হবে।

বাতিল IRAM_ATTR previousButtonInterrupt () {

স্ট্যাটিক স্বাক্ষরবিহীন দীর্ঘ last_interrupt_time = 0;

স্বাক্ষরবিহীন দীর্ঘ বিরতি_ সময় = মিলিস (); if (interrupt_time-last_interrupt_time> 200) {if (radioStation> 0) radioStation--; অন্যথায় রেডিও স্টেশন = 3; } last_interrupt_time = interrupt_time; }

ডিসপ্লে আপডেট করার জন্য, আমরা কেবল সিরিয়াল পোর্টে কিছু কমান্ড পাঠাই।

void drawRadioStationName (int id) {স্ট্রিং কমান্ড; সুইচ (আইডি) {কেস 0: কমান্ড = "p1.pic = 2"; সিরিয়াল.প্রিন্ট (কমান্ড); endNextionCommand (); বিরতি; // 1940 ইউকে রেডিও কেস 1: কমান্ড = "p1.pic = 3"; সিরিয়াল.প্রিন্ট (কমান্ড); endNextionCommand (); বিরতি; // KOSMOS GREEK কেস 2: কমান্ড = "p1.pic = 4"; সিরিয়াল.প্রিন্ট (কমান্ড); endNextionCommand (); বিরতি; // REAL FM GREEK case 3: command = "p1.pic = 5"; সিরিয়াল.প্রিন্ট (কমান্ড); endNextionCommand (); বিরতি; // SKAI 100.3 GREEK}}

এখন আসুন নেক্সশন ডিসপ্লে জিইউআই -তে একটু নজর দেওয়া যাক। নেক্সশন জিইউআই একটি পটভূমি ছবি এবং একটি ছবি যা রেডিও স্টেশনের নাম প্রদর্শন করে। ESP32 বোর্ড এম্বেড করা ছবি থেকে রেডিও স্টেশনের নাম পরিবর্তন করার জন্য কমান্ড পাঠায়। এটা খুব সহজ. আরও তথ্যের জন্য আমি কিছু সময় আগে প্রস্তুত করা নেক্সশন ডিসপ্লে টিউটোরিয়ালটি দেখুন। আপনি ইচ্ছা করলে দ্রুত আপনার নিজের GUI ডিজাইন করতে পারেন এবং এতে আরো জিনিস প্রদর্শন করতে পারেন।

সর্বদা হিসাবে আপনি এই নির্দেশাবলীর সাথে সংযুক্ত প্রকল্পের কোড খুঁজে পেতে পারেন।

ধাপ 7: চূড়ান্ত চিন্তাভাবনা এবং উন্নতি

চূড়ান্ত চিন্তা ও উন্নতি
চূড়ান্ত চিন্তা ও উন্নতি
চূড়ান্ত চিন্তা ও উন্নতি
চূড়ান্ত চিন্তা ও উন্নতি
চূড়ান্ত চিন্তা ও উন্নতি
চূড়ান্ত চিন্তা ও উন্নতি
চূড়ান্ত চিন্তা ও উন্নতি
চূড়ান্ত চিন্তা ও উন্নতি

এই প্রকল্পটি খুবই সহজ। আমি একটি সহজ ইন্টারনেট রেডিও প্রকল্পের কঙ্কাল দিয়ে কাজ করতে চেয়েছিলাম। এখন যেহেতু প্রকল্পের একটি প্রথম সংস্করণ প্রস্তুত আমরা এটির উন্নতির জন্য এতে অনেক বৈশিষ্ট্য যুক্ত করতে পারি। প্রথমত, আমাকে সমস্ত ইলেকট্রনিক্স রাখার জন্য একটি ঘের ডিজাইন করতে হবে।

এখন পর্যন্ত তৈরি করা সবচেয়ে সুন্দর রেডিও সম্পর্কে এই বইটিতে এই প্রকল্পের জন্য একটি ঘের হিসাবে বেছে নেওয়ার জন্য খুব শীতল রেডিও রয়েছে। আমি মনে করি আমি এই দর্শনীয় আর্ট ডেকো রেডিওকে ঘিরে একটি ঘের তৈরি করতে যাচ্ছি। আপনি কি মনে করেন, আপনি কি এই রেডিওটির চেহারা পছন্দ করেন নাকি আপনি আরো আধুনিক কিছু পছন্দ করেন? আপনি অন্য কোন ঘের ধারণা আছে? এছাড়াও, আপনি কি এই ইন্টারনেট রেডিও প্রকল্পটি পছন্দ করেন এবং এটিকে আরও উপযোগী করার জন্য আমাদের এতে কোন বৈশিষ্ট্যগুলি যোগ করা দরকার বলে মনে করেন? আমি আপনার চিন্তাভাবনা এবং আইডিয়াগুলি পড়তে পছন্দ করব, তাই দয়া করে নীচের মন্তব্য বিভাগে সেগুলি পোস্ট করুন।

প্রস্তাবিত: