Mini écran pour Raspberry HeadLess V2

Vous souhaitez développer un projet mais vous manquez de temps, de compétences ? Présentez votre projet ici pour trouver des participants...

Modérateur : Francois

Répondre
piper
Raspinaute
Messages : 240
Enregistré le : sam. 5 juin 2021 18:57

Mini écran pour Raspberry HeadLess V2

Message par piper » sam. 8 janv. 2022 14:28

Après un 1er projet tout simple basé sur l'écran Waveshare 1.44 pouce (128x128), en voici un plus complexe.
Une image valant mieux qu'un long discours, voici déjà le résultat final :
Image

Il s'agit donc de prévoir un affichage multi-page (4 pages) pour un Raspberry headless (sans écran ni clavier ni souris) et de bénéficier de quelques commandes à l'aide des boutons.
Mes boutons me permettent :
- de passer d'une page à l'autre
- d'éteindre le raspberry
- de stopper et de redémarrer des services

Le tout est dédier à un de mes raspberry 1B (un vieux) qui possède :
- une caméra sur le port CSI
- une antenne wifi (le Pi1 n'a pas de wifi)
- un disque dur externe en USB
Ce raspberry fait plusieurs choses :
- vidéo-surveillance (motion est installé pour la caméra)
- hot spot wifi (via hostapd)
- il se connecte à internet via un vpn grace à openvpn
- trasn :mrgreen: tourne dessus

Tout d'abord, voici l'écran en question :
https://www.waveshare.com/1.44inch-lcd-hat.htm

Il s'agit d'un hat avec un connecteur gpio 40 borches et se pose au-dessus d'un raspberry.
Il dispose de 3 boutons + 1 joystick (up/down/left/right/press)
Il exploite le port SPI du Raspberry
Les codes d'exemples fournit par wave-share sont ici :

Code : Tout sélectionner

https://www.waveshare.com/wiki/File:1.44inch-LCD-HAT-Code.7z
Le projet affiche :
- le nom d'hôte du raspberry en titre
- les ips (sur la patte eth0, Wlan0 et internet)
- la vitesse du processeur et sa charge
- la mémoire libre restante
- l'espace disque restant sur la carte SD et sur le disque dur
- l'état de chacun des services
- la fonction des boutons

Le code permet aussi un défilement automatique des pages au bout d'un certain temps (120sec dans l'exemple).
Le défilement automatique est désactivable (c'est dans la création de l'objet screen, tout est commenté)
L'écran étant lent et comme il faut pour modifier du texte d'abord effacer l'ancien en dessinant un rectangle dessus, je n'affiche que ce qui change réellement.
De même certaines lectures d'informations sont lentes à réaliser, donc je ne le fais pas systématiquement à chaque itération.
D'ailleurs dans le code, il y a des reste de l'ancien système de changement de pages automatique au bout non pas d'un temps mais d'itérations
Je suis revenu au temps écoulé car en lançant un traitement très lours, je me suis aperçu que au lieu de faire à peu près 100 itérations par seconde, ça tombait à 10 par minutes.
Tout cela pour garder d'une par une réactivité par rapport à l'action de l'un des boutons et d'autre part, minimiser la charge CPU du programme.
J'aurai pu faire des threads mais, j'ai encore une activité professionnelle et familiale + associative donc je n'ai pas passé des jours dessus non plus.

Pour utiliser le programme, il faut d'abord installer certaines choses :
activer l'interface spi avec raspi-config

Code : Tout sélectionner

sudo apt-get install python3-pip python3-dev python3-rpi.gpio sysstat python3-gpiozero python3-spidev libatlas3-base python3-pil 
et

Code : Tout sélectionner

sudo pip3 install Pillow
pip3 install psutil
pip3 install numpy
ensuite, vous pouvez tester le code

Code : Tout sélectionner

sudo python3 minilcd3.py
Il est possible de le mettre en démarrage automatique via minilcd.service et instserv.sh
Pour cela : ouvrez minilcd.service et changez le chemin où vous avez mis les éléments du code (par défaut c'est dans /home/pi/MINI_LCD)
Puis lancez

Code : Tout sélectionner

sudo bash instserv.sh
Vous pourrez alors gérer le programme en tant que service nommé minilcd :

Code : Tout sélectionner

sudo systemctl start/stop/status/enable/disable minilcd
Le source est téléchargeable ici
https://drive.google.com/file/d/1xgQyc6 ... sp=sharing
1 Pi 4 Emby / Samba
1 Pi4 Librelec
1 Pi3 / Hifiberry OSMC
1 Pi0 : traker GPS et acquisitions de données moteur automobile
1 Pi 2 : pilotage de serrures / RFID
5 Arduinos dont 4 nanos et 1 Mega
1 ESP32

Répondre

Retourner vers « Projets »