        <style>
            #donation_buttons td{
                border:medium none;
                background: inherit !important;
            }
            #donation_buttons table{               
                border:medium none;
                margin: auto;
                width: auto;
            }
        </style>
        {"id":7759,"date":"2024-08-20T03:36:16","date_gmt":"2024-08-20T03:36:16","guid":{"rendered":"https:\/\/rogerbit.com\/wprb\/?p=7759"},"modified":"2024-08-21T17:18:52","modified_gmt":"2024-08-21T17:18:52","slug":"webser-mp3-esp32","status":"publish","type":"post","link":"https:\/\/rogerbit.com\/wprb\/2024\/08\/webser-mp3-esp32\/","title":{"rendered":"Control de reproductor de MP3 con webserver con ESP32 WIFI"},"content":{"rendered":"<p><iframe loading=\"lazy\" title=\"Control de reproductor de MP3 con webserver con ESP32 WIFI - PCBWay.es\" width=\"1160\" height=\"653\" src=\"https:\/\/www.youtube.com\/embed\/lJaLHRQPgmo?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>\n<hr \/>\n<p>En este tutorial, aprender\u00e1s a construir un servidor web usando el ESP32 para controlar el m\u00f3dulo YX5300, un reproductor de audio MP3 controlado por serial. Este proyecto te permitir\u00e1 gestionar la reproducci\u00f3n de archivos MP3 almacenados en una tarjeta microSD, directamente desde una interfaz web accesible desde cualquier dispositivo conectado a la misma red Wi-Fi.<\/p>\n<hr \/>\n<p style=\"text-align: left;\">Tal vez pueda interesarte proyectos en arduino, pic, rob\u00f3tica, telecomunicaciones, suscribete en\u00a0<a href=\"http:\/\/www.youtube.com\/user\/carlosvolt?sub_confirmation=1\">http:\/\/www.youtube.com\/user\/carlosvolt?sub_confirmation=1<\/a>\u00a0mucho videos con c\u00f3digo fuentes completos y diagramas<\/p>\n<p style=\"text-align: left;\"><div id=\"ubm-banners-rotation-n1\" data-interval=\"4000\" class=\"ubm_banners_rotation\" style=\"overflow: hidden; width: 200px; height: 150px;\"><div id=\"3_ubm_banner\" class=\"ubm_rotating_banner\"><a href=\"https:\/\/bit.ly\/3aXRDAu\" target=\"_blank\" rel=\"dofollow\"><img src=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/useful_banner_manager_banners\/3-2-logo youtube.png\" width=\"100%\" height=\"100%\" alt=\"SUSCRIBETE A NUESTRO CANAL DE YOUTUBE, TUTORIALES GRATIS\" \/><\/a><\/div><\/div><\/p>\n<hr \/>\n<p>El ESP32, con su potente capacidad de procesamiento y conectividad inal\u00e1mbrica, ser\u00e1 el cerebro de este proyecto, mientras que el m\u00f3dulo YX5300 se encargar\u00e1 de reproducir la m\u00fasica o los efectos de sonido que desees. Mediante una serie de comandos seriales enviados desde el ESP32, podr\u00e1s reproducir, pausar, detener, avanzar o retroceder en las pistas de audio, as\u00ed como ajustar el volumen, todo ello de manera sencilla y efectiva.<\/p>\n<p>Este proyecto es ideal para aplicaciones que requieren un sistema de control de audio remoto, como sistemas de alarma, notificaciones por voz, juguetes interactivos, o simplemente para agregar un sistema de sonido personalizado a tus proyectos de IoT. A lo largo de este tutorial, te guiaremos paso a paso en la configuraci\u00f3n del hardware, la programaci\u00f3n del ESP32, y la creaci\u00f3n de la interfaz web, de modo que puedas replicar y adaptar este proyecto a tus necesidades<\/p>\n<hr \/>\n<h2>Componentes electr\u00f3nicos<\/h2>\n<h4>Un Esp32<\/h4>\n<p><a href=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/03\/esp32.jpg\"><img loading=\"lazy\" class=\"alignnone wp-image-6331\" src=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/03\/esp32.jpg\" sizes=\"(max-width: 407px) 100vw, 407px\" srcset=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/03\/esp32.jpg 500w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/03\/esp32-300x300.jpg 300w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/03\/esp32-150x150.jpg 150w\" alt=\"\" width=\"407\" height=\"407\" \/><\/a><\/p>\n<h4>Caracter\u00edsticas del m\u00f3dulo ESP32-T<\/h4>\n<p><img src=\"http:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2017\/08\/esp32pinout-227x300.jpg\" \/><\/p>\n<h3>Conectividad<\/h3>\n<hr \/>\n<p>El m\u00f3dulo ESP32 dispone de todas las variantes del\u00a0<strong>WiFi<\/strong>:<\/p>\n<ul>\n<li>802.11 b\/g\/n\/e\/i\/n<\/li>\n<li>Wi-Fi Direct (P2P), P2P Discovery, P2P Group Owner mode and P2P Power Management<\/li>\n<\/ul>\n<p>Esta versi\u00f3n nueva incluye la conectividad mediante<strong>\u00a0Bluethoot<\/strong>\u00a0de bajo consumo<\/p>\n<ul>\n<li>Bluetooth v4.2 BR\/EDR and BLE<\/li>\n<li>BLE Beacon<\/li>\n<\/ul>\n<p>Adem\u00e1s, puede comunicarse mediante los protocoles<strong>\u00a0SPI, I2C, UART, MAC Ethernet, Host SD<\/strong><\/p>\n<h3>Prestaciones\u00a0del microcontrolador<\/h3>\n<hr \/>\n<p>La\u00a0<strong>CPU<\/strong>\u00a0est\u00e1 formado por un\u00a0<strong>SoC modelo Tensilica LX6<\/strong>\u00a0con las siguientes caracter\u00edsticas\u00a0y memoria<\/p>\n<ul>\n<li>Doble n\u00facleo de 32 bits con velocidad de 160MHz<\/li>\n<li>Memoria ROM de 448 kBytes<\/li>\n<li>Memoria SRAM de 520kBytes<\/li>\n<\/ul>\n<p>Dispne de<strong>\u00a048 Pines<\/strong><\/p>\n<ul>\n<li>18 ADC de 12 bits<\/li>\n<li>2 DAC de 8 bits<\/li>\n<li>10 pines sensores de contacto<\/li>\n<li>16 PWM<\/li>\n<li>20 Entradas\/salidas digitales<\/li>\n<\/ul>\n<h3>Alimentaci\u00f3n y modos de consumo<\/h3>\n<p>Para un correcto funcionamiento del ESP32 es necesario subministrar un voltaje de entre 2,8V y 3,6V. La energ\u00eda que consume depende del modo de funcionamiento. Contiene un modo, el\u00a0<strong>Ultra Low Power Solution (ULP)<\/strong>, en que se contin\u00faan realizando tareas b\u00e1sicas (ADC, RTC\u2026) en el modo Sleep.<\/p>\n<hr \/>\n<p><strong>Pines hembra<\/strong><\/p>\n<p><a href=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/03\/pines-hembra.jpg\"><img loading=\"lazy\" class=\"alignnone wp-image-6332\" src=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/03\/pines-hembra.jpg\" sizes=\"(max-width: 500px) 100vw, 500px\" srcset=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/03\/pines-hembra.jpg 500w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/03\/pines-hembra-300x223.jpg 300w\" alt=\"\" width=\"378\" height=\"281\" \/><\/a><\/p>\n<hr \/>\n<p><strong>Cables dupont hembra macho<\/strong><\/p>\n<p><img loading=\"lazy\" class=\"alignnone wp-image-7023 \" src=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/08\/dupunt-macho-hembra-150x150.jpg\" sizes=\"(max-width: 225px) 100vw, 225px\" srcset=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/08\/dupunt-macho-hembra-150x150.jpg 150w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/08\/dupunt-macho-hembra-300x300.jpg 300w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/08\/dupunt-macho-hembra-768x768.jpg 768w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/08\/dupunt-macho-hembra.jpg 800w\" alt=\"\" width=\"225\" height=\"225\" \/><\/p>\n<hr \/>\n<p><strong>Una tarjeta micro SD<\/strong><\/p>\n<p><img loading=\"lazy\" class=\"alignnone wp-image-7760\" src=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2024\/08\/microsd.jpg\" alt=\"\" width=\"197\" height=\"197\" srcset=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2024\/08\/microsd.jpg 550w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2024\/08\/microsd-300x300.jpg 300w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2024\/08\/microsd-150x150.jpg 150w\" sizes=\"(max-width: 197px) 100vw, 197px\" \/><\/p>\n<hr \/>\n<p><strong>Un m\u00f3dulo MP3 YX5300<\/strong><\/p>\n<p><img loading=\"lazy\" class=\"alignnone size-full wp-image-7761\" src=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2024\/08\/mp3.jpg\" alt=\"\" width=\"350\" height=\"235\" srcset=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2024\/08\/mp3.jpg 350w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2024\/08\/mp3-300x201.jpg 300w\" sizes=\"(max-width: 350px) 100vw, 350px\" \/><\/p>\n<p><strong>Manual del m\u00f3dulo\u00a0<\/strong><\/p>\n<p><a href=\"http:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2016\/01\/Serial-MP3-Player-v1.0-Manual.pdf\" rel=\"\">Serial MP3 Player v1.0 Manual<\/a><\/p>\n<p><strong>Muy importante \u2013&gt;<\/strong>\u00a0<a href=\"https:\/\/goo.gl\/xZPiJp\">https:\/\/goo.gl\/xZPiJp<\/a><\/p>\n<p><strong>Ejemplos para arduino<\/strong><\/p>\n<p><a href=\"http:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2016\/01\/SerialMP3PlayerDemoCode-for-Arduino-1.0.zip\" rel=\"\">SerialMP3PlayerDemoCode for Arduino-1.0<\/a><\/p>\n<p><strong>Programa parecido al del video.<\/strong><\/p>\n<p><a href=\"http:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2016\/01\/Serial-Debug-tool-SSCOM32.zip\" rel=\"\">Serial Debug tool \u2013 SSCOM32<\/a><\/p>\n<p><strong>Esto est\u00e1 en mandarin<\/strong><\/p>\n<p><a href=\"http:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2016\/01\/About-the-Chip-YX5300.zip\" rel=\"\">About the Chip \u2013 YX5300<\/a><\/p>\n<hr \/>\n<h4>M\u00f3dulo Relay<\/h4>\n<div><a href=\"http:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/01\/realay.jpg\"><img loading=\"lazy\" class=\"alignnone wp-image-6203\" src=\"http:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/01\/realay-1024x875.jpg\" sizes=\"(max-width: 343px) 100vw, 343px\" srcset=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/01\/realay-1024x875.jpg 1024w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/01\/realay-300x256.jpg 300w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/01\/realay-768x656.jpg 768w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/01\/realay-600x513.jpg 600w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/01\/realay-820x701.jpg 820w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/01\/realay-1320x1128.jpg 1320w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2021\/01\/realay.jpg 2048w\" alt=\"\" width=\"343\" height=\"293\" \/><\/a><\/div>\n<div>\n<h4>ESPECIFICACIONES T\u00c9CNICAS<\/h4>\n<ul>\n<li>Voltaje de Operaci\u00f3n: 5V DC<\/li>\n<li>Se\u00f1al de Control: TTL (3.3V o 5V)<\/li>\n<li>N\u00ba de Relays (canales):\u00a01\u00a0CH<\/li>\n<li>Capacidad m\u00e1x: 10A\/250VAC, 10A\/30VDC<\/li>\n<li>Corriente m\u00e1x: 10A (NO), 5A (NC)<\/li>\n<li>Tiempo de acci\u00f3n: 10 ms \/ 5 ms<\/li>\n<li>Para activar salida NO: 0 Voltios<\/li>\n<\/ul>\n<hr \/>\n<p><strong>PCB<\/strong><\/p>\n<p><img loading=\"lazy\" class=\"\" src=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/07\/pcb-1024x822.png\" width=\"433\" height=\"348\" \/><\/p>\n<p>Descargar archivo gerber \u2013&gt;\u00a0<a href=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2022\/07\/Esp32_fingerprint_PCB.zip\">Esp32_fingerprint_PCB<\/a><\/p>\n<hr \/>\n<p><strong>Circuito<\/strong><\/p>\n<p><img loading=\"lazy\" class=\"alignnone wp-image-7762\" src=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2024\/08\/circuito-977x1024.jpg\" alt=\"\" width=\"373\" height=\"391\" srcset=\"https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2024\/08\/circuito-977x1024.jpg 977w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2024\/08\/circuito-286x300.jpg 286w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2024\/08\/circuito-768x805.jpg 768w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2024\/08\/circuito-1465x1536.jpg 1465w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2024\/08\/circuito-820x860.jpg 820w, https:\/\/rogerbit.com\/wprb\/wp-content\/uploads\/2024\/08\/circuito.jpg 1736w\" sizes=\"(max-width: 373px) 100vw, 373px\" \/><\/p>\n<hr \/>\n<\/div>\n<p><strong>C\u00f3digo fuente<\/strong><\/p>\n<pre class=\"lang:default decode:true \" title=\"C\u00f3digo Fuente\">#include &lt;WiFi.h&gt;\r\n#include &lt;ESPAsyncWebServer.h&gt;\r\n#include &lt;HardwareSerial.h&gt;\r\n\/\/ Configuraci\u00f3n de la red Wi-Fi\r\nconst char* ssid = \"Tu_Red_Wifi\";\r\nconst char* password = \"Tu_Clave_wifi\";\r\n\/\/ Creaci\u00f3n del servidor web\r\nAsyncWebServer server(80);\r\n\/\/ Configuraci\u00f3n del puerto serial para el YX5300\r\nHardwareSerial mp3Serial(2); \/\/ Usamos Serial2 para la comunicaci\u00f3n con el YX5300\r\n\/\/ Funci\u00f3n para enviar comandos al m\u00f3dulo YX5300\r\nvoid sendCommand(uint8_t cmd, uint8_t arg1 = 0, uint8_t arg2 = 0) {\r\n  uint8_t command[8] = {0x7E, 0xFF, 0x06, cmd, 0x00, arg1, arg2, 0xEF};\r\n  mp3Serial.write(command, sizeof(command));\r\n}\r\nvoid setup() {\r\n  \/\/ Inicializaci\u00f3n de seriales\r\n  Serial.begin(115200);\r\n  mp3Serial.begin(9600, SERIAL_8N1, 16, 17); \/\/ RX=16, TX=17\r\n  \/\/ Conexi\u00f3n a la red Wi-Fi\r\n  WiFi.begin(ssid, password);\r\n  while (WiFi.status() != WL_CONNECTED) {\r\n    delay(1000);\r\n    Serial.println(\"Conectando a WiFi...\");\r\n  }\r\n  Serial.println(\"Conectado a WiFi\");\r\n  Serial.println(WiFi.localIP());\r\n  \/\/ Configuraci\u00f3n de las rutas en el servidor web\r\n  server.on(\"\/\", HTTP_GET, [](AsyncWebServerRequest *request) {\r\n    String html = \"&lt;h1&gt;Control de Modulo YX5300&lt;\/h1&gt;\";\r\n    html += \"&lt;button onclick=\\\"fetch('\/play')\\\"&gt;Play&lt;\/button&gt;&lt;br&gt;\";\r\n    html += \"&lt;button onclick=\\\"fetch('\/pause')\\\"&gt;Paus&lt;\/button&gt;&lt;br&gt;\";\r\n    html += \"&lt;button onclick=\\\"fetch('\/stop')\\\"&gt;Stop&lt;\/button&gt;&lt;br&gt;\";\r\n    html += \"&lt;button onclick=\\\"fetch('\/next')\\\"&gt;Prox&lt;\/button&gt;&lt;br&gt;\";\r\n    html += \"&lt;button onclick=\\\"fetch('\/previous')\\\"&gt;Prev&lt;\/button&gt;&lt;br&gt;\";\r\n    html += \"&lt;button onclick=\\\"fetch('\/volumeup')\\\"&gt;Vol +&lt;\/button&gt;&lt;br&gt;\";\r\n    html += \"&lt;button onclick=\\\"fetch('\/volumedown')\\\"&gt;Vol -&lt;\/button&gt;&lt;br&gt;\";\r\n    request-&gt;send(200, \"text\/html\", html);\r\n  });\r\n  \/\/ Rutas para controlar el m\u00f3dulo\r\n  server.on(\"\/play\", HTTP_GET, [](AsyncWebServerRequest *request) {\r\n    sendCommand(0x0D); \/\/ Play\r\n    request-&gt;send(200, \"text\/plain\", \"Playing Track 1\");\r\n  });\r\n  server.on(\"\/pause\", HTTP_GET, [](AsyncWebServerRequest *request) {\r\n    sendCommand(0x0E); \/\/ Pausar\r\n    request-&gt;send(200, \"text\/plain\", \"Paused\");\r\n  });\r\n  server.on(\"\/stop\", HTTP_GET, [](AsyncWebServerRequest *request) {\r\n    sendCommand(0x16); \/\/ Detener\r\n    request-&gt;send(200, \"text\/plain\", \"Stopped\");\r\n  });\r\n  server.on(\"\/next\", HTTP_GET, [](AsyncWebServerRequest *request) {\r\n    sendCommand(0x01); \/\/ Siguiente pista\r\n    request-&gt;send(200, \"text\/plain\", \"Next Track\");\r\n  });\r\n  server.on(\"\/previous\", HTTP_GET, [](AsyncWebServerRequest *request) {\r\n    sendCommand(0x02); \/\/ Pista anterior\r\n    request-&gt;send(200, \"text\/plain\", \"Previous Track\");\r\n  });\r\n  server.on(\"\/volumeup\", HTTP_GET, [](AsyncWebServerRequest *request) {\r\n    static uint8_t volume = 15;\r\n    if (volume &lt; 30) volume++;\r\n    sendCommand(0x04, 0x00, volume); \/\/ Subir volumen\r\n    request-&gt;send(200, \"text\/plain\", \"Volume Up\");\r\n  });\r\n  server.on(\"\/volumedown\", HTTP_GET, [](AsyncWebServerRequest *request) {\r\n    static uint8_t volume = 15;\r\n    if (volume &gt; 0) volume--;\r\n    sendCommand(0x05, 0x00, volume); \/\/ Bajar volumen\r\n    request-&gt;send(200, \"text\/plain\", \"Volume Down\");\r\n  });\r\n  \/\/ Iniciar el servidor\r\n  server.begin();\r\n}\r\nvoid loop() {\r\n}<\/pre>\n<div>\n<hr \/>\n<p>No te pierdas ning\u00fan video m\u00e1s suscr\u00edbete a nuestro canal de telegram\u00a0<a href=\"https:\/\/t.me\/carlosvolt_electronica_robotica\">https:\/\/t.me\/carlosvolt_electronica_robotica<\/a><\/p>\n<hr \/>\n<div class=\"page-sidebar widget\" id=\"donation_buttons\"><form action=\"https:\/\/www.paypal.com\/cgi-bin\/webscr\" method=\"post\" target=\"_blank\" ><input type=\"hidden\" name=\"business\" value=\"donacion@rogerbit.com\"><input type=\"hidden\" name=\"bn\" value=\"mbjtechnolabs_SP\"><input type=\"hidden\" name=\"cmd\" value=\"_donations\"><input type=\"hidden\" name=\"item_name\" value=\"Ayuda a RogerBit.com\"><input type=\"hidden\" name=\"item_number\" value=\"www.rogerbit.com\"><input type=\"hidden\" class=\"set_donation_button_amount\" name=\"amount\" value=\"1\"><table ><tbody><tr><td><label for=\"rogerBit necesita de tu ayuda para seguir existiendo :-)\">rogerBit necesita de tu ayuda para seguir existiendo :-)<\/label><\/td><\/tr><\/tbody><\/table><table ><tbody><tr><td><input style=\"margin-top:10px;\" type=\"image\" name=\"submit\" border=\"0\" src=\"https:\/\/www.paypal.com\/en_US\/i\/btn\/btn_donateCC_LG.gif\" alt=\"PayPal - The safer, easier way to pay online\"><\/td><\/tr><\/tbody><\/table><input type=\"hidden\" name=\"currency_code\" value=\"USD\"><input type=\"hidden\" name=\"notify_url\" value=\"https:\/\/rogerbit.com\/wprb\/?Donation_Button&#038;action=ipn_handler\"><\/form><\/div>\n<hr \/>\n<p><strong>PROYECTO RECOMENDADO<\/strong><\/p>\n<p><iframe loading=\"lazy\" title=\"\u2705 Serial Mp3 Player YX5300-Catalex (Primera parte)\" width=\"1160\" height=\"653\" src=\"https:\/\/www.youtube.com\/embed\/KOmnmZChaDE?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>\n<\/div>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>En este tutorial, aprender\u00e1s a construir un servidor web usando el ESP32 para controlar el m\u00f3dulo YX5300, un reproductor de audio MP3 controlado por serial. Este proyecto te permitir\u00e1 gestionar la reproducci\u00f3n de archivos MP3 almacenados en una tarjeta microSD, directamente desde una interfaz web accesible desde cualquier dispositivo conectado a la misma red Wi-Fi. [&hellip;]<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":7763,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[11],"tags":[45,1997,595,1999,465,2000,145,1998,921,1996],"_links":{"self":[{"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/posts\/7759"}],"collection":[{"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/comments?post=7759"}],"version-history":[{"count":5,"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/posts\/7759\/revisions"}],"predecessor-version":[{"id":7769,"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/posts\/7759\/revisions\/7769"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/media\/7763"}],"wp:attachment":[{"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/media?parent=7759"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/categories?post=7759"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rogerbit.com\/wprb\/wp-json\/wp\/v2\/tags?post=7759"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}