مقدمه
در این پست قصد داریم به آموزش ساخت پخش کننده صوتی (Audio Player) در ESP32 با آردوینو بپردازیم. این آموزش بسیار ساده است و برای پخش صدا فقط نیاز به یک تقویت کننده صوتی دارد.
لوازم مورد نیاز
ESP32
ماژول تقویت کننده LM386
اسپیکر 8 اهم
سیمهای جامپر
مدار (Audio Player)
برای پخش صدا در ESP32 به یک اسپیکر نیاز داریم. بلندگو از طریق ماژول تقویت کننده صوتی LM386 متصل میشود. پینهای Vcc و GND ماژول تقویت کننده به Vin و GND ESP32 وصل میشوند در حالی که پایه IN ماژول تقویت کننده به پایه GPIO 25 ESP32 متصل میشود. GPIO 25 یکی از دو پایه DAC (مبدل دیجیتال به آنالوگ) است.
آمادهسازی فایل صوتی
برای پخش صداهای صوتی روی برد ESP32 به فایل های صوتی با فرمت wav نیاز داریم. زیرا ESP32 فقط میتواند یک فایل صوتی را با فرمت wav پخش کند. بنابراین اولین قدم دانلود فایلی است که میخواهید در ESP32 پخش کنید. سپس اپلیکیشن Audacity Audio Editor را دانلود و نصب کنید. این برنامه برای تغییر نوع فایل، Sample Rate و سایر ویژگیها استفاده میشود. پس از اتمام نصب، برنامه Audacity را باز کنید و به file > Open بروید و فایل صوتی را برای ویرایش انتخاب کنید. اولین چیزی که باید تغییر کند میزان نمونه گیری است. برای پخش یک فایل صوتی در ESP32، نرخ نمونه برداری 8000 تا 16000 مطلوب است، زیرا ESP32 حافظه زیادی ندارد. بنابراین Project Rate را به 16000 تغییر دهید.
حال در پنجره بعدی، WAV (Microsoft) را به عنوان نوع فایل و Unsigned 8-bit PCM را به عنوان فرمت Encoding انتخاب کنید و سپس بر روی Save کلیک کنید.
اکنون ما به یک برنامه Hex Editor برای تولید کدهای Hex برای فایل صوتی نیاز داریم. بنابراین ویرایشگر Hex (HxD) را دانلود و نصب کنید. برنامه را باز کنید، سپس به File > open بروید و فایل wav را باز کنید. این کد هگز را برای فایل wav ایجاد میکند.
سپس از ctrl+A برای انتخاب کد کامل استفاده کنید و به مسیر Edit > Copy as > C بروید تا کد را با فرمت C زبان کپی کنید.
سپس این کد را در Arduino IDE قرار دهید.
توضیحات کد
کد کامل پخش کننده صوتی ESP32 آردوینو در انتهای صفحه آورده شدهاست. در اینجا چند قسمت مهم کد را توضیح میدهیم. در این برنامه قصد داریم از کتابخانه صوتی XT DAC از XTronical استفاده کنیم. کتابخانه صوتی XT DAC را میتوان از اینجا دانلود کرد.
کد را با گنجاندن تمام کتابخانههای مورد نیاز شروع کنید. فایل SoundData.h حاوی کد Hex برای فایل Wav است که قرار است پخش شود.
#include "SoundData.h"
#include "XT_DAC_Audio.h"
در خط بعدی، یک شی از نوع XT_Wav_Class ایجاد کنید که توسط کلاس صوتی DAC استفاده میشود و دیتاهای wav را به عنوان پارامتر ارسال میکند. DacAudio، شی کلاس پخش کننده اصلی که در آن عدد 25 عدد پین DAC است که پایه تقویت کننده وصل شده است.
XT_Wav_Class Sound(sample);
XT_DAC_Audio_Class DacAudio(25,0);
در داخل تابع setup() سریال Monitor را با نرخ باود 115200 برای اهداف اشکالزدایی مقداردهی اولیه کنید.
void setup() {
Serial.begin(115200);
در داخل تابع ()loop، بافر صدا را با دیتا پر کنید و بررسی کنید که آیا صدا در حال پخش است یا نه. اگر نه، صدا را در حلقه پخش کنید.
void loop() {
DacAudio.FillBuffer();
if(Sound.Playing==false)
DacAudio.Play(&Sound);
Serial.println(DemoCounter++);
}
تست پخش کننده صوتی ESP32
پس از آماده شدن کد، بلندگو را از طریق LM386 یا هر ماژول تقویت کننده دیگری به GPIO 25 ESP32 وصل کنید. حالا ESP32 را به لپ تاپ وصل کرده و کد را آپلود کنید. پس از آپلود کد، ESP32 شروع به پخش صدا میکند. کیفیت صدا را میتوان با استفاده از پتانسیومتر ماژول تقویت کننده تغییر داد. امیدوارم از پروژه پخش کننده صوتی ESP32 آردوینو لذت برده باشید.
کد arduino mp3 player با ESP32
#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++);
}