¿Tu ESP32 no arranca con la Tarjeta SD? Solución al conflicto del GPIO12 (MISO)


Si tu ESP32 no arranca nunca cuando alimentas el módulo SD a 3.3V, pero a veces funciona a 5V, no te vuelvas loco buscando un fallo en la fuente de alimentación. Estás ante un problema de hardware muy específico y traicionero: el conflicto del pin GPIO12 (MISO) como pin de arranque o strapping pin.

El Diagnóstico: Conflicto de arranque en GPIO12

Al reiniciarse, el ESP32 lee el estado lógico de ciertos pines especiales para decidir su modo de operación. Uno de ellos es el GPIO12.

¿Cuál es el problema?

Si durante el arranque la tarjeta SD mantiene el pin GPIO12 en nivel alto (High), el ESP32 interpreta que debe configurar el voltaje de su memoria flash interna a 1.8V en lugar de los 3.3V que necesitan casi todos los módulos comerciales.

El resultado es catastrófico:

  • Con la flash forzada a 1.8V, el ESP32 no puede leer su propio programa.
  • El sistema entra en un bucle de error o simplemente se queda «muerto».

Esto explica por qué con 5V funciona de forma intermitente: los niveles lógicos se vuelven impredecibles y a veces, por puro azar, el pin no se lee como «alto» en el instante crítico.

Solución Profesional: Fijar la flash a 3.3V vía eFuse

La solución recomendada por Espressif es quemar un eFuse interno. Esto obliga al ESP32 a usar siempre 3.3V para la flash, ignorando lo que pase en el GPIO12 durante el arranque.

Nota importante: Esta operación es irreversible, pero totalmente segura para las placas ESP32 estándar. Desconecta la tarjeta SD antes de realizar este proceso.

Paso a paso en Windows 11 (usando el IDE de Arduino)

No necesitas instalar herramientas complejas; el paquete de ESP32 para Arduino ya incluye lo necesario.

1. Localiza la herramienta espefuse

Navega a la siguiente ruta (sustituyendo tu usuario):

C:\Users\[USUARIO]\AppData\Local\Arduino15\packages\esp32\tools\esptool_py\5.1.0\

Si no ves la carpeta AppData, activa «Elementos ocultos» en la pestaña «Vista» de tu explorador.

2. Abre la terminal

En la barra de direcciones de esa carpeta, escribe cmd y pulsa Enter. Se abrirá la consola directamente en esa ruta.

3. Identifica tu puerto COM

Conecta tu ESP32 y búscalo en el Administrador de Dispositivos bajo «Puertos (COM y LPT)». Ejemplo: COM4.

4. Ejecuta el comando de fijación de voltaje

Escribe el siguiente comando (ajusta tu puerto COM):

espefuse.exe --port COM4 set_flash_voltage 3.3V

5. Confirma la operación

La herramienta te pedirá una confirmación final. Escribe exactamente:

BURN

y pulsa Enter. Si ves el mensaje “Successfully burned eFuses”, ¡felicidades! Tu GPIO12 ya no causará conflictos.

Alternativas sin cambios irreversibles

Si prefieres no tocar los eFuses, existen dos caminos adicionales:

Opción A: Aislamiento mediante hardware

Puedes añadir un transistor PNP para «desconectar» el pin MISO de la SD durante el arranque. El transistor solo dejará pasar la señal cuando el pin CS (Chip Select) esté activo, evitando que la SD interfiera en el encendido.

Opción B: Reasignación de pines (Software)

El ESP32 permite mover el bus SPI a otros pines gracias a su matriz de conmutación. Puedes mover el MISO del pin 12 al pin 19, por ejemplo:

C++

#define SPI_MISO 19 // Cambiado de 12 a 19
SPI.begin(SCK, SPI_MISO, MOSI, CS);
SD.begin(CS);

Requiere cambiar el cableado físico en tu placa o PCB.

Tabla Resumen de Soluciones

OpciónVentajasDesventajas
Quemar eFuseDefinitiva y profesional. Libera el pin 12.Irreversible.
Transistor PNPNo altera el ESP32 internamente.Añade componentes al circuito.
Cambiar PinLimpio y sin riesgos.Requiere modificar el PCB o cableado.

Conclusión

Para proyectos robustos la solución del eFuse es la más lógica y estándar en la industria. Te permite usar el módulo SD a 3.3V con total confianza, asegurando que tu sistema arranque siempre a la primera.

Si quieres profundizar más en la optimización de tus proyectos, no te pierdas nuestro último post sobre como optimizar un ordenador portátil para ejecutar herramientas de CAD: https://soloelectronicos.com/2026/04/04/guia-completa-analiza-tu-pc-y-optimiza-autocad-caso-real-hp-core-i3/

Wilson Greatbatch: El error de 1 MΩ que salva 3.000 vidas al día


En soloelectronicos.com siempre hablamos de componentes, de circuitos, de soldar y de probar. Pero a veces, un proyecto de electrónica trasciende el banco de trabajo. Esta es la historia de cómo Wilson Greatbatch, un ingeniero electrónico, convirtió un error con una resistencia en el dispositivo médico más importante del siglo XX.

Cuando el osciloscopio mostró lo inesperado

Era 1956 en la Universidad de Buffalo. Greatbatch trabajaba en un proyecto que hoy nos parecería rutinario: un oscilador para registrar los latidos del corazón. El circuito, probablemente basado en un transistor de germanio (el componente activo por excelencia de la época), estaba diseñado para funcionar con una resistencia de 10 kΩ en su red de polarización.

Pero, agotado y con poca luz en su taller, su mano buscó en la caja de componentes y soldó, por error, una resistencia de 1 MΩ.

Al conectar la alimentación y mirar el osciloscopio, el resultado no fue el esperado. En lugar de grabar señales cardíacas, el circuito se había transformado. En la pantalla apareció un pulso cuadrado perfecto de 1,8 milisegundos, repitiéndose con una precisión matemática cada segundo.

Lo que había construido sin querer era un oscilador de relajación, donde la resistencia de 1 MΩ (100 veces mayor a la prevista) modificó drásticamente la constante de tiempo (τ = R * C). El diseño original de un grabador se había convertido en un generador de pulsos que imitaba a la perfección el ritmo biológico de un corazón sano.

Para modelar lo que ocurrió en el banco de trabajo de Greatbatch, podemos usar la fórmula fundamental de un oscilador de relajación basado en un circuito RC. En estos circuitos, el tiempo de carga y descarga del condensador define el periodo ($T$) de la oscilación.

La Constante de Tiempo

La clave está en la relación lineal entre la resistencia y el tiempo: (τ = R * C)

Si asumimos que Greatbatch estaba usando un condensador estándar para su oscilador de audio (digamos, de unos 2 microFaradios), veamos qué sucede al cambiar el componente:

  1. El diseño original τ=10000* 0.000002= 0.02 seg Esto genera una frecuencia de unos 50 Hz. En un osciloscopio, esto se ve como una señal rápida, un zumbido constante que sirve para monitorizar o grabar señales de audio/biométricas de alta resolución.
  2. El error de Greatbatch τ = 1000000 *0.000002= 2 segundos. Aquí es donde ocurre la magia. Al aumentar la resistencia 100 veces, el tiempo que tarda el condensador en cargarse también aumenta 100 veces.

El resultado en el osciloscopio: En lugar de una señal de 50 Hz(rápida), el circuito empezó a disparar pulsos aproximadamente cada 1 o 2 segundos.

Si calculamos la frecuencia (f = 1/T):

  • Original: 50 Hz (Demasiado rápido para un corazón).
  • Error: aprox 0.5 a 1 Hz (Entre 30 y 60 pulsos por minuto).

Ese «error» desplazó la salida del circuito desde el espectro de audio directamente al ritmo cardíaco humano (bradicardia). Greatbatch vio en su osciloscopio una línea que «latía» sola.

Lo más increíble es que, aunque fue un error de selección, el circuito resultó ser extremadamente estable. En un oscilador de relajación, si la resistencia es de alta calidad, el pulso es muy predecible.

Greatbatch se dio cuenta de que ese pulso de 1.8 milisegundos era la duración perfecta para despolarizar el miocardio sin agotar la batería innecesariamente. Fue la combinación perfecta entre un valor de resistencia masivo y un condensador que almacenaba la energía justa para dar un «empujón» al corazón.

Construyendo lo «imposible» en un granero

Greatbatch tuvo una visión radical: ¿Y si ese circuito, en lugar de ser un equipo externo, pudiera implantarse dentro del cuerpo para regular los corazones que fallaban?

La comunidad médica le dijo que era una locura; la electrónica no se llevaba bien con el cuerpo humano. Pero Greatbatch no se rindió. Revisó sus ahorros (apenas 2.000 dólares), renunció a su trabajo y convirtió su granero en Clarence, Nueva York, en su taller personal.

Allí, durante dos años, se dedicó a resolver los problemas que cualquier electrónico con un proyecto crítico entendería:

  1. El encapsulado: Tenía que proteger su circuito del ambiente más hostil imaginable: el cuerpo humano (húmedo, salado y corrosivo). Pasó meses experimentando con resinas epoxi para crear una caja hermética que aislara cada pista y soldadura.
  2. La fiabilidad: Su oscilador no podía tener un solo fallo. En aquel granero, soldó y probó versiones una y otra vez, buscando la estabilidad térmica necesaria para que cada pulso llegara a su destino sin importar el paso del tiempo.

En 1958, el prototipo se probó en un perro. El corazón del animal comenzó a latir al ritmo que marcaba el generador de pulsos de Greatbatch. El circuito funcionaba.

El primer paciente y la última frontera: la batería

El 6 de junio de 1960, un hombre de 77 años recibió el dispositivo. Los cirujanos implantaron aquel circuito encapsulado en su abdomen y, por primera vez, un circuito electrónico mantenía vivo a un ser humano desde su interior.

Sin embargo, como buen electrónico, Greatbatch sabía que había un punto débil: la fuente de alimentación. Las primeras baterías duraban solo dos años, obligando a cirugías frecuentes. Fiel a su espíritu innovador, investigó hasta desarrollar en los años 70 la batería de litio-yoduro. Este componente ofrecía una densidad de energía excepcional y una vida útil de más de 10 años, estableciendo el estándar que se usa todavía hoy.

Un legado nacido de un error

Actualmente se implantan casi un millón de marcapasos cada año. Más de 3.000 personas al día salen del hospital con un pequeño dispositivo cuyo «corazón» es un circuito electrónico que nació de una confusión en un cajón de componentes.

Wilson Greatbatch murió en 2011, a los 92 años. Su viejo granero aún existe como un recordatorio para todos nosotros: a veces, en nuestro banco de trabajo, el componente que creemos equivocado puede ser el inicio de algo que cambie el mundo. No subestimes nunca un error de soldadura.