ماژول های ESP32 به عنوان جایگزین و نسخه پیشرفته ESP8266 دارای امکانات و پریفرال بیشتری هستند . ESP32 با وجود واحد DAC امکان ایجاد سیگنال های آنالوگ را دارد لذا می توانید از این قابلیت برای ایجاد صدا و یا سیگنال های PAL استفاده کنید . در این پروژه به نحوه پخش فایل های صوتی توسط ESP32 خواهیم پرداخت . برای پخش یک فایل صوتی ابتدا لازم است تغییراتی در صدایی که می خواهیم پخش شود ایجاد کنیم . از جمله این تغییرات تبدیل صدا از استریو به منو و همچنین بادریت آن می باشد .

قبل از هر چیزی یک فایل صوتی با حجم پایین در حد حداکثر پنج ثانیه ( به دلیل محدودیت حافظه ESP32 ) و مراحل زیر را انجام دهید :

 

1- ابتدا از این لینک برنامه Audacity را دانلود و سپس نصب کنید . Audacity جهت ویرایش فایل های صوتی می باشد که از فرمت های زیادی را پشتیبانی می کند .

2- پس از نصب Audacity ، آن را باز کنید و از منو File و سپس Open فایل صدای مورد نظر خود را باز کنید .

3- حال Project Rate را بر روی 8000 قرار دهید .

 

4- از منوی File گزینه Export را انتخاب و گزینه WAV را بزنید :

 

5- در پایان آن را ذخیره کیند (گزینه های Encoding را همانند تصویر زیر قرار دهید ) :

تبدیل فایل صوتی به آرایه C :

 

پس از ساخت فایل صوتی به صورت WAV و با نرخ 8000 ، باید آن را به یک آرایه C تبدیل کنید . برای این کار از این لینک برنامه Hex Editor (HxD) را دانلود و نصب کنید .

 

1- پس از نصب برنامه H&D آن را باز کنید و از گزینه File و Open فایل صوتی را که ویرایش کرده بودید باز کنید :

2- حال باید فایل مورد نظر را به صورت یک آرایه C و در قابل یک هدر فایل در بیارید . برای این کار از منوی Edite گزینه Copy as را انتخاب و سپس C را بزنید و در نهایت فایل خروجی را در مکان پروژه اصلی که به آن خواهیم پرداخت ذخیره کیند .

 

اکنون یک پروژه جدید در آردوینو IDE بسازید . پس از ذخیه پروژه هدر فایلی را که ساخته بودین در کنار فایل پروژه اصلی قرار دهید .

کد های زیر را در پروژه کپی و سپس از منوی Sketch گزینه Add file را انتخاب و سپس هدر فایل صدا را انتخاب کنید .

سپس از لینک زیر کتابخانه XT_DAC_Audio را دانلود و آن را در آردوینو IDE نصب کیند :

https://github.com/WeekendWarrior1/XTronical_XT_DAC_Audio_Mirror

کد های زیر را بر روی برد 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++);        
}

 

پین GPIO25 خروجی DAC ماژول ESP32 می باشد که می توانید آن را از طریق یک آمپلی فایر به بلندگو متصل کنید :

 

Tags:
About Author: USER_4