بازگشت به بلاگ

پخش WAV با ESP32

در این آموزش یاد می‌گیریم چطور پخش WAV با ESP32 را با استفاده از خروجی DAC انجام بدهیم و با یک تقویت‌کننده ساده مثل LM386 صدا را روی اسپیکر پخش کنیم. همچنین مراحل آماده‌سازی فایل WAV و تبدیل آن به آرایه C برای استفاده در Arduino IDE را قدم‌به‌قدم توضیح می‌دهیم.
در ادامه، مدار اتصال DAC به LM386 و نکات مربوط به کیفیت صدا را بررسی می‌کنیم تا پخش WAV با ESP32 بدون نویز و با حجم صدای مناسب انجام شود.

لوازم موردنیاز

• ESP32
• ماژول تقویت‌کننده صوتی LM386
• اسپیکر ۸ اهم
• سیم‌های جامپر

مدار پخش‌کننده صوتی (Audio Player Circuit)

برای پخش صدا در ESP32 به یک اسپیکر نیاز داریم. اسپیکر از طریق ماژول تقویت‌کننده LM386 متصل می‌شود. پایه‌های VCC و GND ماژول به Vin و GND برد ESP32 وصل می‌شوند و پایه IN ماژول به GPIO25 (یکی از پایه‌های DAC) متصل می‌شود.

شکل: مدار اتصال ESP32 به ماژول تقویت‌کننده LM386 و اسپیکر (استفاده از DAC روی GPIO25)

مدار پخش کننده صوتی ESP32 با LM386 و اتصال به GPIO25 DAC

اماده سازی برای پخش

ESP32 در این روش فقط فایل‌های WAV را پخش می‌کند. برای اینکه حجم و مصرف حافظه مناسب باشد، بهتر است Sample Rate را بین 8000 تا 16000 قرار دهید (در این آموزش 16000). برای تبدیل و خروجی گرفتن WAV می‌توانید از Audacity استفاده کنید.

شکل: Export کردن صدا در Audacity (مسیر File > Export > Export as WAV)

بعد از تنظیم Project Rate روی 16000، فایل را با گزینه‌های زیر خروجی بگیرید:
– Save as type: WAV (Microsoft)
– Encoding: Unsigned 8-bit PCM

شکل: تنظیمات ذخیره WAV: انتخاب WAV (Microsoft) و Encoding = Unsigned 8-bit PCM

تنظیم Encoding فایل WAV برای پخش صدا در ESP32

تبدیل فایل WAV به کد C با Hex Editor (HxD)

فایل sound.wav را در HxD باز کنید، کل محتوا را انتخاب کنید (Ctrl + A) و از مسیر زیر کپی کنید:

Edit > Copy as > C

شکل: کپی کردن داده فایل WAV به فرمت C در HxD (Edit > Copy as > C)

کپی کردن هگز فایل WAV به فرمت C با نرم افزار HxD

نمونه‌ای از نمایش داده‌های WAV در Hex Editor:

شکل: نمونه نمایش داده‌های فایل sound.wav در Hex Editor

نمایش هگز فایل WAV برای تبدیل به آرایه C

قرار دادن داده صوت در Arduino IDE

خروجی Copy as C را داخل یک فایل هدر مثل SoundData.h قرار دهید (مثلاً آرایه‌ای به نام sample). سپس در کد اصلی، فایل SoundData.h و کتابخانه XT_DAC_Audio را اضافه می‌کنیم.

نمونه کد آردوینو

#include "SoundData.h"
#include "XT_DAC_Audio.h"

XT_Wav_Class Sound(sample);
XT_DAC_Audio_Class DacAudio(25,0);

uint32_t DemoCounter=0;

void setup() {
  Serial.begin(115200);
}

void loop() {
  DacAudio.FillBuffer();
  if(Sound.Playing==false)
    DacAudio.Play(&Sound);
  Serial.println(DemoCounter++);
}

تست پخش‌کننده صوتی ESP32

بعد از آماده شدن کد، ماژول LM386 و اسپیکر را طبق مدار به GPIO25 وصل کنید، سپس کد را روی ESP32 آپلود کنید. بعد از آپلود، برد شروع به پخش صدا می‌کند. کیفیت/بلندی صدا را می‌توانید با پتانسیومتر روی ماژول تقویت‌کننده تنظیم کنید.

شکل: نمونه اتصال واقعی ESP32 + LM386 + اسپیکر (نمای روبه‌رو)

نمونه اتصال واقعی ESP32 + LM386 + اسپیکر (نمای دیگر) پخش WAV با ESP32 از طریق DAC