Vous utilisez un écran TFT (LCD) connecté à votre Raspberry Pi et souhaitez le contrôler ou réduire sa luminosité pour économiser de l’énergie ou améliorer votre expérience utilisateur ? Voici une solution technique détaillée, adaptée aux débutants comme aux experts, pour gérer l’alimentation et la luminosité de votre écran via logiciel ou matériel.
Introduction
Les écrans TFT (comme ceux des kits Raspberry Pi ou des modules LCD 2.8″ à 7″) sont souvent alimentés en permanence, ce qui peut générer une consommation électrique inutile. Heureusement, plusieurs méthodes existent pour les éteindre partiellement ou totalement, ou pour ajuster leur luminosité. Nous allons explorer deux approches :
- La méthode logicielle via
backlight(pour les écrans avec contrôle PWM intégré). - La méthode matérielle avec un relais ou un transistor (pour les écrans sans contrôle logiciel).
Ces solutions sont compatibles avec les écrans basés sur des contrôleurs comme le ILI9341, SSD1289, ou T6963, couramment utilisés dans les kits Raspberry Pi.
🛠️ LE MATÉRIEL REQUIS
- Un Raspberry Pi (toutes versions, mais testé principalement sur Pi 3/4/Zero 2 W).
- Un écran TFT LCD connecté via GPIO (avec ou sans contrôleur dédié).
- Pour la méthode logicielle : Aucune pièce supplémentaire (si l’écran supporte le backlight PWM).
- Pour la méthode matérielle :
- Un relais opto-isolé (ex:
MOC3021+BS170) ou un transistor NPN (ex:2N2222). - Une résistance de 1kΩ (pour le transistor).
- Un câble de connexion GPIO libre (ex: GPIO 17 ou 22).
- Un relais opto-isolé (ex:
- Un adaptateur d’alimentation 5V/3A (si votre écran nécessite plus de courant).
- Un multimètre (optionnel, pour vérifier les tensions).
MÉTHODE 1 : CONTRÔLE LOGICIEL DU BACKLIGHT (PWM)
Cette méthode fonctionne si votre écran TFT est alimenté via un backlight contrôlable en PWM (Modulation de Largeur d’Impulsion). La plupart des écrans Raspberry Pi officiels ou des modules comme le Waveshare ou Adafruit le supportent.
Étape 1 : Vérifier la compatibilité de votre écran
Connectez votre écran à un Raspberry Pi et exécutez la commande suivante pour lister les dispositifs backlight disponibles :
sudo cat /sys/class/backlight/
Si vous voyez un dossier comme backlight ou lcd-backlight, votre écran supporte le contrôle logiciel. Notez le nom du dossier (ex: lcd-backlight).
Étape 2 : Tester le contrôle de luminosité
Accédez au dossier du backlight et vérifiez les fichiers disponibles :
cd /sys/class/backlight/lcd-backlight/ ls
Vous devriez voir brightness et max_brightness. Pour éteindre l’écran, exécutez :
echo 0 | sudo tee brightness
Pour le rallumer à 50% de luminosité (si max_brightness est 255) :
echo 128 | sudo tee brightness
Étape 3 : Automatiser avec un script
Créez un script Bash pour contrôler l’écran depuis le terminal ou un raccourci. Exemple :
#!/bin/bash
BACKLIGHT_DIR="/sys/class/backlight/lcd-backlight"
MAX_BRIGHTNESS=$(cat $BACKLIGHT_DIR/max_brightness)
case "$1" in
"off")
echo 0 | sudo tee $BACKLIGHT_DIR/brightness
;;
"on")
echo $MAX_BRIGHTNESS | sudo tee $BACKLIGHT_DIR/brightness
;;
"50%")
echo $((MAX_BRIGHTNESS / 2)) | sudo tee $BACKLIGHT_DIR/brightness
;;
*)
echo "Usage: $0 {off|on|50%}"
;;
esac
Rendez-le exécutable :
chmod +x control_backlight.sh
Exécutez-le avec :
./control_backlight.sh off
Étape 4 : Intégrer à votre système (optionnel)
Pour éteindre l’écran à l’économie ou au réveil, modifiez le fichier de configuration de la lumière d’écran (si vous utilisez lightdm ou lxde) ou créez un service système. Exemple avec systemd :
sudo nano /etc/systemd/system/lcd-backlight.service
Collez ce contenu (à adapter) :
[Unit] Description=LCD Backlight Control [Service] Type=oneshot ExecStart=/usr/local/bin/control_backlight.sh off ExecStop=/usr/local/bin/control_backlight.sh on [Install] WantedBy=multi-user.target
Activez le service :
sudo systemctl enable lcd-backlight.service
Pour éteindre l’écran au démarpage (ex: après 30 secondes d’inactivité) :
sudo systemctl start lcd-backlight
MÉTHODE 2 : CONTRÔLE MATÉRIEL AVEC RELAIS OU TRANSISTOR
Si votre écran ne supporte pas le contrôle logiciel (ex: écran personnalisé sans backlight PWM), vous pouvez couper l’alimentation du backlight via un relais ou un transistor. Cette méthode est plus invasive mais universelle.
Étape 1 : Identifier les fils du backlight
Désconnectez l’écran et repérez les fils du backlight (généralement un fil rouge pour +5V et un fil noir pour GND). Utilisez un multimètre en mode continuité pour confirmer.
Étape 2 : Schéma de connexion avec transistor
Voici un schéma simple pour couper l’alimentation du backlight avec un transistor NPN (2N2222) :

Explications :
- Le collecteur du transistor est connecté à +5V (alimentation de l’écran).
- L’émetteur est connecté au fil rouge du backlight.
- La base est connectée à un GPIO via une résistance de 1kΩ.
- Le GND du transistor est relié à la masse du Raspberry Pi.
Quand vous envoyez HIGH sur le GPIO (ex: GPIO 17), le transistor s’allume et alimente le backlight. Pour l’éteindre, envoyez LOW.
Étape 3 : Code Python pour contrôler le transistor
Installez la bibliothèque RPi.GPIO si ce n’est pas déjà fait :
sudo apt update && sudo apt install python3-rpi.gpio
Créez un script Python :
#!/usr/bin/env python3
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT) # GPIO utilisé pour le transistor
def backlight_on():
GPIO.output(17, GPIO.HIGH)
def backlight_off():
GPIO.output(17, GPIO.LOW)
# Exemple d'utilisation
backlight_off()
print("Backlight éteint")
time.sleep(5)
backlight_on()
print("Backlight allumé")
Rendez-le exécutable et testez-le :
chmod +x control_backlight.py sudo ./control_backlight.py
Étape 4 : Automatisation avancée
Pour une gestion plus intelligente (ex: éteindre après inactivité), utilisez la bibliothèque pyautogui pour détecter l’activité de la souris/claviers :
sudo apt install python3-pyautogui
Exemple de script avec détection d’inactivité :
#!/usr/bin/env python3
import RPi.GPIO as GPIO
import time
import pyautogui
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT)
last_activity = time.time()
inactivity_timeout = 30 # secondes
def check_activity():
global last_activity
try:
pyautogui.position()
last_activity = time.time()
except:
pass
def backlight_control():
while True:
check_activity()
if time.time() - last_activity > inactivity_timeout:
GPIO.output(17, GPIO.LOW)
print("Backlight éteint (inactivité détectée)")
else:
GPIO.output(17, GPIO.HIGH)
time.sleep(1)
if __name__ == "__main__":
try:
backlight_control()
except KeyboardInterrupt:
GPIO.output(17, GPIO.HIGH)
GPIO.cleanup()
Exécutez-le en arrière-plan avec nohup :
sudo nohup python3 backlight_auto.py &
—
MÉTHODE 3 : SOLUTIONS LOGICIELLES AVANCÉES
Pour une intégration plus poussée, vous pouvez utiliser des outils comme lightdm (pour les environnements graphiques) ou des scripts système.
Éteindre l’écran à l’économie (lightdm)
Si vous utilisez LightDM (interface de connexion graphique), modifiez le fichier de configuration pour éteindre l’écran après un certain temps d’inactivité :
sudo nano /etc/lightdm/lightdm.conf
Ajoutez ou modifiez ces lignes :
[Seat:*] xserver-command=X -s 0 -dpms
Redémarrez LightDM :
sudo systemctl restart lightdm
Utiliser xset pour gérer la luminosité (X11)
Si votre écran est géré par X11, vous pouvez utiliser xset pour réduire la luminosité (si le pilote le permet) :
xset dpms force off # Éteint l’écran xset dpms force on # Relance l’écran
Pour une gestion plus fine, utilisez xrandr (si votre écran est reconnu) :
xrandr --output HDMI-1 --brightness 0.5 # Ajuste la luminosité à 50%
—
DÉPANNAGE
Problème : L’écran ne répond pas au contrôle logiciel
- Vérifiez que votre écran est bien reconnu par le système (ex:
ls /sys/class/backlight/). - Testez avec un autre écran TFT pour isoler le problème.
- Mettez à jour votre noyau Raspberry Pi :
sudo rpi-update
sudo reboot
Problème : Le transistor ne coupe pas l’alimentation
- Vérifiez les connexions (multimètre en mode continuité).
- Assurez-vous que le GPIO envoie bien
HIGH/LOW(testez avec un oscilloscope ou un autre script). - Si le courant est trop élevé, utilisez un relais opto-isolé (ex:
MOC3021) pour isoler le Raspberry Pi.
Problème : L’écran clignote ou bugge
- Désactivez le contrôle du backlight temporairement pour vérifier.
- Vérifiez les câbles HDMI/GPIO pour un mauvais contact.
- Réinitialisez les paramètres de l’écran avec
sudo apt install raspberrypi-bootloaderetsudo rpi-eeprom-update -a.
—
CONCLUSION
Vous avez maintenant trois méthodes pour contrôler ou éteindre votre écran TFT sous Raspberry Pi :
- Le contrôle logiciel via
backlight(simple et efficace pour les écrans compatibles). - Le contrôle matériel avec transistor/relais (universel mais plus technique).
- Les solutions logicielles avancées (pour une intégration système).
Choisissez la méthode qui correspond le mieux à votre écran et à vos compétences. Pour une solution clé en main, la méthode 1 est recommandée si votre écran le supporte. Sinon, la méthode 2 offre une flexibilité totale.
N’hésitez pas à partager vos retours ou adaptations sur les forums communautaires, et à consulter la documentation officielle de Raspberry Pi pour des détails supplémentaires.
Ce tutoriel a été rédigé en réponse à un besoin technique identifié sur les forums communautaires. La solution d’ingénierie a été développée par le Laboratoire SolarLogik.
« `
<div style="background:#f0f8ff; border:2px solid #1e73be; border-radius:12px; padding:25px; margin-top:40px; text-align:center;">
<h3 style="margin-top:0; color:#1e73be;">🛒 Le Coin du Maker</h3>
<p style="margin-bottom:20px; font-size:14px;">Les indispensables pour ce projet :</p>
<div style="display:flex; justify-content:center; gap:10px; flex-wrap:wrap;">
<a href="https://www.amazon.fr/s?k=domotique+zigbee&tag=solarlogik-21" target="_blank" style="background:#2c3e50; color:white; padding:8px 12px; border-radius:5px; text-decoration:none; font-weight:bold;">Domotique</a>
<a href="https://www.amazon.fr/s?k=raspberry+pi+5&tag=solarlogik-21" target="_blank" style="background:#1e73be; color:white; padding:8px 12px; border-radius:5px; text-decoration:none; font-weight:bold;">Raspberry Pi</a>
<a href="https://www.amazon.fr/s?k=kit+solaire+plug+play&tag=solarlogik-21" target="_blank" style="background:#2c3e50; color:white; padding:8px 12px; border-radius:5px; text-decoration:none; font-weight:bold;">Solaire</a>
<a href="https://www.amazon.fr/s?k=outillage+electricien&tag=solarlogik-21" target="_blank" style="background:#1e73be; color:white; padding:8px 12px; border-radius:5px; text-decoration:none; font-weight:bold;">Outillage</a>
</div>
<p style="font-size:10px; color:#999; margin-top:15px;">Liens affiliés Amazon (Soutien gratuit).</p>
</div>
