Hurgando una pantalla un poco curiosa he encontrado este modelo a un coste de poco más de 8 euros que tiene 3,5 pulgadas y la función de ser táctil, por lo que lo podemos utilizar como consola que haga de interfaz entre el usuario y un proyecto que corra bajo Arduino o Raspberry Pi. Se trata de una pantalla TFT LCD de 3,5' que utiliza el driver ILI9488.
La compra la realicé en julio del año 2022 en Aliexpress aquí. El coste total (incluido transporte e IVA ) fue de 8,06€+transporte 1,84€ = 9,91€. NOTA: no me patrocinan, por lo que lo que expreso son mis experiencias sin ningún tipo de influencia.
Librerías del dispositivo ILI9488
Las librerías de ejemplo no las tenía el anunciante en su web (qué raro en Aliexpress), así que las tuve que buscar por mi cuenta.
El proceso de búsqueda no ha sido fácil.
En el siguiente enlace se puede ver información general sobre este tipo de pantallas y descargar librerías, así como en lcdwiki.com, donde tienen estas librerías http://www.lcdwiki.com/3.5inch_Arduino_Display-UNO#Program_Download
Yo personalmente no he utilizado los enlaces anteriores, al querer usar la pantalla en una Raspberry Pi. La web que he utilizado como base está en el siguiente enlace. Lo primero a tener en cuenta son las conexiones a realizar, para luego ser utilizada en un programa realizado en C con la librería Wiring Pi.
El problema que he tenido es que lo querría utilizar para realizar aplicaciones en C++, con el entorno de programación de QT, por lo que he tenido que adaptarlo a dicha plataforma. Para ello he seguido los siguientes pasos:
Instalación del sistema operativo y entorno de programación QT
Lo primero sería instalar el sistema operativo en la Raspberry Pi, luego instalar en entorno de programación de QT y luego instalar la librería WiringPI, y por último crear una librería que permita enviar las imágenes con la plataforma.
El entorno de trabajo que he utilizado es QT. Para ello instalaremos primero el sistema operativo Bulleye OS (el que está vigente en el momento, febrero de 2023) y posteriormente el entorno de programación QT para la Raspberry Pi (la versión 5.15.2, que es la que tienen los repositorios oficiales)
Instalación del sistema operativo Bulleye OS
Para hacerlo funcionar en una Raspberry pi, primero tenemos que descargar la versión de trabajo desde aquí
Luego, he instalado QT como plataforma de desarrollo en C++ para mostrar la información en la pantalla. He instalado la versión 5 de QT, que es la que tiene Raspberry Pi en los repositorios para Debian. Para ello:
Instalación de QT
$ sudo apt-get upgrade
Si tenemos Bullseye OS
- No detecta la versión de QT, por lo que hay que añadirlo manualmente . La localización de qmake se encuentra en /usr/lib/qt5/bin/qmake
- También hay que cambiar el compilador de C++ a utilizar, de Clang a GCC.
Instalación de WiringPi
WiringPI es una librería creada para utlizar los GPIOs de la Raspi con las mismas funciones que utiliza el entorno de Arduino. Todo esto teniendo en cuenta las similitudes entre las dos plataformas, ya que, por ejemplo, la Raspberry Pi no tiene posibilidad por si misma de realizar lecturas analógicas.
El proyecto original se puede ver en este enlace, en el que muestra cómo funciona la librería y cómo instalarla. Lamentablemente las opciones de instalación no me funcionaron (ni el repositorio de Raspberry Pi, ni la descarga del enlace del portal), por lo que tuve que buscar otra opción de descarga. Lo encontré en GitHub en el siguiente enlace. Si no os deja descargarlo, la versión para C es la siguiente.
Para instalarlo:
Si lo tenemos instalado previamente y queremos borrar la instalación
sudo apt-get purge wiringpi
git clone https://github.com/WiringPi/WiringPi.git
cd WiringPi
./build
Creación de la librería en QT
QT funciona a través de C++, por lo que el tener una librería para el manejo de la pantalla en los programas que requieran una visualización no muy grande de datos viene muy bien. Para ello utilicé la librería de la web comentada anteriormente, que maneja multitud de pantallas TFT. Entre ellas la que es controlada por el chip ILI9488, que es el que posee mi pantalla.
El problema de esta librería es que venía creada para C, por lo que inicialmente no era válida (o yo no podía usarla directamente). Para solucionar esto creé un proyecto en QT, en el que el objetivo era mostrar la ventana principal en esa pantalla. El frame principal tiene las dimensiones de la pantalla en sí.
Dejo todo el proyecto de ejemplo, junto con la librería en C de base que he utilziado para crearla (está en la carpeta Raspberry-ili9325-master, a la que he modificado los ficheros para hacer printf con las instrucciones que realiza en su funcionamiento). La podéis descargar de aquí.
Notas del autor:
La clave está en ver cómo se accede a la hora de guardar los datos. Hay una serie de instrucciones que se mandan para determinar la acción con la pantalla.(próximamente)
Queda poner en marcha el touchpad de la pantalla para analizar las instrucciones que le mandemos al programa que estemos gestionando.
Documentación a mayores a analizar:
Lo siguiente se ha encontrado en diferentes artículos, pero aún no lo he probado.
TFTs que se comunican mediante interfaz paralelo.
Tras urgar en internet y algunos videos de Youtube (el mejor lo encontré en https://www.youtube.com/watch?v=_GT_sgbKQrc ) me mostraron el portal lcdWiki, en el que se puede obtener información de diferentes pantallas lcd, así como esquemas, librerías y programas de ejemplo. La que más se acercaba a mi pantalla es http://www.lcdwiki.com/3.5inch_Arduino_Display-UNO#Program_Download
Documentación encontrada para pantallas que se comunican mediante SPI con la Raspberry Pi.
Creamos el fichero
sudo nano /etc/modules-load.d/fbtft.confspi-bcm2835
flexfb
fbtft_devicesudo nano /etc/modprobe.d/fbtft.conf