رادیوی اینترنتی با ESP8266

رادیوی اینترنتی ARDUnia با ESP8266

پروژه ARDUnia Internet Radio یک رادیوی اینترنتی مبتنی بر ESP8266 است که امکان پخش جریان های صوتی اینترنتی را با استفاده از نمایشگر رنگی، کنترل فیزیکی و تقویت کننده صوتی دیجیتال فراهم می کند.

سطح متوسط

معرفی پروژه

ARDUnia Internet Radio یک رادیوی اینترنتی مبتنی بر ESP8266 است که برای دریافت و پخش ایستگاه های رادیویی آنلاین طراحی شده است. این دستگاه از نمایشگر رنگی ST7735S، تقویت کننده صوتی دیجیتال MAX98357A و انکودر چرخشی برای کنترل عملکردها استفاده می کند.

پروژه علاوه بر پخش رادیوی اینترنتی، امکاناتی مانند تنظیم شبکه Wi-Fi، نمایش ساعت و تاریخ شمسی، نمایش اطلاعات جریان صوتی و مدیریت وضعیت بافر را نیز فراهم می کند.

قابلیت ها و امکانات

  • دریافت و پخش جریان های صوتی اینترنتی با فرمت MP3
  • نمایش اطلاعات دستگاه روی نمایشگر رنگی ST7735S با وضوح 160×128 پیکسل
  • انتخاب ایستگاه و کنترل منوها با انکودر چرخشی
  • تنظیم صدای خروجی از طریق ورودی آنالوگ A0
  • راه اندازی شبکه Wi-Fi از طریق نقطه دسترسی داخلی دستگاه
  • ذخیره مشخصات شبکه در حافظه EEPROM
  • تلاش مجدد برای اتصال به شبکه و جریان صوتی در صورت قطع ارتباط
  • نمایش عنوان جریان صوتی و اطلاعات متادیتا در صورت پشتیبانی ایستگاه
  • نمایش ساعت با همگام سازی از طریق NTP و تاریخ شمسی
  • نمایش وضعیت بافر صوتی و قدرت سیگنال Wi-Fi
  • منوی آغازین برای ادامه کار با تنظیمات ذخیره شده، پاک کردن حافظه یا ورود به حالت شارژ
  • حالت شارژ زمان بندی شده ۹۰ دقیقه ای همراه با انیمیشن، شمارش معکوس و اعلان صوتی پایان

توجه: درصد و زمان نمایش داده شده در حالت شارژ، تخمین نرم افزاری بر اساس زمان هستند و اندازه گیری واقعی ولتاژ، جریان یا درصد شارژ باتری انجام نمی شود.

معماری سخت افزار

در این پروژه، ESP8266 کنترل کننده اصلی است و ارتباط Wi-Fi و اجرای برنامه را مدیریت می کند. نمایشگر ST7735S اطلاعات وضعیت و رابط کاربری را نمایش می دهد. انکودر چرخشی برای جابه جایی بین ایستگاه ها، کنترل منو و مدیریت عملکردهای دستگاه به کار می رود.

پردازش جریان صوتی اینترنتی با کتابخانه ESP8266Audio انجام می شود. داده صوتی دیجیتال از طریق رابط I2S به ماژول MAX98357A منتقل می شود. این ماژول تقویت کننده دیجیتال کلاس D، سیگنال را برای راه اندازی بلندگو تقویت می کند.

قطعات و تجهیزات

قطعهکاربرد
ESP8266 NodeMCUکنترل اصلی دستگاه و ارتباط Wi-Fi
ST7735Sنمایشگر رنگی 1.8 اینچی
MAX98357Aتقویت کننده صوتی دیجیتال I2S
انکودر چرخشی KY-040 یا مشابهکنترل منو و انتخاب ایستگاه
پتانسیومترتنظیم حجم صدا از طریق A0
بلندگوپخش صدای خروجی
منبع تغذیه مناسبتامین انرژی مدار

اتصالات سخت افزاری

اتصال انکودر چرخشی

پایه انکودرپایه ESP8266
CLKD6 / GPIO12
DTD0 / GPIO16
SWD3 / GPIO0
+3.3V
GNDGND

ماژول انکودر باید مقاومت های Pull-up مناسب داشته باشد. GPIO16 در ESP8266 مانند بسیاری از GPIOهای دیگر از Pull-up داخلی معمول پشتیبانی نمی کند.

اتصال نمایشگر ST7735S

پایه نمایشگرپایه ESP8266
CSD1 / GPIO5
DCD2 / GPIO4
RSTپایه Reset برد
SCKD5 / GPIO14
MOSID7 / GPIO13

نمایشگر در حالت افقی با وضوح 160×128 پیکسل استفاده می شود.

اتصال ماژول MAX98357A

پایه ماژولپایه ESP8266
BCLKD8 / GPIO15
LRC / LCLKD4 / GPIO2
DINRX / GPIO3
SD3.3V
GAINبدون اتصال
GNDGND

بلندگو باید فقط به خروجی بلندگوی MAX98357A متصل شود؛ خروجی های این ماژول را نباید مانند خروجی صوتی آنالوگ معمولی به زمین یا یکدیگر متصل کرد.

تنظیم صدای خروجی

تنظیم صدای آنالوگ از طریق ورودی A0 انجام می شود. هنگام ساخت مدار، محدوده ولتاژ مجاز ورودی A0 باید با نوع برد ESP8266 مورد استفاده تطبیق داده شود.

نرم افزار و کتابخانه های مورد نیاز

برای کامپایل و بارگذاری برنامه، محیط Arduino IDE و هسته نرم افزاری ESP8266 مورد نیاز است.

کتابخانه های اصلی:

  • ESP8266Audio
  • Adafruit GFX Library
  • Adafruit ST7735 and ST7789 Library
  • PersianDate از مجموعه ARDUnia
  • ArduinoJson نسخه 6.x

برد پیشنهادی در مستندات پروژه، Generic ESP8266 Module است. تنظیمات برد، حافظه فلش و سایر گزینه های کامپایل باید متناسب با سخت افزار انتخاب شده باشند.

راه اندازی اولیه Wi-Fi

در نخستین راه اندازی یا پس از چند بار شکست اتصال به شبکه، دستگاه نقطه دسترسی زیر را ایجاد می کند:

InternetRadio-Setup

مراحل تنظیم شبکه:

  1. با تلفن همراه یا رایانه به شبکه Wi-Fi ایجاد شده توسط دستگاه متصل شوید.
  2. نشانی 192.168.4.1 را در مرورگر باز کنید.
  3. شبکه Wi-Fi مورد نظر را انتخاب کنید.
  4. رمز عبور شبکه را وارد کنید و تنظیمات را ذخیره کنید.
  5. پس از ذخیره اطلاعات، دستگاه در راه اندازی های بعدی از مشخصات ذخیره شده استفاده می کند.

نام شبکه و رمز عبور در کد منبع به صورت ثابت قرار داده نشده اند و از طریق فرایند راه اندازی تنظیم می شوند.

منوی آغازین

هنگام روشن شدن دستگاه، منوی آغازین امکان انتخاب یکی از این موارد را فراهم می کند:

  1. ادامه کار با اطلاعات ذخیره شده
  2. پاک کردن حافظه و اطلاعات ذخیره شده
  3. ورود به حالت شارژ

پاک کردن حافظه، اطلاعات ذخیره شده شبکه Wi-Fi و داده های مربوط به پروژه را حذف می کند؛ بنابراین پس از این کار ممکن است لازم باشد تنظیمات شبکه دوباره انجام شوند.

حالت شارژ زمان بندی شده

حالت شارژ برای ساختارهایی در نظر گرفته شده است که امکان اندازه گیری مستقیم وضعیت باتری را ندارند.

در این حالت:

  • ارتباط Wi-Fi و اینترنت غیرفعال می شود.
  • پخش رادیو متوقف می شود.
  • یک شمارش معکوس ۹۰ دقیقه ای نمایش داده می شود.
  • نمایشگر انیمیشن باتری، درصد تخمینی و زمان باقی مانده را نشان می دهد.
  • با فشردن انکودر می توان به منوی آغازین بازگشت.
  • اگر دستگاه خاموش نشده باشد، با ورود دوباره به حالت شارژ می توان زمان باقی مانده همان نشست را ادامه داد.
  • پس از خاموش شدن دستگاه، نشست بعدی از ۹۰ دقیقه آغاز می شود.
  • در پایان زمان، یک اعلان صوتی از مسیر صوتی موجود پخش می شود.

این قابلیت صرفا زمان را تخمین می زند و جایگزین مدار مدیریت شارژ یا اندازه گیری واقعی وضعیت باتری نیست.

نمایش اطلاعات و رابط کاربری

رابط کاربری فعلی به زبان انگلیسی طراحی شده است. نمایشگر اطلاعاتی مانند ساعت، عنوان جریان صوتی، سطح بافر و قدرت سیگنال Wi-Fi را ارائه می دهد.

ساعت از طریق سرویس NTP همگام سازی می شود و ثانیه ها برای ساده تر شدن نمایش ساعت نشان داده نمی شوند. تاریخ شمسی با استفاده از کتابخانه PersianDate مدیریت می شود.

آزمون و وضعیت پروژه

طبق مستندات مخزن، نسخه v2.0.0 به عنوان نسخه پایدار و آزمایش شده سخت افزاری معرفی شده است. این نسخه بر پایه کد پایدار V6.7 توسعه یافته و شامل حالت شارژ و بهبود نمایش بافر و صدا است.

در زمان استفاده از سخت افزار، رعایت تغذیه مناسب ESP8266، اتصالات صحیح پایه های بوت و انتخاب تنظیمات متناسب با برد اهمیت دارد. به ویژه GPIOهای متصل به نمایشگر، انکودر و رابط I2S باید مطابق جدول اتصالات و نسخه کد انتخاب شوند.

جمع بندی

ARDUnia Internet Radio نمونه ای از ساخت یک رادیوی اینترنتی با قطعات در دسترس و میکروکنترلر ESP8266 است. این پروژه پخش صوت اینترنتی، رابط کاربری نمایشگر، کنترل فیزیکی و راه اندازی ساده Wi-Fi را در یک دستگاه ترکیب می کند.

کد منبع و مستندات سخت افزاری پروژه در مخزن عمومی GitHub قرار دارند و می توانند مبنایی برای بررسی، ساخت و توسعه پروژه های مشابه باشند.

قطعات و تجهیزات

-ESP8266 NodeMCU

  • ST7735S 160x128 TFT
  • MAX98357A
  • KY-040 Rotary Encoder
  • Potentiometer
  • Speaker

اتصالات و راه اندازی

برای راه اندازی، ابتدا قطعات مطابق جدول اتصالات مستندات پروژه سیم کشی شوند. سپس هسته ESP8266 و کتابخانه های مورد نیاز در Arduino IDE نصب و برنامه روی برد بارگذاری شود. در نخستین اجرا، به شبکه InternetRadio-Setup متصل شوید و از طریق نشانی 192.168.4.1 مشخصات شبکه Wi-Fi را وارد کنید.

→ بازگشت به پروژه ها