Blog
Librerías ESP32: instalar, usar, arreglar
Instalar una librería es la mitad fácil — la mitad difícil es el desajuste de versión que rompe la siguiente compilación. Dónde viven las librerías, cómo elegir una que funcione y qué hacer cuando el ejemplo no compila.
¿Cómo instalar una librería ESP32 en Arduino?
Library Manager (Sketch → Include Library → Manage Libraries), busca, instala — la mayoría de librerías ESP32 están ahí. La vía manual: descarga el ZIP, Sketch → Include Library → Add .ZIP Library. Un detalle: el Library Manager lista todo para todas las placas, así que filtra por etiquetas ESP32 o revisa que el repo diga arduino-esp32. El FAQ del Arduino IDE cubre la estructura de carpetas.
¿Cómo usar la librería de GIF animados en ESP32?
AnimatedGIF de Larry Bank es la de referencia — combínala con TFT_eSPI y reproduce GIFs en pantallas SPI comunes. Los GIFs decodifican a fotogramas crudos, así que la RAM importa: un fotograma de 320×240 son unos 150 KB, que es por lo que la animación sufre en chips de 2 MB y canta en placas con PSRAM. En mi ILI9341 de 240×320 corría a unos 15 FPS, suficiente para una animación en bucle. La página de proyectos de ejemplo tiene un montaje funcional.
¿Existe la librería Harware Serial en el ESP32?
Sí — HardwareSerial está integrada en el core, sin instalar nada. Serial, Serial1 y Serial2 existen en el ESP32 clásico; en C3 y S3 la disponibilidad de Serial1 y Serial2 depende del número de UART del chip. ‘Harware serial’ es un typo de búsqueda; es la misma librería integrada de cualquier manera.
¿Por qué mi librería compila en una placa y en otra no?
Config específica de placa — pines en #define, presencia de PSRAM, tamaño de flash. Muchas librerías ESP32 asumen un WROOM-32 con 4 MB de flash y hardcodean pines que las placas S3 enrutan distinto. Lee el README de la librería para la tabla de placas; si lista placas, la tuya debe estar en ella.
¿Librería instalada pero no encontrada?
Reinicia el IDE, luego revisa la carpeta del sketchbook: File → Preferences la muestra, y las librerías de usuario viven en <sketchbook>/libraries. Dos fallos comunes: el ZIP se extrajo en una carpeta anidada (Arduino quiere el .h a un solo nivel de profundidad), o el IDE cacheó una copia corrupta — borra y reinstala. La base de conocimiento tiene el recorrido con capturas.
La actualización del core rompió mi librería — ¿y ahora?
El salto de arduino-esp32 2.x a 3.x renombró APIs; las librerías fijadas a los nombres viejos fallan con errores confusos. Arreglos, en orden: actualiza la librería, lee su changelog, o fija el core en Boards Manager a la versión que nombre la librería.
¿Librerías integradas vs de terceros — cuál es la diferencia?
Integrada significa que el core la trae — WiFi.h, HardwareSerial, SPI, Wire. De terceros significa un repo externo — sensores, pantallas, servicios. Las integradas se actualizan con el core; las de terceros lo hacen a su propio ritmo, que es exactamente por lo que fijar versiones importa.
¿Dos librerías definen la misma función — conflicto?
Sí, y el linker elige una en silencio o da error. C++ no te lo impide; el resultado es una moneda al aire de cuál se llama. Encuentra el duplicado en el mensaje de error, luego desinstala una librería o usa su namespace si lo tiene. Me pasó con dos librerías DHT una vez; el arreglo fue borrar la que nunca usaba.
¿Cómo sé qué librería necesita un sketch?
Lee las líneas #include y busca cada nombre en el Library Manager — Adafruit BMP280, U8g2, lo que sea. El README o el header del ejemplo suele nombrar el fork preferido del autor, lo que importa para librerías renombradas. La librería cuyos issues se cierran de verdad es la que funciona.
¿Puedo escribir mi propia librería ESP32?
Sí — una carpeta con .h, .cpp y library.properties dentro de <sketchbook>/libraries es una librería. Exporta la API que uses, mantén los detalles de hardware en la config del header, y una librería ESP32 es solo una librería Arduino que hace #ifdef de headers ESP32.
Los proyectos de este tema se ejecutan directamente en el simulador gratuito de sensbench: circuito preconectado, firmware incluido, sin cuenta y sin instalación.