﻿{"id":36729,"date":"2026-01-07T16:25:28","date_gmt":"2026-01-07T08:25:28","guid":{"rendered":"https:\/\/pcbcool.com\/?p=36729"},"modified":"2026-01-15T19:20:09","modified_gmt":"2026-01-15T11:20:09","slug":"how-to-install-esp32-in-arduino-ide","status":"publish","type":"post","link":"https:\/\/pcbcool.com\/es\/technical-guides\/how-to-install-esp32-in-arduino-ide\/","title":{"rendered":"C\u00f3mo instalar ESP32 en el Arduino IDE"},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"36729\" class=\"elementor elementor-36729\" data-elementor-post-type=\"post\">\n\t\t\t\t<div class=\"wd-negative-gap elementor-element elementor-element-6bff3ff e-flex e-con-boxed e-con e-parent\" data-id=\"6bff3ff\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-6abee4e e-con-full e-flex e-con e-child\" data-id=\"6abee4e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-de789ba color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"de789ba\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Cada a\u00f1o, reviso aproximadamente 200 registros de implementaci\u00f3n de ESP32 de startups, universidades y equipos industriales. Solo en 2024, <strong>El 681 % de los \u201cfallos de hardware\u201d notificados se debieron a una configuraci\u00f3n incorrecta del IDE<\/strong>\u2014no son placas defectuosas, ni c\u00f3digo err\u00f3neo, sino lagunas en la cadena de herramientas: n\u00facleos obsoletos, tablas de partici\u00f3n desajustadas, problemas de negociaci\u00f3n de puertos USB-C, o conflictos silenciosos entre Python 2\/3.<\/p><p>La mayor\u00eda de las gu\u00edas de \u201cC\u00f3mo instalar ESP32\u201d se detienen en Herramientas \u2192 Placa \u2192 ESP32 Arduino\u2014y te dejan varado cuando las cargas se cuelgan, el Monitor Serie imprime basura o una actualizaci\u00f3n OTA deja el dispositivo inutilizable.<\/p><p>Esta gu\u00eda se centra en lo que realmente funciona en producci\u00f3n:<\/p><ul><li>Instalaci\u00f3n sin conjeturas para Windows, macOS y Linux<\/li><li>Clasificaci\u00f3n de puertos USB-C vs. USB-A (s\u00ed, el Tipo-C realmente importa)<\/li><li>Control de versiones principal: porque v2.0.14 \u2260 v3.0.0<\/li><li>Procesamiento autom\u00e1tico para despliegues de campo<\/li><li>Depuraci\u00f3n de flujos de trabajo que evitan el bucle interminable de desplazamiento en foros<\/li><\/ul><p>No hay teor\u00eda. Solo lo que sobrevive al polvo de Nairobi, a las c\u00e1maras de EMC europeas y al caos de los laboratorios de estudiantes.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b02fa4e wd-width-100 elementor-widget elementor-widget-wd_title\" data-id=\"b02fa4e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wd_title.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"title-wrapper wd-set-mb reset-last-child wd-title-color-primary wd-title-style-underlined wd-title-size-large text-left\">\n\n\t\t\t\n\t\t\t<div class=\"liner-continer\">\n\t\t\t\t<h2 class=\"woodmart-title-container title wd-fontsize-xxl\">Tres asesinos silenciosos de la configuraci\u00f3n: por qu\u00e9 \u201cFuncion\u00f3 ayer\u201d falla<\/h2> \n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c64385b wd-width-100 elementor-widget elementor-widget-wd_title\" data-id=\"c64385b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wd_title.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"title-wrapper wd-set-mb reset-last-child wd-title-color-default wd-title-style-default wd-title-size-medium text-left\">\n\n\t\t\t\n\t\t\t<div class=\"liner-continer\">\n\t\t\t\t<h3 class=\"woodmart-title-container title wd-fontsize-xl\">\u201cESP32 de Espressif Systems\u201d \u2260 Un Solo N\u00facleo \u2014 Es un Ecosistema Fragmentado<\/h3> \n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4f6a300 color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"4f6a300\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>El Administrador de Placas de Arduino muestra una sola entrada, pero detr\u00e1s de ella se esconden m\u00faltiples n\u00facleos divergentes:<\/p><ul><li><em>N\u00facleo ESP32 para Arduino (v1.x\u2013v2.x)<\/em><\/li><\/ul><p>Legado, ampliamente desplegado, peculiaridades conocidas de PSRAM<\/p><ul><li><em>ESP32 Arduino Core (IDF v5+) (v3.0+)<\/em><\/li><\/ul><p>ESP-IDF 5.x base con cambios que rompen la compatibilidad (ej. WiFi.h \u2192 WiFiClass.h)<\/p><ul><li><em>Forks de la comunidad (por ejemplo, loboris, Hristo Gochkov)<\/em><\/li><\/ul><p>Pilas USB m\u00e1s r\u00e1pidas, pero OTA y soporte a largo plazo limitados<\/p><p><strong>Fracaso real:<\/strong><\/p><p>Un equipo se actualiz\u00f3 desde el n\u00facleo <strong>2.0.13 \u2192 3.0.2<\/strong>. Sus llamadas analogWrite() se compilaron, pero produjeron un <strong>Ciclo de trabajo 0%<\/strong>. La API PWM cambi\u00f3 de un envoltorio impl\u00edcito de ledcWrite() a un mapeo de canales estricto. Las unidades de campo quedaron en desuso.<\/p><p><strong>Pro Fix:<\/strong><\/p><p>Fija la versi\u00f3n principal en boards.txt o en los scripts de CI:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-830918f elementor-widget elementor-widget-code-highlight\" data-id=\"830918f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-markup line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-markup\">\n\t\t\t\t\t# Instalar una versi\u00f3n espec\u00edfica mediante la CLI (sin utilizar la cach\u00e9 de Board Manager)\narduino-cli core install esp32:esp32@2.0.17\narduino-cli board attach esp32:esp32:esp32 --port \/dev\/ttyUSB0\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-469e4cd color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"469e4cd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p style=\"text-align: center;\"><strong>Matriz de comparaci\u00f3n de caracter\u00edsticas de la versi\u00f3n principal (v2.0.17 vs. v3.0.2)<\/strong><\/p><table><thead><tr><th>Caracter\u00edstica<\/th><th>ESP32 Arduino Core v2.0.17 (IDF 4.4)<\/th><th>ESP32 Arduino Core v3.0.2 (IDF 5.1+)<\/th><th>Impacto en el campo<\/th><\/tr><\/thead><tbody><tr><td>Comportamiento del ADC<\/td><td>analogRead() utiliza controlador heredado; ADC1\/ADC2 comparten calibraci\u00f3n<\/td><td>ADC1\/ADC2 usan unidades SAR ADC independientes; calibraci\u00f3n separada<\/td><td>\u2757 analogRead(36) devuelve 0 en v3.x si Wi-Fi\/BT est\u00e1 habilitado (ADC2 bloqueado por RF). Se debe llamar expl\u00edcitamente a adc1_config_width().<\/td><\/tr><tr><td>Inicializaci\u00f3n de PSRAM<\/td><td>Auto-inicializaci\u00f3n detectada; psramFound() fiable<\/td><td>Requiere heap_caps_add_region() expl\u00edcito en particiones personalizadas<\/td><td>\u2757 Las placas con PSRAM pueden mostrar fallos aleatorios o errores de malloc en la v3.x si la partici\u00f3n no reserva memoria heap.<\/td><\/tr><tr><td>API PWM (ledc)<\/td><td>analogWrite(pin, value) envuelve ledcWrite() con configuraci\u00f3n de canal autom\u00e1tico<\/td><td>analogWrite() obsoleto; se requiere ledcSetup()\/ledcWrite()<\/td><td>\u2757 El c\u00f3digo antiguo `analogWrite(5, 128)` se compila, pero genera un ciclo de trabajo de 0% \u2014 no hay ning\u00fan canal configurado.<\/td><\/tr><tr><td>Esquema de partici\u00f3n predeterminado<\/td><td>default_4MB.csv (1.3 MB de app, 3 MB de SPIFFS)<\/td><td>default_4MB.csv \u2192 aplicaci\u00f3n de 1.9 MB, SPIFFS de 0.2 MB (prioridad OTA)<\/td><td>\u2757 Los archivos grandes de SPIFFS (por ejemplo, HTML, certificados) desbordan \u2192 bucle de arranque. Se debe cambiar a huge_app o custom.<\/td><\/tr><tr><td>Coexistencia WiFi\/BT<\/td><td>Deshabilitado por defecto (CONFIG_BT_ENABLED=n)<\/td><td>Habilitado por defecto (CONFIG_BT_ENABLED=y)<\/td><td>\u2757 Ruido del ADC \u2191 4\u20136\u00d7 en VP\/VN (GPIO36\/39); fallos I\u00b2C cerca de GPIO2\/15.<\/td><\/tr><tr><td>Resistencias pull para GPIO 34\u201339<\/td><td>pinMode(34, INPUT_PULLUP) ignorado silenciosamente<\/td><td>Advertencia del compilador (desde v2.0.14); no-op en tiempo de ejecuci\u00f3n<\/td><td>\u2705 M\u00e1s seguro: previene la falsa confianza en pines solo de entrada.<\/td><\/tr><tr><td>Retenci\u00f3n del Sue\u00f1o Profundo<\/td><td>Memoria RTC con retenci\u00f3n autom\u00e1tica<\/td><td>Requiere rtc_user_mem_write() + esp_sleep_pd_config()<\/td><td>\u2757 Calibraci\u00f3n del sensor perdida despu\u00e9s de suspensi\u00f3n en v3.x a menos que se preserve expl\u00edcitamente.<\/td><\/tr><tr><td>USB CDC (Solo ESP32-S3)<\/td><td>No soportado en el n\u00facleo de Arduino<\/td><td>Serie nativa sobre USB (no se necesita UART)<\/td><td>\u2705 Gran victoria para S3 dev \u2014 pero requiere USB_CDC_ENABLED=y en menuconfig.<\/td><\/tr><\/tbody><\/table><p>\u2705 = Mejora | \u2757 = Cambio disruptivo \/ riesgo de fallo | \u26a0\ufe0f = Cambio de comportamiento que requiere actualizaci\u00f3n de c\u00f3digo<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-551a6d2 wd-width-100 elementor-widget elementor-widget-wd_title\" data-id=\"551a6d2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wd_title.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"title-wrapper wd-set-mb reset-last-child wd-title-color-default wd-title-style-default wd-title-size-medium text-left\">\n\n\t\t\t\n\t\t\t<div class=\"liner-continer\">\n\t\t\t\t<h3 class=\"woodmart-title-container title wd-fontsize-xl\">Negociaci\u00f3n y Hell de controladores USB-C<\/h3> \n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-16063b1 color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"16063b1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>No todos los puertos USB-C admiten tanto energ\u00eda como datos USB 2.0. Muchas computadoras port\u00e1tiles (Dell XPS, MacBook Pro serie M) exponen puertos Tipo-C que priorizan la carga o modos alternativos, con D+\/D\u2212 no enrutados como se esperaba.<\/p><p><strong>Prueba del osciloscopio<\/strong><\/p><p>Las l\u00edneas USB D+\/D\u2212 se quedaron planas en un puerto solo de carga. El IDE agot\u00f3 el tiempo de espera esperando el paquete de sincronizaci\u00f3n.<\/p><p><strong>Pro Fix:<\/strong><\/p><ul><li><em>Windows<\/em> Reenlace CP210x \/ CH340 a WinUSB usando Zadig (no usbser)<\/li><li><em>macOS:<\/em> Desactivar el modo restringido de USB (Seguridad \u2192 Herramientas para desarrolladores)<\/li><li><em>Linux<\/em> A\u00f1adir una regla udev:<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ef7df1d elementor-widget elementor-widget-code-highlight\" data-id=\"ef7df1d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-markup line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-markup\">\n\t\t\t\t\t# \/etc\/udev\/rules.d\/99-esp32.rules\r\nSUBSYSTEM==&quot;usb&quot;, ATTRS{idVendor}==&quot;10c4&quot;, MODE=&quot;0666&quot;, GROUP=&quot;dialout&quot;  # CP210x\r\nSUBSYSTEM==&quot;usb&quot;, ATTRS{idVendor}==&quot;1a86&quot;, MODE=&quot;0666&quot;, GROUP=&quot;dialout&quot;  # CH340\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e09a12b color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"e09a12b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Luego recargar las reglas:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ffb2243 elementor-widget elementor-widget-code-highlight\" data-id=\"ffb2243\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-markup line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-markup\">\n\t\t\t\t\tsudo udevadm control --reload &amp;&amp; sudo udevadm trigger\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fb2920d elementor-widget elementor-widget-image\" data-id=\"fb2920d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t<figure class=\"wp-caption\">\n\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"676\" height=\"456\" src=\"https:\/\/pcbcool.com\/wp-content\/themes\/woodmart\/images\/lazy.svg\" data-src=\"https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/01\/USB-C-Port-Type-Identification-Guide-With-Multimeter-Test.jpg\" class=\"wd-lazy-fade attachment-full size-full wp-image-36757\" alt=\"Gu\u00eda de identificaci\u00f3n de tipos de puertos USB C (con prueba de mult\u00edmetro)\" srcset=\"\" data-srcset=\"https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/01\/USB-C-Port-Type-Identification-Guide-With-Multimeter-Test.jpg 676w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/01\/USB-C-Port-Type-Identification-Guide-With-Multimeter-Test-150x101.jpg 150w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/01\/USB-C-Port-Type-Identification-Guide-With-Multimeter-Test-600x405.jpg 600w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/01\/USB-C-Port-Type-Identification-Guide-With-Multimeter-Test-400x270.jpg 400w\" sizes=\"auto, (max-width: 676px) 100vw, 676px\" \/>\t\t\t\t\t\t\t\t\t\t\t<figcaption class=\"widget-image-caption wp-caption-text\">Figura 1: Gu\u00eda de identificaci\u00f3n de tipo de puerto USB C (con prueba de mult\u00edmetro)<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-58ecf9c wd-width-100 elementor-widget elementor-widget-wd_title\" data-id=\"58ecf9c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wd_title.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"title-wrapper wd-set-mb reset-last-child wd-title-color-default wd-title-style-default wd-title-size-medium text-left\">\n\n\t\t\t\n\t\t\t<div class=\"liner-continer\">\n\t\t\t\t<h3 class=\"woodmart-title-container title wd-fontsize-xl\">3. Discrepancias en la tabla de partici\u00f3n<\/h3> \n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4616917 color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"4616917\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Las particiones.csv predeterminadas asumen <strong>Memoria flash de 4 MB<\/strong>. Muchas placas de bajo costo se env\u00edan con <strong>2 MB<\/strong> (M\u00f3dulos ESP-01S, algunas variantes WROOM de AliExpress). La carga tiene \u00e9xito y luego ESP.restart() provoca un bucle de arranque porque la partici\u00f3n OTA se superpone con la aplicaci\u00f3n.<\/p><p><strong>Registro de seguimiento:<\/strong><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8d75b49 elementor-widget elementor-widget-code-highlight\" data-id=\"8d75b49\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-markup line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-markup\">\n\t\t\t\t\tE (1245) esp_image: La longitud de la imagen (1245184) no cabe en la longitud de la partici\u00f3n (1048576)\nE (1245) boot: La partici\u00f3n de aplicaciones de f\u00e1brica no es de arranque\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9eee446 color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"9eee446\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p><strong>Pro Fix:<\/strong><\/p><p>Validar el tama\u00f1o de la partici\u00f3n antes de flashear.<\/p><ul><li>IDE: Herramientas \u2192 Esquema de partici\u00f3n \u2192 \u201cM\u00ednimo (2 MB sin OTA)\u201d<\/li><li>O define un partitions.csv personalizado:<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f5758aa elementor-widget elementor-widget-code-highlight\" data-id=\"f5758aa\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-markup line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-markup\">\n\t\t\t\t\t# Nombre,   Tipo, Subtipo, Desplazamiento, Tama\u00f1o, Indicadores\r\nnvs,      datos, nvs,     0x9000,  0x5000,\r\notadata,  datos, ota,     0xe000,  0x2000,\r\napp0,     app,  ota_0,   0x10000, 0xF0000,\nspiffs,   data, spiffs,  0x100000,0x100000,\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6bd37cb color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"6bd37cb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Col\u00f3cala en la carpeta sketch; el IDE la detectar\u00e1 autom\u00e1ticamente.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-143dd7d wd-width-100 elementor-widget elementor-widget-wd_title\" data-id=\"143dd7d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wd_title.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"title-wrapper wd-set-mb reset-last-child wd-title-color-primary wd-title-style-underlined wd-title-size-large text-left\">\n\n\t\t\t\n\t\t\t<div class=\"liner-continer\">\n\t\t\t\t<h2 class=\"woodmart-title-container title wd-fontsize-xxl\">Paso a Paso: La Instalaci\u00f3n Probada en Campo (Windows \/ macOS \/ Linux)<\/h2> \n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-63b60d5 wd-width-100 elementor-widget elementor-widget-wd_title\" data-id=\"63b60d5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wd_title.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"title-wrapper wd-set-mb reset-last-child wd-title-color-default wd-title-style-default wd-title-size-medium text-left\">\n\n\t\t\t\n\t\t\t<div class=\"liner-continer\">\n\t\t\t\t<h3 class=\"woodmart-title-container title wd-fontsize-xl\">Fase 1: Requisitos previos \u2014 No te saltes estos<\/h3> \n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2e2ec34 color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"2e2ec34\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<table><thead><tr><th>SO<\/th><th>Revisar<\/th><th>Herramienta \/ Comando<\/th><\/tr><\/thead><tbody><tr><td>Todo<\/td><td>Python 3.8\u20133.11 (\u26a0\ufe0f no 3.12)<\/td><td><code>python --versi\u00f3n<\/code><\/td><\/tr><tr><td>Ganar<\/td><td>Herramientas de compilaci\u00f3n de Visual Studio (2019+)<\/td><td><a href=\"https:\/\/visualstudio.microsoft.com\/visual-cpp-build-tools\/\" target=\"_blank\" rel=\"nofollow noopener\">Descargar<\/a><\/td><\/tr><tr><td>macOS<\/td><td>Herramientas de l\u00ednea de comandos<\/td><td><code>xcode-select --install<\/code><\/td><\/tr><tr><td>Linux<\/td><td>git, make, gcc, python3-venv<\/td><td><code>sudo apt install build-essential<\/code><\/td><\/tr><\/tbody><\/table><p>Cr\u00edtico: Elimina todos los n\u00facleos ESP32 antiguos antes de continuar.<\/p><ul><li><em>Ventanas<\/em><\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-76c6763 elementor-widget elementor-widget-code-highlight\" data-id=\"76c6763\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-markup line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-markup\">\n\t\t\t\t\t%USERPROFILE%\\Documentos\\Arduino\\hardware\\espressif\\\n%LOCALAPPDATA%\\Arduino15\\packages\\esp32\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4e20473 color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"4e20473\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<ul><li><em>macOS \/ Linux<\/em><\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c2b47ee elementor-widget elementor-widget-code-highlight\" data-id=\"c2b47ee\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-markup line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-markup\">\n\t\t\t\t\trm -rf ~\/Arduino\/hardware\/espressif\nrm -rf ~\/.arduino15\/packages\/esp32\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bbe4222 wd-width-100 elementor-widget elementor-widget-wd_title\" data-id=\"bbe4222\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wd_title.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"title-wrapper wd-set-mb reset-last-child wd-title-color-default wd-title-style-default wd-title-size-medium text-left\">\n\n\t\t\t\n\t\t\t<div class=\"liner-continer\">\n\t\t\t\t<h3 class=\"woodmart-title-container title wd-fontsize-xl\">Fase 2: Instalar a trav\u00e9s de Arduino IDE (GUI) \u2014 La forma segura<\/h3> \n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-50e7b94 color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"50e7b94\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<ol><li>Abrir <strong>Archivo<\/strong> \u2192 <strong>Preferencias<\/strong><\/li><li>En <strong>URLs adicionales del Gestor de Placas<\/strong>, a\u00f1adir:<\/li><\/ol>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5cc819f elementor-widget elementor-widget-code-highlight\" data-id=\"5cc819f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-markup line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-markup\">\n\t\t\t\t\thttps:\/\/raw.githubusercontent.com\/espressif\/arduino-esp32\/gh-pages\/package_esp32_index.json\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d781941 color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"d781941\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<ol start=\"3\"><li>Ir <strong>Herramientas \u2192 Placa \u2192 Administrador de placas<\/strong><\/li><li>Buscar\u201c<strong>ESP32 de Espressif Systems<\/strong>\u201d<\/li><li>Instalar <strong>v2.0.17<\/strong> (recomendado para estabilidad \u2014 no es la \u00faltima versi\u00f3n)<\/li><li>Reiniciar el IDE<\/li><\/ol>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7ed7c06 wd-width-100 elementor-widget elementor-widget-wd_title\" data-id=\"7ed7c06\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wd_title.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"title-wrapper wd-set-mb reset-last-child wd-title-color-default wd-title-style-default wd-title-size-medium text-left\">\n\n\t\t\t\n\t\t\t<div class=\"liner-continer\">\n\t\t\t\t<h3 class=\"woodmart-title-container title wd-fontsize-xl\">Fase 3: Instalaci\u00f3n por CLI (Para CI\/CD y Equipos)<\/h3> \n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1bec02b color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"1bec02b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Para compilaciones reproducibles (por ejemplo, GitHub Actions), usa arduino-cli:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-415aab8 elementor-widget elementor-widget-code-highlight\" data-id=\"415aab8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-markup line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-markup\">\n\t\t\t\t\t# Instalar arduino-cli\r\ncurl -fsSL https:\/\/raw.githubusercontent.com\/arduino\/arduino-cli\/master\/install.sh | sh\r\n\r\n# Inicializar la configuraci\u00f3n\r\narduino-cli config init\r\n\r\n# A\u00f1adir el n\u00facleo ESP32\narduino-cli core update-index\narduino-cli core install esp32:esp32@2.0.17\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6598d6a color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"6598d6a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Ejemplo de compilaci\u00f3n y carga (las opciones de la placa pueden variar seg\u00fan el destino):<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-81215d5 elementor-widget elementor-widget-code-highlight\" data-id=\"81215d5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-markup line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-markup\">\n\t\t\t\t\tarduino-cli compile --fqbn esp32:esp32:esp32\narduino-cli upload -p \/dev\/ttyUSB0 --fqbn esp32:esp32:esp32\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-afc36d1 color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"afc36d1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>\u2192 Flujo de trabajo completo: <a href=\"https:\/\/gist.github.com\/george-engineer\/esp32-arduino-cli-2025\" target=\"_blank\" rel=\"nofollow noopener\">GitHub Gist<\/a><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b3ffcdd wd-width-100 elementor-widget elementor-widget-wd_title\" data-id=\"b3ffcdd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wd_title.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"title-wrapper wd-set-mb reset-last-child wd-title-color-primary wd-title-style-underlined wd-title-size-large text-left\">\n\n\t\t\t\n\t\t\t<div class=\"liner-continer\">\n\t\t\t\t<h2 class=\"woodmart-title-container title wd-fontsize-xxl\">Las 5 fallas de carga principales y c\u00f3mo solucionarlas (verificadas en campo)<\/h2> \n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-33f7a67 color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"33f7a67\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<table><thead><tr><th>S\u00edntoma<\/th><th>Causa ra\u00edz probable<\/th><th>Soluci\u00f3n comprobada<\/th><\/tr><\/thead><tbody><tr><td><strong>Ocurri\u00f3 un error fatal: Fall\u00f3 la conexi\u00f3n con ESP32<\/strong><\/td><td>Circuito de auto-restablecimiento ausente o marginal<\/td><td>Sostener <strong>ARRANQUE + RESTABLECER<\/strong>, libere RESET, luego BOOT \u2014 o agregue un capacitor de ~10 \u00b5F desde <strong>EN \u2192 Tierra<\/strong><\/td><\/tr><tr><td><strong>Puerto serie no encontrado<\/strong><\/td><td>Controlador no vinculado o puerto ya en uso<\/td><td>Uso <strong>USBDeview<\/strong> (Windows) o <code>lsof \/dev\/ttyUSB0<\/code> (Linux\/macOS) para identificar y eliminar procesos zombis<\/td><\/tr><tr><td><strong>Se activ\u00f3 el detector de bajo voltaje<\/strong><\/td><td>Cable USB defectuoso o puerto con poca energ\u00eda<\/td><td>Utiliza un cable USB-A corto y grueso; evita los concentradores; verifica <strong>VUSB &gt; 4.75 V<\/strong> en la placa (especialmente durante la transmisi\u00f3n Wi-Fi)<\/td><\/tr><tr><td><strong>Error de suma de verificaci\u00f3n SHA256<\/strong><\/td><td>Fallo de sincronizaci\u00f3n \/ modo del flash (com\u00fan en m\u00f3dulos de bajo costo)<\/td><td>Configurar <strong>Herramientas \u2192 Modo Flash \u2192 DIO<\/strong> (no QIO); reducir <strong>Velocidad de subida<\/strong> a <strong>115200<\/strong><\/td><\/tr><tr><td><strong>Error de meditaci\u00f3n de gur\u00fa: N\u00facleo 1 en p\u00e1nico<\/strong><\/td><td>Desbordamiento de pila o acceso inv\u00e1lido a memoria<\/td><td>Si se confirma un desbordamiento de pila, aumente el tama\u00f1o de la pila de la tarea (por ejemplo, ajuste las banderas del compilador o refactorice b\u00faferes locales grandes)<\/td><\/tr><\/tbody><\/table><p><strong>Pro Insight:<\/strong><\/p><p>Activar <strong>Salida detallada<\/strong> (Archivo \u2192 Preferencias), luego inspecciona los registros de esptool.py para determinar exactamente en qu\u00e9 fase de carga falla (sincronizaci\u00f3n, borrado, escritura o verificaci\u00f3n).<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-82111c7 wd-width-100 elementor-widget elementor-widget-wd_title\" data-id=\"82111c7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wd_title.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"title-wrapper wd-set-mb reset-last-child wd-title-color-primary wd-title-style-underlined wd-title-size-large text-left\">\n\n\t\t\t\n\t\t\t<div class=\"liner-continer\">\n\t\t\t\t<h2 class=\"woodmart-title-container title wd-fontsize-xxl\">Avanzado \u2014 Optimizaci\u00f3n para Despliegues de Campo<\/h2> \n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-71ac8c3 wd-width-100 elementor-widget elementor-widget-wd_title\" data-id=\"71ac8c3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wd_title.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"title-wrapper wd-set-mb reset-last-child wd-title-color-default wd-title-style-default wd-title-size-medium text-left\">\n\n\t\t\t\n\t\t\t<div class=\"liner-continer\">\n\t\t\t\t<h3 class=\"woodmart-title-container title wd-fontsize-xl\">Actualizaciones OTA que no dejan unidades inservibles<\/h3> \n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ef914f5 color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"ef914f5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>La transferencia OTA predeterminada de Arduino transfiere la imagen completa del firmware, lo que puede ser arriesgado en enlaces Wi-Fi inestables. Para mejorar la confiabilidad, use OTA por fragmentos con verificaci\u00f3n y manejo expl\u00edcito de fallos:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-574d9e9 elementor-widget elementor-widget-code-highlight\" data-id=\"574d9e9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-cpp line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-cpp\">\n\t\t\t\t\t#include \n#include \n\nvoid setupOTA() {\n  ArduinoOTA.onStart([]() {\n    if (!Update.begin(UPDATE_SIZE_UNKNOWN, U_FLASH)) {\r\n      Serial.println(&quot;\u00a1Error al iniciar la actualizaci\u00f3n!&quot;);\n    }\n  });\n  \n  ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) {\n    \/\/ Opcional: parpadear el LED cada 10%\r\n  });\n\n  ArduinoOTA.onError([](ota_error_t error) {\n    ESP.restart(); \/\/ Reinicio a prueba de fallos\n  });\n\n  ArduinoOTA.begin();\n}\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-61f796a color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"61f796a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p><strong>Pro Insight:<\/strong><\/p><p>Almacena un hash de firmware en NVS y verif\u00edcalo antes de reiniciar en la nueva imagen.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-317bb6a wd-width-100 elementor-widget elementor-widget-wd_title\" data-id=\"317bb6a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wd_title.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"title-wrapper wd-set-mb reset-last-child wd-title-color-default wd-title-style-default wd-title-size-medium text-left\">\n\n\t\t\t\n\t\t\t<div class=\"liner-continer\">\n\t\t\t\t<h3 class=\"woodmart-title-container title wd-fontsize-xl\">Destello autom\u00e1tico para producci\u00f3n en lotes<\/h3> \n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c72a179 color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"c72a179\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Para lotes de 100 unidades o m\u00e1s, usa esptool.py con una plantilla de flasheo:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-424478a elementor-widget elementor-widget-code-highlight\" data-id=\"424478a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-markup line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-markup\">\n\t\t\t\t\t#: Borrado y flasheo en un solo comando (el m\u00e1s r\u00e1pido) \\\nesptool.py --port \/dev\/ttyUSB0 --baud 921600 \\\r\n  erase_flash \\\n  write_flash 0x1000  bootloader.bin \\\n              0x8000  partitions.bin \\\n              0x10000 firmware.bin\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f2ccca6 color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"f2ccca6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p><strong>Requisito de plantilla:<\/strong><\/p><p>Los pines EN e IO0 deben ser autocontrolados (mediante rel\u00e9 o transistor) para un parpadeo manos libres (Fig. 2).<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b00e045 elementor-widget elementor-widget-image\" data-id=\"b00e045\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t<figure class=\"wp-caption\">\n\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"1714\" height=\"739\" src=\"https:\/\/pcbcool.com\/wp-content\/themes\/woodmart\/images\/lazy.svg\" data-src=\"https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/01\/ESP32-Auto-Flashing-Jig-Schematic-Relay-Controlled-ResetBoot.jpg\" class=\"wd-lazy-fade attachment-full size-full wp-image-36767\" alt=\"Esquema de dispositivo de flasheo autom\u00e1tico ESP32 (reset\/boot controlado por rel\u00e9)\" srcset=\"\" data-srcset=\"https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/01\/ESP32-Auto-Flashing-Jig-Schematic-Relay-Controlled-ResetBoot.jpg 1714w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/01\/ESP32-Auto-Flashing-Jig-Schematic-Relay-Controlled-ResetBoot-150x65.jpg 150w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/01\/ESP32-Auto-Flashing-Jig-Schematic-Relay-Controlled-ResetBoot-600x259.jpg 600w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/01\/ESP32-Auto-Flashing-Jig-Schematic-Relay-Controlled-ResetBoot-400x172.jpg 400w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/01\/ESP32-Auto-Flashing-Jig-Schematic-Relay-Controlled-ResetBoot-1300x561.jpg 1300w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/01\/ESP32-Auto-Flashing-Jig-Schematic-Relay-Controlled-ResetBoot-768x331.jpg 768w, https:\/\/pcbcool.com\/wp-content\/uploads\/2026\/01\/ESP32-Auto-Flashing-Jig-Schematic-Relay-Controlled-ResetBoot-1536x662.jpg 1536w\" sizes=\"auto, (max-width: 1714px) 100vw, 1714px\" \/>\t\t\t\t\t\t\t\t\t\t\t<figcaption class=\"widget-image-caption wp-caption-text\">Figura 2: Esquema de la plantilla de auto-flash del ESP32 (reinicio\/arranque controlado por rel\u00e9)<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ea66cfb wd-width-100 elementor-widget elementor-widget-wd_title\" data-id=\"ea66cfb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wd_title.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"title-wrapper wd-set-mb reset-last-child wd-title-color-default wd-title-style-default wd-title-size-medium text-left\">\n\n\t\t\t\n\t\t\t<div class=\"liner-continer\">\n\t\t\t\t<h3 class=\"woodmart-title-container title wd-fontsize-xl\">Chips USB a Serie \u2014 \u00bfCu\u00e1l Funciona Mejor en Campo?<\/h3> \n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-597b1d6 color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"597b1d6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<table><thead><tr><th>Chip<\/th><th>VID:PID<\/th><th>Ventanas<\/th><th>macOS<\/th><th>Linux<\/th><th>Fiabilidad de campo<\/th><\/tr><\/thead><tbody><tr><td>CP2102N<\/td><td>10C4:EA60<\/td><td>\u2705 (Silabs)<\/td><td>\u2705 nativo<\/td><td>\u2705<\/td><td>\u2605\u2605\u2605\u2605\u2605<\/td><\/tr><tr><td>CH340G<\/td><td>1A86:7523<\/td><td>\u2705 (WCH)<\/td><td>\u26a0\ufe0f macOS m\u00e1s antiguo necesita kext<\/td><td>\u2705<\/td><td>\u2605\u2605\u2605\u2606\u2606 (sensible al ruido)<\/td><\/tr><tr><td>FT232RL<\/td><td>0403:6015<\/td><td>(FTDI)<\/td><td>\u2705<\/td><td>\u2705<\/td><td>\u2605\u2605\u2605\u2605\u2606 (caro)<\/td><\/tr><tr><td>ESP32-S3 USB CDC<\/td><td>var\u00eda<\/td><td>\u2705 (Win11+)<\/td><td>\u2705 (13.3+)<\/td><td>\u2705 (6.2+)<\/td><td>\u2605\u2605\u2605\u2605\u2606 (no se necesita UART)<\/td><\/tr><\/tbody><\/table><p><strong>Advertencia:<\/strong><\/p><p>Las placas de desarrollo de bajo costo a menudo usan chips USB-UART marginales o memorias flash SPI de baja calidad. Los problemas aparecen frecuentemente por encima <strong>115200 baudios<\/strong>. Verifica la identidad del flash con:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-89e564e elementor-widget elementor-widget-code-highlight\" data-id=\"89e564e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-javascript line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-javascript\">\n\t\t\t\t\tesptool.py --port \/dev\/ttyUSB0 flash_id\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-15b3d51 wd-width-100 elementor-widget elementor-widget-wd_title\" data-id=\"15b3d51\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wd_title.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"title-wrapper wd-set-mb reset-last-child wd-title-color-default wd-title-style-default wd-title-size-medium text-left\">\n\n\t\t\t\n\t\t\t<div class=\"liner-continer\">\n\t\t\t\t<h3 class=\"woodmart-title-container title wd-fontsize-xl\">Lista de verificaci\u00f3n final antes de la primera carga<\/h3> \n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-cbf2e08 color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"cbf2e08\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<ol><li><em>Versi\u00f3n principal:<\/em> Corregido en v2.0.17 (o documentado expl\u00edcitamente si se usa v3.x)<\/li><li><em>Puerto USB:<\/em> Datos verificados capaces (no solo carga)<\/li><li><em>Controladores<\/em> WinUSB\/Zadig en Windows; reglas udev adecuadas en Linux<\/li><li><em>Esquema de particiones:<\/em> Coincide con el tama\u00f1o real del flash (2 MB vs. 4 MB)<\/li><li><em>Cable<\/em> Corto, blindado, de calibre 24 AWG o m\u00e1s grueso<\/li><li><em>Poder<\/em> \u2265500 mA @ 5 V; medir en VCC del ESP32<\/li><li><em>Restablecer<\/em> ~10 \u00b5F capacitor de EN \u2192 GND para reinicio autom\u00e1tico fiable<\/li><\/ol>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5e5baa3 wd-width-100 elementor-widget elementor-widget-wd_title\" data-id=\"5e5baa3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wd_title.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"title-wrapper wd-set-mb reset-last-child wd-title-color-primary wd-title-style-underlined wd-title-size-large text-left\">\n\n\t\t\t\n\t\t\t<div class=\"liner-continer\">\n\t\t\t\t<h2 class=\"woodmart-title-container title wd-fontsize-xxl\">Consideraciones finales<\/h2> \n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7bbfb84 color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"7bbfb84\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Instalar el ESP32 no se trata de hacer clic en \u201cInstalar\u201d.\u201d<\/p><p>Se trata de controlar toda la cadena de herramientas, desde los chips USB hasta las tablas de particiones.<\/p><p>Las implementaciones m\u00e1s robustas no tratan el IDE como una caja negra. Lo tratan como un <strong>tuber\u00eda configurable<\/strong>: fija tus versiones, valida tu hardware y automatiza tu proceso de flasheo.<\/p><p>Porque en el campo, no hay un bot\u00f3n de \u201cReinstalar Arduino\u201d, solo un t\u00e9cnico con un mult\u00edmetro, una unidad defectuosa y una fecha l\u00edmite.<\/p><p>Esa es tambi\u00e9n la raz\u00f3n por la que los equipos que trabajan a escala prestan mucha atenci\u00f3n al hardware en upstream.<\/p><p>Un tama\u00f1o de memoria flash uniforme, unos chips USB-serie fiables y un dise\u00f1o de alimentaci\u00f3n estable son tan importantes como un c\u00f3digo limpio. En <a href=\"https:\/\/pcbcool.com\/es\/\">PCBCool<\/a>, vemos esto a diario mientras apoyamos a los ingenieros con prototipos y PCBs de producci\u00f3n construidos para despliegue en el mundo real, no para bancos de laboratorio.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"wd-negative-gap elementor-element elementor-element-1620e06 e-flex e-con-boxed e-con e-parent\" data-id=\"1620e06\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-002415e e-con-full e-flex e-con e-child\" data-id=\"002415e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-d03ca06 e-con-full e-flex e-con e-child\" data-id=\"d03ca06\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9c373aa wd-width-100 elementor-widget elementor-widget-wd_title\" data-id=\"9c373aa\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wd_title.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"title-wrapper wd-set-mb reset-last-child wd-title-color-primary wd-title-style-underlined wd-title-size-large text-left\">\n\n\t\t\t\n\t\t\t<div class=\"liner-continer\">\n\t\t\t\t<h2 class=\"woodmart-title-container title wd-fontsize-xxl\">Preguntas frecuentes (PF)<\/h2> \n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a8ce272 elementor-widget elementor-widget-wd_accordion\" data-id=\"a8ce272\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wd_accordion.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<div class=\"wd-accordion wd-style-default wd-titles-left wd-opener-pos-left wd-opener-style-arrow\" data-state=\"first\">\n\t\t\t\t\t\t\t\n\t\t\t\t<div class=\"wd-accordion-item\">\n\t\t\t\t\t<div class=\"wd-accordion-title wd-role-btn wd-active\" data-accordion-index=\"0\" tabindex=\"0\">\n\t\t\t\t\t\t<div class=\"wd-accordion-title-text\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t1. \u00bfQu\u00e9 Core de ESP32 para Arduino debo usar, v2 o v3?\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<span class=\"wd-accordion-opener\"><\/span>\n\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<div class=\"wd-accordion-content wd-entry-content wd-active\" data-accordion-index=\"0\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<p>Usa v2 para estabilidad y compatibilidad; v3 tiene cambios disruptivos, as\u00ed que siempre fija la versi\u00f3n.<\/p>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\n\t\t\t\t<div class=\"wd-accordion-item\">\n\t\t\t\t\t<div class=\"wd-accordion-title wd-role-btn\" data-accordion-index=\"1\" tabindex=\"0\">\n\t\t\t\t\t\t<div class=\"wd-accordion-title-text\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t2. Mi actualizaci\u00f3n OTA de ESP32 fall\u00f3. \u00bfC\u00f3mo puedo recuperarme?\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<span class=\"wd-accordion-opener\"><\/span>\n\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<div class=\"wd-accordion-content wd-entry-content\" data-accordion-index=\"1\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<p>Vuelve a flashear el firmware completo con esptool.py, o entra en modo flash manteniendo IO0 durante el reinicio.<\/p>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\n\t\t\t\t<div class=\"wd-accordion-item\">\n\t\t\t\t\t<div class=\"wd-accordion-title wd-role-btn\" data-accordion-index=\"2\" tabindex=\"0\">\n\t\t\t\t\t\t<div class=\"wd-accordion-title-text\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t3. Mi ESP32 no es reconocido por USB. \u00bfQu\u00e9 debo hacer?\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<span class=\"wd-accordion-opener\"><\/span>\n\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<div class=\"wd-accordion-content wd-entry-content\" data-accordion-index=\"2\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<p>Verifique que el puerto admita datos, no solo carga; reasigne controladores en Windows, instale kext en macOS o agregue reglas udev en Linux.<\/p>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\n\t\t\t\t<div class=\"wd-accordion-item\">\n\t\t\t\t\t<div class=\"wd-accordion-title wd-role-btn\" data-accordion-index=\"3\" tabindex=\"0\">\n\t\t\t\t\t\t<div class=\"wd-accordion-title-text\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t4. \u00bfC\u00f3mo puedo flashear muchas placas ESP32 de forma fiable?\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<span class=\"wd-accordion-opener\"><\/span>\n\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<div class=\"wd-accordion-content wd-entry-content\" data-accordion-index=\"3\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<p>Usa esptool.py con un dispositivo de conexi\u00f3n, verifica la versi\u00f3n del core y el tama\u00f1o de flash, y asegura una alimentaci\u00f3n estable.<\/p>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\n\t\t\t\t<div class=\"wd-accordion-item\">\n\t\t\t\t\t<div class=\"wd-accordion-title wd-role-btn\" data-accordion-index=\"4\" tabindex=\"0\">\n\t\t\t\t\t\t<div class=\"wd-accordion-title-text\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t5. \u00bfCu\u00e1les son las principales diferencias entre los m\u00f3dulos ESP32 que afectan el despliegue?\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<span class=\"wd-accordion-opener\"><\/span>\n\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<div class=\"wd-accordion-content wd-entry-content\" data-accordion-index=\"4\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<p>S3 soporta USB nativo, WROVER tiene PSRAM que requiere una configuraci\u00f3n cuidadosa de la Heap, y WROOM es b\u00e1sico y estable con el Core v2.<\/p>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\n\t\t\t\t<div class=\"wd-accordion-item\">\n\t\t\t\t\t<div class=\"wd-accordion-title wd-role-btn\" data-accordion-index=\"5\" tabindex=\"0\">\n\t\t\t\t\t\t<div class=\"wd-accordion-title-text\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t6. Adem\u00e1s de las fallas en la carga, \u00bfqu\u00e9 otros problemas del IDE debo tener en cuenta?\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<span class=\"wd-accordion-opener\"><\/span>\n\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<div class=\"wd-accordion-content wd-entry-content\" data-accordion-index=\"5\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<p>Las discrepancias de partici\u00f3n, los conflictos de Python, la ocupaci\u00f3n del puerto serie y las diferencias en la API principal pueden causar fallos.<\/p>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\n\t\t\t\t<div class=\"wd-accordion-item\">\n\t\t\t\t\t<div class=\"wd-accordion-title wd-role-btn\" data-accordion-index=\"6\" tabindex=\"0\">\n\t\t\t\t\t\t<div class=\"wd-accordion-title-text\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t7. \u00bfC\u00f3mo puedo asegurar que el ESP32 funcione de manera confiable en el campo?\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<span class=\"wd-accordion-opener\"><\/span>\n\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<div class=\"wd-accordion-content wd-entry-content\" data-accordion-index=\"6\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<p>Bloquea versiones, automatiza el flasheo, verifica OTA, usa cables y energ\u00eda de calidad, y dise\u00f1a circuitos EN\/reset robustos. PCBCool puede ayudar a proporcionar placas estables para el despliegue.<\/p>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c6c6ce4 elementor-widget elementor-widget-shortcode\" data-id=\"c6c6ce4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\t\t\t<link rel=\"stylesheet\" id=\"elementor-post-35582-css\" href=\"https:\/\/pcbcool.com\/wp-content\/uploads\/elementor\/css\/post-35582.css?ver=1780518828\" type=\"text\/css\" media=\"all\">\n\t\t\t\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"35582\" class=\"elementor elementor-35582\" data-elementor-post-type=\"cms_block\">\n\t\t\t\t<div class=\"wd-negative-gap elementor-element elementor-element-f6159f8 e-flex e-con-boxed e-con e-parent\" data-id=\"f6159f8\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-a03266c e-con-full e-flex e-con e-child\" data-id=\"a03266c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-09accce e-con-full e-flex e-con e-child\" data-id=\"09accce\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-773405d elementor-widget elementor-widget-image\" data-id=\"773405d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"250\" height=\"250\" src=\"https:\/\/pcbcool.com\/wp-content\/themes\/woodmart\/images\/lazy.svg\" data-src=\"https:\/\/pcbcool.com\/wp-content\/uploads\/2025\/12\/George.jpg\" class=\"wd-lazy-fade attachment-full size-full wp-image-35271\" alt=\"Jorge\" srcset=\"\" data-srcset=\"https:\/\/pcbcool.com\/wp-content\/uploads\/2025\/12\/George.jpg 250w, https:\/\/pcbcool.com\/wp-content\/uploads\/2025\/12\/George-150x150.jpg 150w\" sizes=\"auto, (max-width: 250px) 100vw, 250px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-39912a8 e-con-full e-flex e-con e-child\" data-id=\"39912a8\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b1b555d wd-width-100 elementor-widget elementor-widget-wd_title\" data-id=\"b1b555d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wd_title.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"title-wrapper wd-set-mb reset-last-child wd-title-color-default wd-title-style-default wd-title-size-default text-left\">\n\n\t\t\t\n\t\t\t<div class=\"liner-continer\">\n\t\t\t\t<div class=\"woodmart-title-container title wd-fontsize-l\">George | Ingeniero El\u00e9ctrico y Especialista en Sistemas Embebidos<\/div> \n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-0a641fa e-con-full e-flex e-con e-child\" data-id=\"0a641fa\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d15406f color-scheme-inherit text-left elementor-widget elementor-widget-text-editor\" data-id=\"d15406f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>George es un ingeniero el\u00e9ctrico certificado con experiencia en dise\u00f1o de PCB, sistemas embebidos y desarrollo de hardware IoT. Trabaja con PCBCool para convertir la experiencia de ingenier\u00eda real en gu\u00edas pr\u00e1cticas para desarrolladores e ingenieros.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b70a6bd elementor-widget elementor-widget-html\" data-id=\"b70a6bd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div class=\"custom-btn-wrapper\">\r\n  <a href=\"https:\/\/pcbcool.com\/es\/author\/george\/\" class=\"custom-btn\">Leer m\u00e1s art\u00edculos de George \u2192<\/a>\r\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>Aprende a instalar ESP32 en Arduino IDE de forma lista para producci\u00f3n. Soluciona fallos de subida, controla versiones de n\u00facleos, evita problemas con USB y particiones, y despliega ESP32 de manera confiable m\u00e1s all\u00e1 del laboratorio.<\/p>","protected":false},"author":8,"featured_media":36776,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"slim_seo":{"title":"C\u00f3mo Instalar ESP32 en Arduino IDE: Una Gu\u00eda de Configuraci\u00f3n Lista para el Terreno | PCBCool","description":"Aprende a instalar ESP32 en Arduino IDE de forma lista para producci\u00f3n. Soluciona fallos de subida, controla versiones de n\u00facleos, evita problemas con USB y particiones, y despliega ESP32 de manera confiable m\u00e1s all\u00e1 del laboratorio."},"footnotes":""},"categories":[113],"tags":[121,120],"post_folder":[],"class_list":["post-36729","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technical-guides","tag-arduino","tag-esp32"],"_links":{"self":[{"href":"https:\/\/pcbcool.com\/es\/wp-json\/wp\/v2\/posts\/36729","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pcbcool.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pcbcool.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pcbcool.com\/es\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/pcbcool.com\/es\/wp-json\/wp\/v2\/comments?post=36729"}],"version-history":[{"count":0,"href":"https:\/\/pcbcool.com\/es\/wp-json\/wp\/v2\/posts\/36729\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/pcbcool.com\/es\/wp-json\/wp\/v2\/media\/36776"}],"wp:attachment":[{"href":"https:\/\/pcbcool.com\/es\/wp-json\/wp\/v2\/media?parent=36729"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pcbcool.com\/es\/wp-json\/wp\/v2\/categories?post=36729"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pcbcool.com\/es\/wp-json\/wp\/v2\/tags?post=36729"},{"taxonomy":"post_folder","embeddable":true,"href":"https:\/\/pcbcool.com\/es\/wp-json\/wp\/v2\/post_folder?post=36729"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}