ویژگیهای ماژول دیکدر I2S استریو UDA1334A
UDA1334A یک مبدل همهکاره دیجیتال به آنالوگ (DAC) است و در زمینه کار با فایلهای صوتی، عملکرد فوقالعادهای دارد. ویژگی کلیدیUDA1334A ، بازتولید صوت با کیفیت بالا است. این ماژول طرفداران زیادی دارد؛ از علاقهمندان نوپا گرفته تا حرفهایهای باراندیده. DAC از طیف گستردهای از فرکانسهای نمونهبرداری پشتیبانی میکند؛ بنابراین خیالتان از پخش بینقص فایلهای صوتی راحت باشد.
دیتاشیت ماژول ADS1015 را از اینجا دانلود کنید.
پیناوت ماژول دیکدر I2S استریو UDA1334A
ماژول ADS1015 ADC دارای 14 پین است:
- 5V: ورودی منبع تغذیه (5 ولت)
- 3.3V: ورودی منبع تغذیه (3.3 ولت)
- GND: زمین آیسی
- LRC (ساعت چپ/راست): ورودی برای شناسایی کانال چپ/راست
- DOUT (Data Out): خروجی داده سریال برای انتقال سیگنالهای آنالوگ تبدیلشده
- BCLK (ساعت بیت): ورودی برای همگامسازی انتقال داده
- LOUT (خروجی کانال چپ): خروجی صوتی آنالوگ برای کانال چپ
- AGND (زمین آنالوگ): زمین مرجع آنالوگ داخلی
- ROUT (خروجی کانال راست): خروجی صوتی آنالوگ برای کانال راست
- SCLK (ساعت سیستم): ورودی برای همگامسازی ساعت سیستم
- SF0 و SF1 (انتخاب فیلتر دیجیتال): ورودی برای انتخاب گزینههای فیلتر دیجیتال. SF0 و SF1 برای تنظیم فرمت دادههای ورودی استفاده میشوند. هر دو برای I2S بهطور پیشفرض در حالت LOW هستند اما میتوانید آنها را برای فرمتهای جایگزین تغییر دهید.
- MUTE: ورودی برای بیصدا کردن خروجی صدا
- PLL (حلقه قفل فاز): ورودی برای همگامسازی ساعت خارجی
- DEEM (De-Emphasis): ورودی برای کنترل عدم تاکید
می توانید پیناوت این ماژول را در تصویر زیر مشاهده کنید.
لوازمی که به آن احتیاج دارید
راهاندازی ماژول دیکدر I2S استریو UDA1334A با آردوینو و ESP32
گام اول: مدار
در مدار زیر نشان دادهایم که چگونه باید ماژول UDA1334A را به ESP32 وصل کنید.
توجه:
خروجی پورت AUX مدل را به یک هدفون یا تقویتکننده وصل کنید تا خروجی صدا را بدست آورید.
نکته:
میتوانید از پینهدر خروجی صدا برای اتصال مستقیم به تقویتکننده استفاده کنید.
گام دوم: نصب کتابخانه
این کتابخانه را روی آردوینو IDE نصب کنید.
توجه
اگر برای نصب کتابخانه در آردوینو به کمک بیشتری نیاز دارید، این آموزش را بخوانید: نحوه نصب کتابخانه در آردوینو
نکته
باید نام و رمز عبور WiFi را پیکربندی کنید.
گام سوم: کد
کد زیر را در ESP32 آپلود کنید.
//**********************************************************************************************************
//* audioI2S-- I2S audiodecoder for ESP32, *
//**********************************************************************************************************
//
// first release on 11/2018
// Version 3 , Jul.02/2020
//
//
// THE SOFTWARE IS PROVIDED "AS IS" FOR PRIVATE USE ONLY, IT IS NOT FOR COMMERCIAL USE IN WHOLE OR PART OR CONCEPT.
// FOR PERSONAL USE IT IS SUPPLIED WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
// WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHOR
// OR COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
//
#include "Arduino.h"
#include "WiFiMulti.h"
#include "Audio.h"
#include "SPI.h"
#include "SD.h"
#include "FS.h"
// Digital I/O used
#define SD_CS 5
#define SPI_MOSI 23
#define SPI_MISO 19
#define SPI_SCK 18
#define I2S_DOUT 25
#define I2S_BCLK 27
#define I2S_LRC 26
Audio audio;
WiFiMulti wifiMulti;
String ssid = "xxxxx";
String password = "xxxxx";
void setup() {
pinMode(SD_CS, OUTPUT); digitalWrite(SD_CS, HIGH);
SPI.begin(SPI_SCK, SPI_MISO, SPI_MOSI);
SPI.setFrequency(1000000);
Serial.begin(115200);
SD.begin(SD_CS);
WiFi.mode(WIFI_STA);
wifiMulti.addAP(ssid.c_str(), password.c_str());
wifiMulti.run();
if(WiFi.status() != WL_CONNECTED){
WiFi.disconnect(true);
wifiMulti.run();
}
audio.setPinout(I2S_BCLK, I2S_LRC, I2S_DOUT);
audio.setVolume(12); // 0...21
// audio.connecttoFS(SD, "/320k_test.mp3");
// audio.connecttoFS(SD, "test.wav");
// audio.connecttohost("http://www.wdr.de/wdrlive/media/einslive.m3u");
// audio.connecttohost("http://macslons-irish-pub-radio.com/media.asx");
// audio.connecttohost("http://mp3.ffh.de/radioffh/hqlivestream.aac"); // 128k aac
audio.connecttohost("http://mp3.ffh.de/radioffh/hqlivestream.mp3"); // 128k mp3
}
void loop()
{
audio.loop();
if(Serial.available()){ // put streamURL in serial monitor
audio.stopSong();
String r=Serial.readString(); r.trim();
if(r.length()>5) audio.connecttohost(r.c_str());
log_i("free heap=%i", ESP.getFreeHeap());
}
}
// optional
void audio_info(const char *info){
Serial.print("info "); Serial.println(info);
}
void audio_id3data(const char *info){ //id3 metadata
Serial.print("id3data ");Serial.println(info);
}
void audio_eof_mp3(const char *info){ //end of file
Serial.print("eof_mp3 ");Serial.println(info);
}
void audio_showstation(const char *info){
Serial.print("station ");Serial.println(info);
}
void audio_showstreamtitle(const char *info){
Serial.print("streamtitle ");Serial.println(info);
}
void audio_bitrate(const char *info){
Serial.print("bitrate ");Serial.println(info);
}
void audio_commercial(const char *info){ //duration in sec
Serial.print("commercial ");Serial.println(info);
}
void audio_icyurl(const char *info){ //homepage
Serial.print("icyurl ");Serial.println(info);
}
void audio_lasthost(const char *info){ //stream URL played
Serial.print("lasthost ");Serial.println(info);
}
C++
پس از آپلود، ESP32 با سرور رادیو ارتباط برقرار کرده و پخش آهنگها را آغاز میکند.
Comments (6)
وقت بخیر، من وقتی این کد رو آپلود میکنم فقط مسیج slow stream رو میبینم و صدایی پخش نمیشه مشکل از کجا میتونه باشه؟
با سلام
این مورد به ضعیف بودن دسترسی به اینترنت می باشد.
از سرور های دیگر یا وصل کردن برد به سایر اینترنت ها نیز تلاش کنید.
این مشکل حل شد ولی صدا نویز شدیدی داره وقتی هدفون رو به ماژول وصل میکنم
و مشکل دیگه ای که دارم اینه که وقتی dout از میکرو رو به din وصل میکنم صدایی شنیده نمیشه ولی وقتی به lout ماژول وصل میکنم صدا شنیده میشه
با سلام
پایه din مربوط به دیتا ورودی از سمت ماژول هست و lout به پایه های aux وصل هست. اینکه به این پایه وصل کردید و صدا را دریافت کردید عجیب می باشد.
ویدیو های مربوط به تست ماژول درحال اضافه شدن به سایت می باشد اما میتوانید از طریق این لینک ویدیو مربوط به این محصول را دانلود کنید.
من به اشتباه داشتم خروجی آنالوگ رو به ماژول میدادم که اون مشکل رو داشتم ولی وقتی خروجی دیجیتال میدم هیچ خروجی ای ندارم، اتصالاتم مثل عکسی هست که گذاشتید.