{"id":459,"date":"2024-06-10T11:35:41","date_gmt":"2024-06-10T11:35:41","guid":{"rendered":"https:\/\/blogsaverroes.juntadeandalucia.es\/industria4\/?p=459"},"modified":"2024-06-10T11:35:41","modified_gmt":"2024-06-10T11:35:41","slug":"esp32-s3-devkit-v1-con-dfplayermini","status":"publish","type":"post","link":"https:\/\/blogsaverroes.juntadeandalucia.es\/industria4\/2024\/06\/10\/esp32-s3-devkit-v1-con-dfplayermini\/","title":{"rendered":"ESP32-S3 devKit V1 con DFPlayerMini"},"content":{"rendered":"<p>Esto es algo que \u00faltimamente ha tra\u00eddo de cabeza a un alumno (y a m\u00ed de camino) para hacer funcionar algo que realmente no es nada complicado y que hemos hecho funcionar mil veces con Arduino UNO, Mega y D1 mini. Total, cosas a recordar:<\/p>\n<ul>\n<li><b>TX <\/b>del micro, <b>pin 7 en nuestro caso<\/b>, que se corresponde con el RX del perif\u00e9rico (DFPlayerMini)<\/li>\n<li><b>RX <\/b>del micro,<b> pin 3 en nuestro caso<\/b>, que se corresponde con el TX del perif\u00e9rico (DFPlayerMini)<\/li>\n<li>Uso de HardwareSerial en lugar de SoftwareSerial, que es la forma de comunicar con UART del ESP32 (SoftwareSerial se usa con los Arduino).<\/li>\n<li>UART2, que es la configurable en cualquier pin (esto es un puntazo del ESP32, tienes 3 UART, dos est\u00e1n fijas en dos parejas de pines y te queda una tercera para que la pongas donde quieras).<\/li>\n<li>Alimentaci\u00f3n del DFPlayer a 5V, se pueden sacar del cable directamente y luego alimentar al micro por 5Vin y GND. <strong>Esto es clave, el DFPlayer necesita 5V s\u00ed o s\u00ed y el ESP32 NO los provee<\/strong>. Por tanto hay que sacarlos directamente de fuente externa cortocircuitando tierras o del cable USB y luego alimentar al ESP32 por su entrada 5Vin.<\/li>\n<li>El audio a reproducir en el DFPlayer se indica con un n\u00famero. En nuestro caso s\u00f3lo hab\u00eda una pista, pero va por orden alfab\u00e9tico; es decir, el DPPlayer mira su tarjeta SD, ordena las pistas por orden alfab\u00e9tico (lo sencillo es poner 0000.mp3, 0001.mp3&#8230;) y seg\u00fan el n\u00famero que le hayas puesto, esa reproduce. Es trivial hacer una funci\u00f3n de mapeo para que se vaya a la pista que quieres con el uso de un <em>switch case<\/em>.<\/li>\n<\/ul>\n<p>Pongo por aqu\u00ed el montaje de prueba:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-460\" src=\"https:\/\/blogsaverroes.juntadeandalucia.es\/industria4\/files\/2024\/06\/ESP32-S3_DFPlayer-Mini-scaled.jpg\" alt=\"\" width=\"1920\" height=\"2560\" srcset=\"https:\/\/blogsaverroes.juntadeandalucia.es\/industria4\/files\/2024\/06\/ESP32-S3_DFPlayer-Mini-scaled.jpg 1920w, https:\/\/blogsaverroes.juntadeandalucia.es\/industria4\/files\/2024\/06\/ESP32-S3_DFPlayer-Mini-225x300.jpg 225w, https:\/\/blogsaverroes.juntadeandalucia.es\/industria4\/files\/2024\/06\/ESP32-S3_DFPlayer-Mini-768x1024.jpg 768w, https:\/\/blogsaverroes.juntadeandalucia.es\/industria4\/files\/2024\/06\/ESP32-S3_DFPlayer-Mini-1152x1536.jpg 1152w, https:\/\/blogsaverroes.juntadeandalucia.es\/industria4\/files\/2024\/06\/ESP32-S3_DFPlayer-Mini-1536x2048.jpg 1536w\" sizes=\"(max-width: 1920px) 100vw, 1920px\" \/><\/p>\n<p>Y pongo por aqu\u00ed el c\u00f3digo que finalmente funciona:<\/p>\n<div>\n<div><code>\/\/PLACA ESP32-S3-USB-OTG seg\u00fan Arduino IDE. ESP32-S3 devKit V1<\/code><\/div>\n<div><code>#include \"HardwareSerial.h\"<\/code><\/div>\n<div><code>#include \"DFRobotDFPlayerMini.h\"<\/code><\/div>\n<div><code>const int MySerialRX=3; &nbsp; &nbsp; &nbsp; \/\/Pin GPIO fijado para ser RX del micro (TX del perif\u00e9rico, que es el DFPlayer)<\/code><\/div>\n<div><code>const int MySerialTX=7; &nbsp; &nbsp; &nbsp; \/\/Pin GPIO fijado para ser TX del micro (RX del perif\u00e9rico, que es el DFPlayer)<\/code><\/div>\n<div><code>HardwareSerial mySerial(2); &nbsp; \/\/ UART 2, configurable por usuario en cualquier pareja de pines del ESP32<\/code><\/div>\n<div><code>DFRobotDFPlayerMini myDFPlayer; \/\/Perif\u00e9rico para reproducci\u00f3n de audio; nos comunicamos con \u00e9l por medio de la UART<\/code><\/div>\n<div><code>const int RETARDO = 3000; &nbsp; \/\/S\u00f3lo para prueba de sonido<\/code><\/div>\n<div><code>\/* Funci\u00f3n para arrancar el perif\u00e9rico de reproducci\u00f3n de sonido - DFPlayerMini *\/<\/code><\/div>\n<div><code>void setupDFPlayer() &nbsp;\/\/ Funci\u00f3n para el arranque del reproductor de audio<\/code><\/div>\n<div><code>{<\/code><\/div>\n<div><code>&nbsp; mySerial.begin(9600, SERIAL_8N1, MySerialRX, MySerialTX); \/\/ Arranque de UART 2 para comunicaci\u00f3n con DFPlayer<\/code><\/div>\n<div><code>&nbsp; Serial.println(\"SETUP\");<\/code><\/div>\n<div><code>&nbsp; Serial.println(F(\"Arrancando DFPlayer ... (Puede tomar 3~5 segundos)\"));<\/code><\/div>\n<div><code>&nbsp; if (!myDFPlayer.begin(mySerial)) { &nbsp;\/\/Usamos HardwareSerial para comunicar con UART del ESP32<\/code><\/div>\n<div><code>&nbsp; &nbsp; Serial.println(F(\"Incapaz de arrancar:\"));<\/code><\/div>\n<div><code>&nbsp; &nbsp; Serial.println(F(\"1.Revisar conexiones\"));<\/code><\/div>\n<div><code>&nbsp; &nbsp; Serial.println(F(\"2.Insertar SD card\"));<\/code><\/div>\n<div><code>&nbsp; &nbsp; Serial.println(F(\"3.Asegurar que llegan 5V a la alimentaci\u00f3n del DF Player y la tierra es com\u00fan con la del micro\"));<\/code><\/div>\n<div><code>&nbsp; &nbsp; while (true);<\/code><\/div>\n<div><code>&nbsp; }<\/code><\/div>\n<div><code>&nbsp; Serial.println(F(\"DFPlayer Mini online.\"));<\/code><\/div>\n<div><code>&nbsp; \/\/---- Time out ----<\/code><\/div>\n<div><code>&nbsp; myDFPlayer.setTimeOut(500); &nbsp;\/\/Establecemos time out de la comunicaci\u00f3n serie a 500ms<\/code><\/div>\n<div><code>&nbsp; \/\/---- Volumen ----<\/code><\/div>\n<div><code>&nbsp; myDFPlayer.volume(25); &nbsp;\/\/Fijamos valor de volumen (0~30).<\/code><\/div>\n<div><code>&nbsp; \/\/---- Ecualizaci\u00f3n ----<\/code><\/div>\n<div><code>&nbsp; myDFPlayer.EQ(DFPLAYER_EQ_NORMAL);<\/code><\/div>\n<div><code>&nbsp; \/\/---- Se fija el dispositivo de almacenamiento por defecto<\/code><\/div>\n<div><code>&nbsp; myDFPlayer.outputDevice(DFPLAYER_DEVICE_SD);<\/code><\/div>\n<div><code>}<\/code><\/div>\n<div><code>void setup() {<\/code><\/div>\n<div><code>&nbsp; Serial.begin(115200); \/\/Velocidad del puerto serie est\u00e1ndar (monitor serie)<\/code><\/div>\n<div><code>&nbsp; setupDFPlayer(); &nbsp; &nbsp; &nbsp;\/\/Arranque del DFPlayer<\/code><\/div>\n<div><code>}<\/code><\/div>\n<div><code>void loop() {<\/code><\/div>\n<div><code>&nbsp; \/\/PRUEBA DE SONIDO\/\/<\/code><\/div>\n<div><code>&nbsp; myDFPlayer.play(1); &nbsp;\/\/Hacemos sonar la primera canci\u00f3n (orden alfab\u00e9tico)<\/code><\/div>\n<div><code>&nbsp; Serial.println(F(\"SONANDO...\"));<\/code><\/div>\n<div><code>&nbsp; delay(RETARDO);<\/code><\/div>\n<div><code>&nbsp; \/\/PRUEBA DE SONIDO\/\/<\/code><\/div>\n<div><code>}<\/code><\/div>\n<div>&nbsp;<\/div>\n<\/div>\n<!--themify_builder_content-->\n<div id=\"themify_builder_content-459\" data-postid=\"459\" class=\"themify_builder_content themify_builder_content-459 themify_builder tf_clear\">\n    <\/div>\n<!--\/themify_builder_content-->\n","protected":false},"excerpt":{"rendered":"<p>Esto es algo que \u00faltimamente ha tra\u00eddo de cabeza a un alumno (y a m\u00ed de camino) para hacer funcionar algo que realmente no es nada complicado y que hemos hecho funcionar mil veces con Arduino UNO, Mega y D1 mini. Total, cosas a recordar: TX del micro, pin 7 en nuestro caso, que se [&hellip;]<\/p>\n","protected":false},"author":13840,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[1],"tags":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/blogsaverroes.juntadeandalucia.es\/industria4\/wp-json\/wp\/v2\/posts\/459"}],"collection":[{"href":"https:\/\/blogsaverroes.juntadeandalucia.es\/industria4\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogsaverroes.juntadeandalucia.es\/industria4\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogsaverroes.juntadeandalucia.es\/industria4\/wp-json\/wp\/v2\/users\/13840"}],"replies":[{"embeddable":true,"href":"https:\/\/blogsaverroes.juntadeandalucia.es\/industria4\/wp-json\/wp\/v2\/comments?post=459"}],"version-history":[{"count":2,"href":"https:\/\/blogsaverroes.juntadeandalucia.es\/industria4\/wp-json\/wp\/v2\/posts\/459\/revisions"}],"predecessor-version":[{"id":462,"href":"https:\/\/blogsaverroes.juntadeandalucia.es\/industria4\/wp-json\/wp\/v2\/posts\/459\/revisions\/462"}],"wp:attachment":[{"href":"https:\/\/blogsaverroes.juntadeandalucia.es\/industria4\/wp-json\/wp\/v2\/media?parent=459"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogsaverroes.juntadeandalucia.es\/industria4\/wp-json\/wp\/v2\/categories?post=459"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogsaverroes.juntadeandalucia.es\/industria4\/wp-json\/wp\/v2\/tags?post=459"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}