Hola, Mundo en pantalla OLED de Heltec Wifi Kit 32 V3
Hola, MONTESTEAM. Primer programa para la pantalla OLED de la Heltec ESP32 WiFi Kit 32 V3
La Heltec ESP32 WiFi Kit 32 V3 es una de las placas más interesantes para desarrollar proyectos de Internet de las Cosas (IoT) gracias a que incorpora de serie una pantalla OLED de 0,96 pulgadas, conectividad WiFi y Bluetooth, todo ello basado en el potente microcontrolador ESP32-S3.
En este primer tutorial vamos a comprobar que todo funciona correctamente mostrando un sencillo mensaje en la pantalla OLED.
Pero antes de empezar quiero compartir una recomendación que considero muy importante.
La Inteligencia Artificial es una ayuda, no el punto de partida
Hoy disponemos de herramientas como ChatGPT o Claude capaces de generar código en cuestión de segundos. Sin embargo, cuando trabajamos con placas nuevas o poco conocidas es muy fácil encontrarnos con ejemplos que utilizan librerías incompatibles o versiones diferentes del hardware.
Durante la preparación de este tutorial me encontré precisamente con ese problema. La IA generaba programas aparentemente correctos, pero no funcionaban porque utilizaban librerías distintas a las que emplea oficialmente Heltec.
La solución fue muy sencilla:
Primero utilizar los ejemplos oficiales del fabricante. Una vez comprobado que funcionan, utilizar la Inteligencia Artificial para modificarlos y ampliarlos.
Este método ahorra muchísimo tiempo y evita gran parte de los errores de compilación.
Material necesario
- Heltec ESP32 WiFi Kit 32 V3
- Cable USB-C
- Arduino IDE
- Librerías oficiales de Heltec instaladas
No es necesario realizar ninguna conexión adicional, ya que la pantalla OLED viene integrada en la placa.
Código
#include <Wire.h>
#include "HT_SSD1306Wire.h"
static SSD1306Wire display(
0x3c,
500000,
SDA_OLED,
SCL_OLED,
GEOMETRY_128_64,
RST_OLED
);
void VextON()
{
pinMode(Vext, OUTPUT);
digitalWrite(Vext, LOW);
}
void setup()
{
Serial.begin(115200);
VextON();
delay(100);
display.init();
display.clear();
display.setTextAlignment(TEXT_ALIGN_CENTER);
display.setFont(ArialMT_Plain_24);
display.drawString(64, 18, "Hola");
display.setFont(ArialMT_Plain_16);
display.drawString(64, 46, "Montesteam");
display.display();
}
void loop()
{
}
Explicación del programa
1. Inclusión de las librerías
#include <Wire.h>
#include "HT_SSD1306Wire.h"
La librería Wire permite la comunicación mediante el protocolo I²C, utilizado por la pantalla OLED.
La librería HT_SSD1306Wire es la librería oficial de Heltec para controlar la pantalla integrada.
2. Creación del objeto de la pantalla
static SSD1306Wire display(
0x3c,
500000,
SDA_OLED,
SCL_OLED,
GEOMETRY_128_64,
RST_OLED
);
Aquí se crea el objeto que representa la pantalla OLED.
Los parámetros indican:
- Dirección I²C de la pantalla.
- Velocidad de comunicación.
- Pines SDA y SCL.
- Resolución de la pantalla.
- Pin de reinicio.
Todos estos valores vienen definidos por Heltec para esta placa.
3. Alimentación de la pantalla
void VextON()
{
pinMode(Vext, OUTPUT);
digitalWrite(Vext, LOW);
}
La pantalla OLED permanece apagada hasta que activamos la salida Vext.
Si olvidamos este paso, la pantalla permanecerá completamente negra.
4. Inicialización
display.init();
display.clear();
Se inicializa la pantalla y se borra cualquier contenido anterior.
5. Alineación del texto
display.setTextAlignment(TEXT_ALIGN_CENTER);
El texto aparecerá centrado horizontalmente.
6. Selección de la fuente
display.setFont(ArialMT_Plain_24);
Se selecciona una fuente grande para la palabra Hola.
Posteriormente cambiamos a otra más pequeña:
display.setFont(ArialMT_Plain_16);
para mostrar Montesteam.
7. Escritura del texto
display.drawString(64,18,"Hola");
Dibuja la palabra Hola.
Posteriormente:
display.drawString(64,46,"Montesteam");
escribe el nombre del proyecto.
Las coordenadas indican la posición del centro del texto.
8. Mostrar el contenido
display.display();
La pantalla trabaja con un búfer de memoria.
Hasta que no ejecutamos esta instrucción, el contenido no aparece físicamente en la pantalla.
Resultado
Tras cargar el programa veremos la pantalla OLED mostrando:
Hola
Montesteam
Errores frecuentes
Durante la elaboración de este tutorial aparecieron varios problemas que conviene conocer.
Error: SDA_OLED was not declared
La placa seleccionada en Arduino IDE no era la Heltec WiFi Kit 32 V3.
Error: multiple definition of display
Se estaban mezclando dos librerías diferentes para controlar la pantalla.
Pantalla completamente negra
Normalmente ocurre porque no se ha activado:
VextON();
Conclusiones
Con este sencillo programa hemos comprobado que:
- La placa funciona correctamente.
- Las librerías oficiales están bien instaladas.
- La pantalla OLED responde perfectamente.
A partir de esta base podremos comenzar a desarrollar proyectos mucho más interesantes.
En los próximos tutoriales aprenderemos a:
- Leer sensores de luz.
- Medir temperatura y humedad.
- Conectar la placa al WiFi.
- Enviar datos a ThingSpeak.
- Crear proyectos completos de Internet de las Cosas.
Una recomendación final
Cuando trabajes con una placa nueva, empieza siempre por los ejemplos oficiales del fabricante. Una vez que funcionan en tu equipo, utiliza la Inteligencia Artificial para comprenderlos, modificarlos y ampliarlos. Esa combinación suele dar los mejores resultados y evita muchas horas de depuración.
Proyecto desarrollado dentro de MONTESTEAM y AIDARAC (Aprendizaje de Inteligencia Artificial y Ciencia de Datos con Resultados en Acciones de Ciencia Ciudadana).



