sgilllorente / SBC-Practices

0 stars 0 forks source link

How to use OLED I2C Display #2

Open sgilllorente opened 11 months ago

sgilllorente commented 11 months ago

La siguiente tarea es conocer el funcionamiento de la interfaz I2C que ofrece la placa ESP32. De esta manera podremos conectar el display el cuál funciona con esta intefaz

sgilllorente commented 11 months ago

Si buscamos por "esp idf i2c" y accedemos a https://docs.espressif.com/projects/esp-idf/en/latest/esp32/apireference/peripherals/i2c.html encontraremos la documentación del circuito I2C que lleva integrado la placa ESP32 Si buscamos el display que vamos a usar, podemos descargar un manual de uso, pero solo para Arduino o para Raspberry (python). Manual: 1.3 inch OLED I2C Display_ES.pdf

sgilllorente commented 11 months ago

En este enlace podemos encontrar un ejemplo de uso de un LCD en la placa ESP32 usando el entorno de trabajo de Espressif IoT Development Framework (esp-idf).

Enlace: https://esp32tutorials.com/i2c-lcd-esp32-esp-idf/

sgilllorente commented 11 months ago

Existen ejemplos de uso de OLED con la placa ESP32 pero haciendo uso del entorno de Arduino.

Una trampa sucia que podemos hacer, un tanto complicada, es convertir un proyecto arduino en un proyecto ESP-IDF. Esto se hace añadiendo a Arduino como un componente de ESP-IDF, esta es la forma oficial de hacerlo: https://docs.espressif.com/projects/arduino-esp32/en/latest/esp-idf_component.html

Si seguimos estos pasos podremos ejecutar proyectos hechos en arduino en nuestro entorno ESP-IDF. No es lo que se debe hacer

sgilllorente commented 11 months ago

Si investigamos más, encontraremos información de cómo funciona la interfaz OLED de nuestro display en la placa ESP32 usando el ESP-IDF.

Enlace: https://esp32tutorials.com/oled-esp32-esp-idf-tutorial/ (para encontrar este enlace busqué "OLED ESP-IDF esp32")

En el siguiente enlace podemos encontrar un ejemplo pero con un display de 0.96 pulgadas, no de 1.3 pulgadas pero curiosamente el tamaño en pixeles sí que coincide con el de nuestro display (127x64).

Por lo que he entendido la clave va a estar en hacer uso del driver SSD1306/SH1106 Driver for ESP-IDF, en principio, este driver nos va a permitir mostrar texto, texto que se mueve, imágenes e imágenes animadas.

Image

En el siguiente enlace podemos encontrar nuestro modelo de placa ESP32 con todos los pines BIEN PUESTOS. Enlace: https://circuitsgeek.com/guides-and-how-to/esp32-pinout-esp-wroom-32-pinout/

sgilllorente commented 11 months ago

Buscando "OLED ESP-IDF esp32 1.3" encontramos un repositorio en GitHub donde hay varios ejemplos usando el display OLED en ESP-IDF.

Enlace a repositorio GitHub: https://github.com/nopnop2002/esp-idf-ssd1306 Zip del repositorio con todos los ejemplos: esp-idf-ssd1306-master.zip

Jonai y yo a la hora de imprimir una imagen, metíamos a la fuerza en hexadecimal los píxeles de la imagen que queríamos mostrar. Vicente nos ha comentado en clase que hay una forma "más eficiente" de mostrar cosas por el display. Ha comentado algo de bitmap.

sgilllorente commented 11 months ago

Usando el ejemplo "ImageDemo" del repositorio anterior, vemos que para sacar por el display una imagen, podemos pasar directamente los píxeles en binario/hexadecimal.

No se si es la forma óptima de mostrar imágenes por el display pero de momento es la que nos funciona.

Existen herramientas online que te transforman tu imagen a hexadecimal. Por ejemplo, esta web es muy completa, te deja transformar cualquier imagen a hexadecimal y cambiar algunos parámetros para que se ajuste bien al dislplay OLED. También incluye un par de ejemplos de cómo implementar el código.

sgilllorente commented 10 months ago

Proyecto con fotoresistencia y librerías del display junto:

sgilllorente commented 10 months ago

Proyecto avanzado 11/10/23

main.zip