Fase 2: Configuración Inicial del Touchscreen

De Wiki AOC | Luis M. Garcia
Saltar a: navegación, buscar

Una vez completada la fase destinada a la puesta a punto inicial del sistema operativo para comenzar a funcionar con nuestra Raspberry Pi, la siguiente etapa es la del montaje y configuración del Touchscreen. Aquí veremos qué NO hacer y los pasos que SI tenemos que realizar para poder funcionar correctamente con nuestra pequeña pantalla.

Qué NO hacer para configurar el display

Este apartado que he decido desarrollar me ha parecido muy interesante para que nadie cometa los mismos errorres que he cometido yo a la hora de configurar la pantalla táctil, ya que lo único que lograba era inutilizar el sistema por completo y tenía que volver a realizar una completa instalación y configuración inicial del mismo.

Existe una web muy relevante en Google acerca de todo tipo de instalacione sy configuraciones de Raspberry Pi, dicha web es http://fpaez.com/

Una vez mencionada la web en cuestión, en ella podemos encontrar una guía de como configurar una pantalla táctil. En esta guía hay un paso que es el que nos deja nuestra pequeña "Raspi" con la pantalla en negro y el paso concreto es el que desactiva el ‘Accelerated X framebuffer’:

sudo mv /usr/share/X11/xorg.conf.d/99-fbturbo.conf /home/pi

Con esto tan solo queremos dar un AVISO de que si seguimos dicho tutorial (que seguramente era el idóneo en su día) nuestra Raspberry dejará de funcionar correctamente.

Instalación detallada

Para un correcto funcionamiento de nuestra PiTFT de Adrafruit temeos que realizar una serie de pasos concretos para que podamos usarla como es debido:

Antes de empezar

Tenemos que asegurarnos de que nuestro sistema esta completamente actualizado, para ello ejecutamos el siguiente comando:

sudo apt-get update

Descargar e Instalar el Kernell

A día de hoy, la forma que tienen de distribuir los paquetes del Kernell la gente de Adafruit del display PiTFT es mediante apt.adafruit.com, por lo que es necesario ejecutar lo siguiente en una terminal para añadir el paquete a nuestras fuentes de software:

curl -SLs https://apt.adafruit.com/add | sudo bash
Curl.png

Una vez realizado el paso anterior procederemos a instalar el Kernell:

sudo apt-get install -y adafruit-pitft-helper
Kernell.png

Una vez hecho esto, en un principio se te ha de configurar correctamente el dispositivo siguiendo tus preferencias (Terminal en el display y GPIO) y derivadas con el paso anterior. Si esto no ocurre o se desea realizar de forma manual habría que editar el fichero /boot/config.txt:

sudo nano /boot/config.txt

añadiendo las siguientes línas

[pi1]
device_tree=bcm2708-rpi-b-plus.dtb
[pi2]
device_tree=bcm2709-rpi-2-b.dtb
[all]
dtparam=spi=on
dtparam=i2c1=on
dtparam=i2c_arm=on
dtoverlay=pitft28r,rotate=90,speed=32000000,fps=20
  • Rotate: variable que le indica al driver la rotación de pantalla, 0, 90, 18, 270.
         - 0 es retrato.
         - 90 es apaisado, con la parte inferior de la pantalla, cerca de la toma de auriculares.
         - 180 es vertical, con la parte superior cerca de las tomas USB.
         - 270 es apaisado.
  • Speed: variable que le indica al driver la velocidad de control del display.
         - 32MHz (32000000) es un buen valor de partida, pero si su pantalla actúa de manera extraña.
         - pruebe a 16MHz (16 millones), especialmente si hace uso de un extensor de GPIO.

Dependiendo de si tenemos o no conectado el display a la placa

Conectono.jpg

Conectado

Reiniciamos el sistema:

sudo reboot

No Conectado

Apagamos el sistema y ensamblamos la PiTFT a la "Raspi".

sudo shutdown -h now

Habilitar la pantalla

Para indicarle al sistema por donde debe de realizar la salida de la imagen es necesario ejecutar los siguientes comandos dependiendo de por donde deseemos. Hay que tener en cuenta que una vez hacemos el export FRAMEBUFFER correspondiente, con solo ejecutar el startx ya nos cogería la que corresponde, pero si deseamos cambiarlo tenemos que ejecutar lo que esta indicado más abajo.

TouchScreen

export FRAMEBUFFER=/dev/fb1
startx

Salida HDMI

export FRAMEBUFFER=/dev/fb0
startx

Configuración final

Gracias al gran trabajo de la gente de Adrafruit debería de estar habilitado, con todo lo realizado anteriormente, el soporte para el touchscreen al "arrancar" el sistema, pero si no fuese el caso, simplemente tendríamos que editar un fichero:

sudo nano /etc/modules
  • Tendríamos que añadir stmpe-ts en la linea final del documento.
Nano.png

Error

Es posible que, como a mi, te suceda que cuando arrancas la Raspberry con ambas pantallas contadas (HDMI y PiTFT), cuando hace un cambio de pantalla te muestre el siguiente error:

GDBus.Error.org.freedesktop.PolicyKit1.Error.Failed: An authentication agent alredy exists for the given subject

Solución

Para solventar el error mencionado tenemos que abrir LXTerminal y escribimos

lxsession-edit

Abrirá la Configuración de la Sesión de Escritorio (Desktop Session Settings). Quitamos el check de LXPolKit, aceptamos y reiniciamos.

Calibración/Rotación

Para calibrar o rotar la pantalla, si no se nos ha creado el fichero correspondiente (se puede comprobar con el comando ls), podemos crear tanto el directorio como el fichero de configuración:

sudo mkdir /etc/X11/xorg.conf.d
sudo nano /etc/X11/xorg.conf.d/99-calibration.conf

Dentro del fichero tenemos que disponer/añadir las siguientes líneas:

Section "InputClass"
        Identifier      "calibration"
        MatchProduct    "stmpe-ts"
        Option  "Calibration"   "3800 200 200 3800"
        Option  "SwapAxes"      "1"
EndSection

Ajustando la pantalla

NOTA IMPORTANTE: En nuestro sistema, gracias a la gran automatización de la gente de Adafruit, todo esto se ha realizado de forma automática. No puedo garantizar un 100% de efectividad en lo siguiente que se describe.

Si lo anteriormente nombrado no es tu caso, deberías de crear una regla udev para tu pantalla táctil. Esto se hace porque eventX cambia mucho dependiendo del teclado y ratón que se use.

Ejecuta:

sudo nano /etc/udev/rules.d/95-stmpe.rules

Escriba lo siguiente:

SUBSYSTEM=="input", ATTRS{name}=="stmpe-ts", ENV{DEVNAME}=="*event*", SYMLINK+="input/touchscreen" 

Borre y reinstale la pantalla con:

 sudo rmmod stmpe_ts; sudo modprobe stmpe_ts
  • Cuando escriba ls -l /dev/input/touchscreen debería de apuntar a eventX, donde X es un número correspondiente a diferentes configuraciones de ratón y teclado.
Ccc.png

Aquí se muestran algunas herramientas que podemos utilizar para calibrar y depurar la pantalla. Para ello instale "event test" y "touchscreen library" con el comando:

sudo apt-get install evtest tslib libts-bin 

Ejecutando evtest

Para ello simplemente tenemos que teclear lo siguiente en una terminal:

sudo evtest /dev/input/touchscreen
  • Aquí se pueden ver los eventos en tiempo real del touchscreen.

AutoMagic Calibration Script

Si giras la pantalla necesitarás volver a calibrar la pantalla táctil para trabajar con la nueva orientación. Para ello puede ejecutar un pequeño script en Python que establecerá automáticamente una calibración de la pantalla táctil predeterminado basado en la orientación de la pantalla:

sudo adafruit-pitft-touch-cal 
  • Por defecto el script intentará leer la orientación de la pantalla mediante un examen de la configuración del módulo PiTFT con modprobe. Si la secuencia de comandos puede leer la orientación imprimirá la orientación actual, los valores de calibración de la pantalla táctil actuales y los nuevos valores de calibración de pantalla táctil baesd de la orientación actual.