Afficher/cacher Sommaire
Raspberry PI
Bootez votre Raspberry Pi 3 sur une clé USB
Installation raspbian lite sur SDCard
Ajout d’un disque SSD en liaison USB
Bug sur boot disque (sans SDCard)
Boot sur SDCard et root sur SSD
Locales : fr_FR.UTF-8 -> dpkg-reconfigure locales
TimeZone : Europe/Paris -> dpkg-reconfigure tzdata
Clavier /etc/default/keyboard -> XKBLAYOUT="fr"
Journal systemd ,pour avoir les lignes affichées non tronquées, ajouter au fichier ~/.bashrc -> export SYSTEMD_LESS=FRXMK journalctl
Ajouter utilisateur au groupe systemd-journal pour donner les droits de lecture -> sudo usermod -a -G systemd-journal xino
Pour la prise en compte , il faut se déconnecter puis se reconnecter
TFT LCD 2.2 (2.8 + touch screen) serial SPI TFT
- 2.2” ILI9340C TFT and the Raspberry Pi
- Articles :
- GNU/LINUX MAGAZINE HS N°75 : RASPBERRY PI AVANCE page 72
- HACKACKABLE MAGAZINE N°3 page 82
- HACKABLE MAGAZINE N°3 “UN ECRAN A 5 EUROS POUR VOTRE RASPBERRY PI” (pages 82-93)
Connexion matérielle
ILI9340
Raspberry PI/Afficheur SPI TFT LCD 2.2p (ILI9340)
RPI | Aff. | Couleur | RPI désignation |
---|---|---|---|
21 | MISO | Jaune | SPI_MISO GPIO9 |
12 | Led | Orange | GPIO_GEN1 GPIO18 |
23 | SCLK | Violet | SPI_CLK GPIO11 |
19 | MOSI | Bleu | SPI_MOSI GPIO10 |
18 | D/C | Gris | GPIO_GEN5 GPIO24 |
22 | Reset | Brun | GPIO25 |
24 | CS | Vert | SPI_CE0 GPIO8 |
25 | GND | Noir | - alimentation |
17 | +3.3v/Vcc | Rouge | + alimentation |
Features:
- Compatible with Raspberry Pi B+ and B
- Supports Raspbian Operating system
- 65K colors and 320x240 Pixel Resolution
- Powered directly off Raspberry Pi
- Display full GUI output / primary output
- High Speed 48MHz SPI connection
- 25 Frames per second
- Integrated ILI9341 TFT LCD Driver
- Integrated 4-wire Resistive Touch Panel and XPT2046 Driver
ILI9341+Touch Screen
Raspberry PI/TouchScreen SPI TFT LCD 2.8p (ILI9341)
RPI | Aff. | Couleur | RPI désignation |
---|---|---|---|
11 | T_IRQ | Vert | GPIO_GEN0 GPIO17 |
T_D0 = MISO | |||
T_DIN = MOSI | |||
26 | T_CS (CS1) | Blanc | SPI_CE1 GPIO7 |
T_CLK = SCLK | |||
21 | MISO | Jaune | SPI_MISO GPIO9 |
12 | Led | Orange | GPIO_GEN1 GPIO18 |
23 | SCLK | Violet | SPI_CLK GPIO11 |
19 | MOSI | Bleu | SPI_MOSI GPIO10 |
18 | D/C | Gris | GPIO_GEN5 GPIO24 |
22 | Reset | Brun | GPIO25 |
24 | CS | Vert | SPI_CE0 GPIO8 |
25 | GND | Noir | - alimentation |
17 | +3.3v/Vcc | Rouge | + alimentation |
Module SPI
Activation du module SPI (en mode su)
sudo nano /boot/config.txt
# Ajouter en fin de fichier
dtparam=spi=on
# Redémarrer
sudo reboot
Vérifier chargement module SPI
SPI est actif si /dev/spidev0.0
et /dev/spidev0.1
existent.
Noyau et modules
Raspbian Jessie intègre nativement le module fbtft
Problème: le module fbtft ne se charge pas au démarrage
Solution: Modifier le fichier /etc/rc.local pour y ajouter le chargement du module (avant exit 0)
/etc/rc.local
# affichage liaison spi
exec /sbin/modprobe fbtft_device name=adafruit22a speed=48000000 rotate=90 verbose=1
Description:
- name permet de préciser le module suivant le modèle d’écran
- TFT 2”2 ILI9340 module
adafruit22a
- TFT 2”8 ILI9341 + touch screen module
adafruit28
- TFT 2”2 ILI9340 module
- verbose=1 indique que des informations complémentaires doivent être retournées
- La vitesse du bus SPI (32Mhz par défaut) a été augmentée en ajoutant l’option speed au module fbtf_device (ex: 48000000 pour 48Mhz) :
fbtft_device name=adafruit22a speed=48000000
- Le passage du mode portrait 240x320 en mode paysage 320x240 avec l’option rotate=90 :
fbtft_device name=adafruit22a speed=48000000 rotate=90
Redémarrer
sudo reboot
L’écran s’allume en restant vide et noir , le noyau nous indique la configuration utilisée
$ dmesg
[...]
[ 17.435539] fbtft_device: module is from the staging directory, the quality is unknown, you have been warned.
[ 17.436995] spidev spi0.0: Deleting spi0.0
[ 17.437527] fbtft_device: GPIOS used by 'adafruit28':
[ 17.437534] fbtft_device: 'reset' = GPIO25
[ 17.437537] fbtft_device: 'dc' = GPIO24
[ 17.437539] fbtft_device: 'led' = GPIO18
[ 17.445501] fb_ili9341: module is from the staging directory, the quality is unknown, you have been warned.
[ 17.742294] graphics fb1: fb_ili9341 frame buffer, 320x240, 150 KiB video memory, 16 KiB DMA buffer memory, fps=20, spi0.0 at 48 MHz
Le système utilise un mécanisme appelé “framebuffer” qui est une représentation mémoire des pixels qui compose l’écran.
Le raspberry Pi dispose déjà d’un périphérique de ce type /dev/fb0 , l’affichage connecté à la prise HDMI de la carte.
fbset nous retourne ses caractéristiques
$ fbset
mode "656x416"
geometry 656 416 656 416 32
timings 0 0 0 0 0 0 0
rgba 8/16,8/8,8/0,8/24
endmode
Nous pouvons faire la même opération pour notre afficheur /dev/fb1
$ fbset -fb /dev/fb1
mode "320x240"
geometry 320 240 320 240 16
timings 0 0 0 0 0 0 0
nonstd 1
rgba 5/11,6/5,5/0,0/0
endmode
Avec la philosophie UNIX qui nous dit que “tout est fichier” , on peut tester de façon simple le fonctionnement de l’écran
Comme le “framebuffer” est un fichier (/dev/fb1) ,il suffit d’y écrire des données aléatoires pour qu’une myriade de pixels de couleurs variables s’affiche:
$ cat /dev/urandom > /dev/fb1
cat: erreur d'écriture: Aucun espace disponible sur le périphérique
On prend des données aléatoires (générateur sans fin /dev/urandom) pour les copier dans l’afficheur (/dev/fb1) et quand l’afficheur est rempli , on sort en erreur.
Configuration système
Utiliser le périphérique d’affichage comme écran du système
Pour que Linux affiche les informations de démarrage et une console sur l’écran , nous devons regarder le fichier cmdline présent sur la partition FAT de la carte SD.
Editer le fichier /boot/cmdline.txt
$ sudo nano /boot/cmdline.txt
# ajouter les options en fin de ligne
fbcon=map:10 fbcon=font:VGA8x8
On précise que l’on souhaite une console et une police de caractères avec ce nouveau framebuffer
Redémarrage , pour voir s’afficher les messages à l’écran (dur dur la lecture …)
Les options font pour la police et map pour la correspondance
L’option map permet d’établir la correspondance entre le terminal tty et le périphérique “framebuffer” , nous avons choisi 10
- premier terminal tty1 –> fb1
- second terminal tty2 –> fb0 (sortie HDMI)
- pour le reste on boucle :
- tty3 –> fb1 , tty4 –> fb0 , etc…
Si l’on ne veut pas de la sortie HDMI (fb0) ,positionner l’option map:1 et tous les terminaux tty seront associés au mini-écran (la bascule entre tty se fait par Alt+[F1],Alt+[F2],etc…)
L’option rotate ne concerne que la rotation de la console et non du framebuffer qui est géré par le pilote
Améliorations
La faible résolution écran n’est pas idéale , on va reconfigurer le paquet “console-setup”
sudo dpkg-reconfigure console-setup
Laisser les valeurs par défaut:
- UTF-8
- Choix automatique du jeu de caractères adapté
- OK
- Terminus
- 6x12 (uniquement tampon vidéo (« framebuffer »))
Redémarrer le système
Raspberry Pi 3
[GUIDE] Raspbian Lite with PIXEL/LXDE/XFCE/MATE/Openbox GUI
Configurer le raspberry avec l’utilitaire
Lancer le gestionnaire de configuration raspberry
sudo raspi-config
Tout se passe dans le menu 4 Localisation Options … qu’il faudra sélectionner à chaque paramétrage des options suivantes :
- I1 Change Locale Set up language and regional settings to match your location :
fr_FR.UTF-8 UTF-8
- I2 Change Timezone Set up timezone to match your location : Europe/paris
- I3 Change Keyboard Layout Set the keyboard layout to match your keyboard : PC105 fr
- I4 Change Wi-fi Country Set the legal channels used in your country : FR
On redémarre le raspberry…
sudo reboot
Interface graphique sur Raspbian Lite
Cette partie se concentre sur l’installation d’une interface graphique sur Raspbian Lite. Pour avoir un interface GUI, nous avons besoin de ces 4 choses:
- Serveur d’affichage (Display Server) Xorg
- Environnement de bureau (Desktop Environment) Lightweight (PIXEL) ou Lightweight X11 Desktop Environment (LXDE) ou XFCE Desktop Environment (XFCE) ou MATE Desktop Environment (MATE)
- Gestionnaire de fenêtres (Window Manager) Openbox (PIXEL / LXDE) ou XFWM Window Manager (XFCE) ou Marco Window Manager (MATE)
- Gestionnaire de connexion (Login Manager) LightDM
Pour ceux qui connaissent Linux, vous vous demandez peut-être pourquoi le gestionnaire de connexion choisi ici est LightDM. Pour la plupart, il est léger et il semble bien. Mais une caractéristique qui, je crois, se démarque des autres gestionnaires de connexion est la possibilité d’exécuter le client Synergy sans erreurs. Synergy est un utilitaire qui vous permet d’utiliser la souris et le clavier d’un ordinateur (Windows, Mac ou Linux) et de le partager avec un autre ordinateur, dans ce cas, un Pi de framboise. Bien sûr, vous pouvez installer un autre gestionnaire de connexion si vous ne voulez pas LightDM.
A-Installation Xorg
sudo apt-get install --no-install-recommends xserver-xorg
Si vous installez uniquement xserver-xorg, vous ne pourrez pas lancer le serveur d’affichage Xorg à partir de la ligne de commande. Ce serait un problème si vous ne prévoyez pas d’installer un gestionnaire de connexion.Si tel est le cas, vous pouvez également installer xinit en tapant:
sudo apt-get install qxinit
B-Environnement bureau , au choix
sudo apt-get install raspberrypi-ui-mods # Pixel
sudo apt-get install lxde-core lxappearance # LXDE
sudo apt-get install xfce4 xfce4-terminal # XFCE
sudo apt-get install mate-desktop-environment-core # MATE
C-Gestionnaire de connexion pour les environnements LXDE,XFCE et MATE (lightdm intégré à Pixel)
sudo apt-get install lightdm
Si vous choisissez de ne pas installer un gestionnaire de connexion mais que vous avez installé xinit plus tôt, cela signifie que chaque fois que vous démarrez votre Pi, vous démarrez toujours dans la ligne de commande. Toutefois, l’environnement de bureau est déjà configuré pour vous et est prêt à être lancé à tout moment.
Redémarrez votre Pi. Une fois le démarrage terminé, vous verrez l’écran de connexion LightDM.
À partir de là, vous aurez besoin d’utiliser à la fois un clavier et une souris.
Connectez-vous et vous devriez maintenant voir le bureau PIXEL, LXDE, XFCE ou MATE!
si aucun gestionnaire de connexion n’a été installé, connectez-vous simplement via la ligne de commande! À tout moment, vous pouvez lancer le serveur d’affichage Xorg en tapant:
startx
Sélection afficheur LCD
/usr/share/X11/xorg.conf.d/99-fbturbo.conf , remplacer /dev/fb0 par /dev/fb1
# This is a minimal sample config file, which can be copied to
# /etc/X11/xorg.conf in order to make the Xorg server pick up
# and load xf86-video-fbturbo driver installed in the system.
#
# When troubleshooting, check /var/log/Xorg.0.log for the debugging
# output and error messages.
#
# Run "man fbturbo" to get additional information about the extra
# configuration options for tuning the driver.
Section "Device"
Identifier "Allwinner A10/A13 FBDEV"
Driver "fbturbo"
Option "fbdev" "/dev/fb1"
Option "SwapbuffersWait" "true"
EndSection
écran tactile
- https://github.com/watterott/RPi-Display/blob/master/docu/FBTFT-Install.md
- firmware/boot/overlays/README
dtoverlay
Les paramètres de l’écran tactile (TouchScreen SPI TFT LCD 2.8p ILI9341 avec cint XPT2846 compatible ADS7846)
Name: ads7846
Info: ADS7846 Touch controller
Load: dtoverlay=ads7846,<param>=<val>
Params: cs SPI bus Chip Select (default 1)
speed SPI bus speed (default 2MHz, max 3.25MHz)
penirq GPIO used for PENIRQ. REQUIRED
penirq_pull Set GPIO pull (default 0=none, 2=pullup)
swapxy Swap x and y axis
xmin Minimum value on the X axis (default 0)
ymin Minimum value on the Y axis (default 0)
xmax Maximum value on the X axis (default 4095)
ymax Maximum value on the Y axis (default 4095)
pmin Minimum reported pressure value (default 0)
pmax Maximum reported pressure value (default 65535)
xohms Touchpanel sensitivity (X-plate resistance)
(default 400)
penirq is required and usually xohms (60-100) has to be set as well.
Apart from that, pmax (255) and swapxy are also common.
The rest of the calibration can be done with xinput-calibrator.
See: github.com/notro/fbtft/wiki/FBTFT-on-Raspian
Device Tree binding document:
www.kernel.org/doc/Documentation/devicetree/bindings/input/ads7846.txt
Ajouter prise en charge de l’écran tactile en utilisant ads7846-overlay.dtb dans les “overlays” du dossier /boot/overlays/
sudo nano/boot/config.txt
[...]
dtoverlay=ads7846,cs=1,penirq=17,xmin=200,xmax=3900,ymin=200,ymax=3900,xohms=60,pmax=255,swapxy
[...]
Après reboot
dmesg |grep ads
[ 9.217169] ads7846 spi0.1: touchscreen, irq 183
Ecran tactile , étalonnage
Touchscreen calibration with GUI
Vérifier la prise en charge du module basé sur la puce ADS7843 (compatible avec ads7846)
lsmod
hwmon 10552 1 ads7846
Ce module fournit les informations aus système /dev/input/event0 ,on peut tester
sudo cat /dev/input/event0
Puis toucher l’écran tactile avec un stylet, des éléments binaires sont générés sur l’écran.Ctrl C pour arrêter le test
tslib est une bibliothèque qui sert de couche d’abstraction commune pour les événements sur écran tactile. Il comprend des filtres (par exemple pour lisser les événements et calibrer).
Installation des utilitaires de l’écran tactile
sudo apt install libts-bin
Pour utiliser ts_calibrate et ts_test, vous devez définir des variables d’environnement.
On passe en mode su (sudo)
sudo -s
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_FBDEVICE=/dev/fb1
Cela va créer une configuration sur la console courante.
Ensuite, lancez le processus d’étalonnage:
ts_calibrate
Cela affichera un écran avec un réticule et des instructions.
Touchez le centre de la croix avec votre stylet. Répétez la procédure jusqu’à la sortie du logiciel.
Tester l’étalonnage
ts_test
Cela affichera une croix que vous pouvez déplacer et glisser autour. Vous pouvez également passer en mode dessin .
N’oubliez pas de configurer les variables d’environnement, si vous exécutez la commande à partir d’une autre console.