KiCAD, ESP32 y proyectos de electrónica en 2025.

LCD1

¿Nunca os ha pasado eso de abrir un cajón y encontrar aquel componente o aquella placa, que comprasteis hace años para aquel proyecto que nunca se realizó?.

Pues eso es lo que me ha pasado con estas pantallas LCD de la imagen superior, más de 10 años han pasado en un cajón… Era hora de ir haciendo algo con ellas y a la vez aprovechamos para escribir sobre KiCad, ESP32 y que necesitas saber para hacer muchos de los proyectos de electrónica en 2025.

En esos 10 años que han pasado las pantallas en el cajón muchas cosas han cambiado en el mundo de la electrónica, una de ellas es la notable evolución a mejor de la herramienta de diseño de circuitos impresos KiCAD y otra es el uso masivo de los microcontroladores chinos de Espressif.

Por mi parte nunca me había planteado trabajar con ninguna de las dos, y ahora después de hacer un pcb sencillo para evaluarlas, ambas pasan a ser una opción en las que invertir tiempo para considerarlas en desarrollos futuros. Comencemos por los microcontroladores de Espressif.

ESP32.

Espressif es una compañia china de microcontroladores orientados a internet de las cosas que a diferencia de otras compañias con cientos/miles de modelos de microcontroladores, esta tiene un catálogo muy reducido (entre 20 y 30 modelos) de microcontroladores, lo que permite que junto a una fabricación masiva de estos (se han vendido más de 1000 millones) consigan tener los mejores precios del mercado.

Como ejemplo para esta entrada del blog vamos a usar el ESP32-C3, un microcontrolador de 32 bits que para una sola unidad lo podemos comprar por menos de 1 euro en los distribuidores habituales de componentes electrónicos.

Diagrama de bloques del ESP32-C3.

Diagrama de bloques del ESP32-C3.

Por menos de 1 euro estas son algunas de las principales características que encontramos en el microcontrolador:

  • Un procesador RISC-V de 32 bits funcionando a 160 MHz.
  • 400 kB de RAM y 384 kB de ROM, además ampliaremos la memoria de programa conectando una memloria FLASH externa de 4MB a uno de sus buses SPI.
  • Conectividad Wi-Fi y bluetooth. Este es el punto fuerte de los ESP32, ningún fabricante va a dar esto por menos de 1 euro, si te vas a otros fabricantes para sus microcontroladores con conectividad Wi-Fi hay que multiplicar el precio del ESP32.
  • Todo tipo de periféricos comunes en los microcontroladores (detallados en la imagen superior).
  • Un conversor USB-Serie/JTAG interno (se desactiva en alguno de los modos de bajo consumo).
    ¿Qué significa esto? que simplemente por el interfaz USB del ESP32-C3 conectando este al USB de nuestro ordenador, podemos hacer una sesión de debug sin necesitar un debugger externo. Es decir con una simple conexión al microcontrolador por USB tenemos todo lo necesario para trabajar con él, no necesitamos comprar un debugger adicional como es habitual con la mayoría de microcontroladores.

A la hora de añadir un microcontrolador de Espressif a nuestro PCB tenemos dos opciones:

  • Comprar el microcontrolador anterior y añadir el cristal externo con los condensadores, la memoria FLASH, la adaptación de la antena con su conector (o dibujar esta en el PCB) y resto de componentes externos. Opción que seleccionaremos si el espacio es muy reducido.
  • Comprar un módulo como el ESP32-C3-WROOM con todo lo anterior incluido pon un coste de 2.8 euros para una unidad. Por lo general usaremos esta opción si no tenemos problemas de espacio, ya que comprar los componentes anteriores que lleva el microcontrolador se nos va a ir al mismo precio que el módulo (además de tener que diseñarlo y prestar especial atención a la parte de la antena sobre el PCB).

Módulo ESP32-C3-WROOM.

Diagrama de bloques interno del ESP32-C3-WROOM.

Diagrama de bloques interno del ESP32-C3-WROOM.

Comprar un módulo similar de otro fabricante también significa multiplicar el precio de 2 o 3 euros del ESP32, por lo que conocer los ESP32 es casi obligatorio si se tienen que hacer productos de electrónica con conectividad WI-FI/BT de muy bajo coste.

A nivel de aficionado las placas de ESP32 sustituyeron a muchos Arduinos, ya que por un precio mucho menor ofrecían mucho más, usando el mismo ecosistema de librerías y entornos de programación.

Pero solo el precio y el hardware no es lo que hay que considerar a la hora de seleccionar el microcontrolador para un proyecto, tan importante como lo anterior son las librerías y herramientas para el desarrollo del firmware, la documentación del fabricante y la comunidad. Por muy barato que sea el hardware también es necesario que esté bien documentado y tenga unas librerías que nos permitan usarlo, o una comunidad o realimentación con el fabricante que nos permita resolver las dudas que surjan. Sobre esto más adelante, primero KiCad.

Para esta entrada del blog seleccionamos la opción del módulo del ESP32-C3, no tenemos problemas de espacio y nos ahorra tiempo de diseño, de selección de componentes, y la soldadura de estos a la hora de montarlo en el PCB (soldamos solo un módulo con todos los componentes).

Cuando no conocemos un microcontrolador lo primero a la hora de añadirlo a nuestro circuito es mirar la documentación del fabricante, donde por lo general encontraremos ejemplos de como debemos añadirlo al pcb. También los fabricantes suelen hacer placas de evaluación de sus microcontroladores listas para usar con sus esquemas disponibles para consultar, siendo estos también una fuente de referencia cuando nos enfrentamos por primera vez a un diseño con un microcontrolador desconocido.

ESP32-C3-DevKitC-02

Placa de evaluación del ESP32-C3. ESP32-C3-DevKitC-02.

Por último si el microcontrolador tiene una comunidad grande encontraremos esquemas de diseños que consultar de gente que los ha usado, probado y compartido, por lo que también “pueden” ser otra fuente de información. Aunque lo ideal es irse a las dos primeras: documentación del fabricante y esquemas de sus placas de evaluación, ya que sabemos que están hecha por gente que conoce el hardware a la perfección (o deberían) a nivel profesional.

KiCad.

Ya tenemos la idea del proyecto, el microcontrolador a usar y un montón de ejemplos de como integrar el microcontrolador en un PCB, ahora solo necesitamos un programa de diseño de pcbs con el que empezar. Después de probar KiCad de forma muy rápida (conozco muy poco de KiCad) haciendo este diseño, una placa para una taller de una asociación de Alicante (donde nos juntamos 4..), diría que la mejor opción a día de hoy para empezar con el diseño de PCBs es KiCad.

Placa desarrollada para evaluar KiCad y el ESP32-C3.

Placa desarrollada para evaluar KiCad y el ESP32-C3.

KiCad es un programa de diseño desarrollado desde 1992, en los últimos años organizaciones como el CERN colaboran con su desarrollo, lo que ha dado como resultado un programa de diseño de PCBs con características profesionales y totalmente gratis. No está (todavía) a la altura de otros programas de pago (cuyas licencias comienzan en 5-10k euros y continúan desde ahí en función de las opciones), pero que tampoco hay que recurrir a estos programas de pago para hacer una inmensa cantidad de diseños, siendo KiCad más que suficiente, rápido, y adecuado.

He probado ahora la versión 9 de KiCad, hace años había probado otras versiones anteriores y no me habían gustado nada…, pero después de probar la versión 9 mi idea que tenía de KiCad es totalmente distinta y si sigue así acabará siendo un estándar para el diseño de PCBs (si no lo es ya).

Algunas de las características a destacar (de las muchas que tendrá y aún no conozco):

  • Interfaz de usuario me ha parecido mucho más fácil e intuitivo que en versiones anteriores.
  • Las herramientas de ruteado (rutear esquivando pistas, empujandolas, etc..) han mejorado mucho.
  • Buena integración entre la herramienta de layout y esquemático.
  • Una comunidad de usuarios muy grande, lo que permite googlear dudas o usar sus foros.
  • Y lo más importante, sin casi conocerlo me ha permitido rutear el PCB de la imagen anterior de manera rápida, sin apenas tener que invertir tiempo en descubrir como se hacía una cosa o buscarlo en la documentación.
KiCad 9. Esquemático, layout y visor 3D (click para mayor tamaño)

KiCad 9. Esquemático, layout y visor 3D (click para mayor tamaño)

Otro punto muy importante del programa que decidamos usar para diseñar PCBs es la disponibilidad de librerías de componentes, si tenemos que usar un componente vamos a querer tener ya hecho el símbolo del componente para añadir al esquemático, su huella para añadir al layout, y por último su modelo 3D (no necesario si no tenemos que exportar el PCB para añadirlo a un diseño mecánico).

Hoy en día gracias a páginas como SnapEda es mucho más fácil encontrar el componente que necesitas para tu diseño y no tener que invertir el tiempo en crear los símbolos y sus huellas. Además Digikey (distribuidor de componentes electrónicos) últimamente ha metido en su página los modelos de muchos de los componentes que vende, por lo que a la vez que buscas el símbolo y huella del componente (si no viene por defecto en las librerías de tu programa de diseño) lo añades al carrito (si no hay una diferencia de precios con otros distribuidores).

Página de Digikey donde encontramos el enlace a los modelos de nuestro componente.

Página de Digikey donde encontramos el enlace a los modelos de nuestro componente.

Descargamos los modelos para nuestro programa de diseño directamente desde la página de Digikey.

Descargamos los modelos para nuestro programa de diseño directamente desde la página de Digikey.

A los fabricantes de componentes y a los distribuidores les interesa que todos los modelos de los componentes estén disponibles, si hay dos posibles opciones de componentes para tu diseño (características, precio, disponibilidad, etc..) y en uno tienes el modelo y en el otro no, pues se va a añadir y comprar el que tiene el modelo ya que ahorra el tiempo de tener que crear el símbolo y la huella para el programa de diseño de PCBs. Y si esos modelos los encuentras en la página de un distribuidor de componentes, pues la probabilidad de que lo acabes pidiendo a ese distribuidor es mayor, ya que según lo buscas lo añades al carrito.

Resumiendo lo visto hasta ahora: se ha iniciado un diseño con un microcontrolador que nunca había usado en un diseño y con KiCad (de igual forma apenas lo había usado antes). La experiencia con ambos ha sido muy buena, la documentación del ESP32 es buena y la comunidad grande, por lo que integrar el módulo del ESP32 en un PCB ha sido muy rápido y sencillo. Y de igual forma KiCad ha sido lo suficientemente bueno para poder diseñar el PCB de manera rápida y sencilla. Por lo que hasta ahora la experiencia del diseño hardware con el ESP32-C3 y KiCad ha sido sobresaliente.

Nota: el diseño de esta placa está hecho en 2 fines de semana (3-4 días aproximadamente) desde que se cogió la pantalla del LCD y se pensó que hacer con ella, por lo que he ido muy rápido (no usar el diseño como referencia) y hay varias cosas que se pueden mejorar en el diseño y layout dedicando más tiempo.

Soldadura del PCB.

Una vez que tenemos el diseño del PCB generamos los ficheros gerbers y los mandamos a nuestro fabricante preferido, por lo general atendiendo al coste este probablemente sea un fabricante chino. Si  no sabes como generar los gerbers poniendo KiCad y el nombre del fabricante en google, probablemente te lleve a la página del fabricante de PCBs chino donde te explica como generar los gerbers de tu placa con KiCad para que se los mandes.

Generamos los gerbers y lo mandamos a fabricar y aquí tenemos 2 opciones:

  • Pedir el PCB con los componentes ya soldados: esto será caro, ya que aunque el proceso de fabricar los PCBs es muy barato, el proceso de que te compren los componentes y te los monten en el PCB suele ser mucho más caro, y suele llevar varias semanas.
  • Pedir los PCBs: recibirlos en 1-2 semanas y montar nosotros los componentes.

Montar los componentes es un proceso muy sencillo y en unas pocas horas se puede aprender lo necesario para hacerlo, pero debido al pequeño tamaño de los componentes es necesario tener las herramientas adecuadas.

El proceso más fácil para montar un prototipo es contar con un pequeño horno de soldadura o plato caliente, este consiste en los siguientes pasos (click en las imagenes para mayor tamaño):

1. Colocamos la plantilla del PCB (la pedimos cuando lo mandamos a fabricar) sobre este para aplicar la pasta de soldadura.

Utilizamos la plantilla del PCB para aplicar la pasta de soldadura.

Utilizamos la plantilla del PCB para aplicar la pasta de soldadura.

Pasta de soldadura aplicada sobre el PCB.

Pasta de soldadura aplicada sobre el PCB.

2. Con unas pinzas colocamos los componentes a soldar sobre el PCB.

Con unas pinzas colocamos los componentes a soldar sobre el PCB.

Con unas pinzas colocamos los componentes a soldar sobre el PCB.

3. Metemos el PCB con los componentes al horno de soldadura para obtener nuestro prototipo.

Metemos el PCB con los componentes al horno de soldadura para obtener nuestro prototipo.

Metemos el PCB con los componentes al horno de soldadura para obtener nuestro prototipo.

Placa soldada.

Placa soldada.

Una vez soldados los componentes SMD si hay algún componentes de agujero pasante lo soldamos a mano. La soldadura con las herramientas adecuadas es un proceso sencillo que nos permite crear prototipos rápidos y a un bajo coste, por lo que es muy conveniente tener la capacidad de hacerlo.

Ya tenemos nuestra placa lista para probar, ahora lo primero después de tomar alguna medida con el polímetro, es hacer un pequeño código de prueba en nuestro microcontrolador para verificar que el hardware funciona según lo esperado.

Y aquí empieza lo más importante a la hora de trabajar con microcontroladores, las herramientas y librerías para desarrollar el firmware para ellos, ya que el firmware es lo que usualmente va a llevar la mayor parte del tiempo del desarrollo de un proyecto.

Programación del microcontrolador.

La mayor parte del tiempo de muchos proyectos de electrónica con microcontroladores la ocupa el desarrollo del firmware, por lo que si la documentación o las herramientas para desarrollo firmware no son adecuadas, da igual lo que cueste el microcontrolador y lo que haga, va a ser más caro en tiempo de desarrollo que usar una opción de microcontrolador similar más cara pero con librerías y herramientas bien hechas y documentadas.

Para programar el ESP32-C3 vamos a usar las librerías y documentación de Espressif (ESP-IDF) y VS Code (si eres a quien le gusta programar desde consola también puedes usa las herramientas de Espressif sin VS Code).

VSCode y ESP-IDF.

VSCode y ESP-IDF.

Una vez instalado todo lo anterior, cuando abrimos VS Code vemos la pantalla de bienvenida de ESP-IDF, desde donde podemos crear un proyecto nuevo para el ESP32 que vayamos a usar, cargar ejemplos, etc…

Hay otras alternativas para programar los ESP32 como Arduino y Platformio, pero no las he mirado. Para mi lo más adecuado es usar las librerías que te da el fabricante sin capas de abstracción intermedias.

Por defecto ESP-IDF (Esspresif’s official IoT Development Framework) usa FreeRTOS, cuando llegamos al main.c de nuestro proyecto ya estamos corriendo FreeRTOS por de debajo.

FreeRTOS es uno de los RTOS más usados para microcontroladores que nos ayuda a desarrollar nuestra aplicación de una manera más fácil, los microcontroladores de hoy en día tienen cientos de KBs de memoria RAM y MB de Flash, manejan stacks de comunicaciones como WI-FI, BT, LoRa, etc… en la mayoría de aplicaciones no tiene sentido no usar un sistema operativo que nos ayude a gestionar todas las tareas que tiene que hacer el microcontrolador.

Saber como descomponer en tareas una aplicación, usar los distintos componentes de un RTOS, etc… es necesario para trabajar con los microcontroladores actuales.

Desde VS Code podemos acceder al Component Registry de ESP donde encontramos librerías de código. Por ejemplo si vamos a usar un sensor de temperatura podemos crear los ficheros .h y .c para utilizar ese sensor, y con esos ficheros y unos ficheros de configuración y dependencia creamos lo que llama Espressif un “componente”. En el Component Registry hay componentes ya creados que podemos descargar y utilizar en nuestras aplicaciones. Un componente es simplemente una librería con unos ficheros de configuración de ese código, ejemplos de uso y un fichero de dependencias a otros componentes, y todo eso se encapsula en lo que llaman componentes.

Registro de componentes de ESP.

Registro de componentes de ESP.

Para verificar el funcionamiento de nuestro hardware hacemos un código rápido de prueba que se puede encontrar en el repositorio del prototipo de esta placa. En este código escribimos unas líneas en la pantalla LCD usando el bus SPI,  leemos los pulsadores y activamos el zumbador de la placa, y por el bus I2C escribimos y leemos los distintos integrados conectados a este bus para ver que estén funcionando, mandando las lecturas de dichos integrados por el USB y visualizandolas en un terminal de VS Code.

Probando el hardware de la placa.

Probando el hardware de la placa.

Pulsando el botón de debug lanzamos una sesión de debug sin necesidad de tener que conectar hardware adicional entre el PC y el microcontrolador. Aquí podemos parar el programa en la línea de código que nos interese, acceder a los registros del microcontrolador, variables, stacks, etc… Una herramienta que es necesaria tener cuando se está desarrollando código y este debugger nos viene ya dentro del ESP32-C3. También tiene los pines para conectar un debugger externo, ya que el debugger interno se desactiva en alguno de los modos de bajo consumo del microcontrolador.

Sesión de debug.

Sesión de debug.

Por un coste 0 ya tenemos todas las herramientas software para trabajar con el ESP32-C3. Herramientas con un nivel profesional que nos permitirán desarrollar cualquier proyecto con ellas, o como en el caso de esta placa montar un taller sobre programación de sistemas embebidos con todo lo necesario para aprender.

Probando la pantalla LCD.

Probando la pantalla LCD.

Sobre las librerías y herramientas de Espressif para la programación de sus microcontroladores la primera impresión no ha podido ser mejor. Siguiendo su documentación y viendo esta por primera vez, en un momento el bus SPI estaba funcionando a la primera, de la misma forma lo estaba el bus I2C comunicándonos con los ICs conectados a este. Todas las herramientas para grabar, debuggear y comunicarnos con el microcontrolador funcionando sin problemas desde VS Code, uno de los mejores IDEs para desarrollar código, ¿se puede pedir más por 0 euros?.

Nota: igual que con el hardware, el código del repositorio del prototipo es un código de prueba hecho de manera muy rápida, no usarlo como referencia.

Conclusiones.

En esta entrada del blog por menos de 100 euros (50 en PCBs y 50 en componentes) hemos montado un prototipo electrónico, con conectividad Wi-Fi, BT, un LCD gráfico, batería con gestión de esta y un microcontrolador con MB de memoria de programa y cientos de KBs de RAM corriendo un RTOS. Además sin coste tenemos todas las herramientas para desarrollar el hardware y el firmware, tener este entorno de desarrollo no hace mucho, costaba muchos miles o decenas de miles de euros…

Respecto a KiCad y a los microcontroladores de Espressif la primera impresión no ha podido ser mejor, y creo que merece la pena invertir el tiempo en conocer ambos para desarrollo de proyectos de electrónica.

Nos podríamos atrever a decir que hacer electrónica hoy en día es más barato y fácil que nunca, por contra la base de conocimiento para hacerla cada vez es mayor debido a la cantidad de código que nuestros dispositivos van a llevar. ¿Cuánto código lleva un coche fabricado ahora respecto a uno de hace 20 años?.

Donde antes había un circuito ahora hay un módulo programable, los microcontroladores cada vez tienen más potencia, más memoria, más capacidades (stacks de comunicaciones) lo que se traduce en que los dispositivos que se crean cada vez tienen más características y corren muchas más líneas de código.

¿Qué necesito saber para hacer un proyecto con un microcontrolador como el ESP32?

  • Unos conocimientos “básicos” de electrónica para saber realizar un esquemático y seleccionar y conectar los elementos que lo componen. Electrónica analógica, electrónica digital y de potencia siempre se van a encontrar.
  • Como funciona un microcontrolador y un poco sobre la arquitectura de este.
  • Diseño y ruteado de PCBs. Saber utilizar una herramienta como KiCad y conceptos básicos como rutear una pista con impedancia, cuando usar resistencias de terminación, un poquito de emc, etc… conceptos que vas a tener que aplicar en muchos de los PCBs con los microcontroladores actuales.
  • Soldadura de un PCB para poder construir prototipos de manera rápida y barata. Este es el punto más fácil ya que adquirir los conocimientos para ensamblar un PCB son unas pocas horas, es un proceso sencillo pero que requiere de disponer de la herramienta adecuada.
  • Programación: saber C e idealmente C++ (luego otros lenguajes como Python y Rust). Conocer como usar un RTOS como FreeRTOS o Zephyr, luego todas las prácticas y métodos de programación para hacer código portable y mantenible. Y saber como se construye y debuggea el firmware.

Dominar todos los puntos anteriores puede ser difícil, si dominas la electrónica pero no la programación no vas a poder hacer un proyecto con un microcontrolador como el ESP32. Mientras que si dominas la programación pero no la electrónica siempre puedes usar las miles de placas que se crean para proyectos de electrónica, conectándolas entre ellas.

¿Cómo aprender todo lo anterior? si vienes a una de las reuniones de la Asociación Maker Levante en Alicante te lo cuento 😉  Además mira que vistas tenemos…

No sé que hace tanta gente ahí abajo cuando podrían estar aquí arriba con nosotros moviendo bits y electrones de un sitio a otro, pobrecill@s, no saben lo que se están perdiendo!

Si has leído hasta aquí espero que haya sido útil, gracias.