Créer une Interface Graphique Python pour Contrôler une LED avec Arduino
Intégration de Python et Arduino via Tkinter et pyFirmata
L’apprentissage de la programmation microcontrôleur devient beaucoup plus interactif lorsque vous combinez Python et Arduino. Si vous avez déjà expérimenté la création d’une interface graphique en Python, vous êtes maintenant prêt à aller un peu plus loin en intégrant votre interface avec un matériel réel. Python est particulièrement puissant pour relier différents modules et paquets hétérogènes, et c’est exactement ce que nous allons explorer dans ce tutoriel.
Dans ce cours pratique, nous allons construire une interface graphique simple utilisant Tkinter pour contrôler une LED connectée à une carte Arduino via la bibliothèque pyFirmata. Cette approche permet de créer des projets interactifs tout en développant vos compétences en programmation Python et électronique.
Pourquoi utiliser Tkinter et pyFirmata ?
Tkinter est la bibliothèque standard de Python pour créer des interfaces graphiques (GUI). Elle est légère, simple à apprendre et fonctionne sur toutes les plateformes principales. En l’associant à pyFirmata, qui est un pont Python vers la carte Arduino, nous pouvons envoyer des commandes directement au microcontrôleur depuis notre interface.
pyFirmata permet de contrôler facilement les pins numériques et analogiques de la carte Arduino, de lire les capteurs, ou d’activer des actionneurs comme des LEDs. Avec Tkinter, vous pouvez créer des boutons, curseurs et autres widgets pour interagir avec Arduino en temps réel, sans avoir besoin de modifier le code sur la carte elle-même.
Dans ce tutoriel, nous allons principalement utiliser le widget Button() de Tkinter pour contrôler le clignotement d’une LED. L’objectif est de cliquer sur un bouton et d’allumer ou éteindre la LED connectée sur la carte Arduino.
Composants principaux du code
Le code Python que nous allons utiliser se compose de trois parties principales :
-
Configuration de la carte Arduino avec pyFirmata
Cette section initialise la carte et définit les pins que nous allons utiliser. -
Définition du widget Tkinter pour le bouton
Cette partie crée l’interface graphique et ajoute un bouton interactif. -
Fonction de contrôle de la LED
La fonction associée au bouton permet de faire clignoter la LED lorsqu’on appuie dessus.
Initialisation de la carte Arduino
Avant de pouvoir contrôler la LED, il est nécessaire d’importer les bibliothèques nécessaires et de configurer la carte Arduino. Pour ce tutoriel, nous utiliserons une LED connectée à la pin digitale 11.
from pyfirmata import Arduino, util
import time
from tkinter import *
# Initialisation de la carte Arduino
carte = Arduino("COM5") # Remplacez COM5 par le port utilisé par votre Arduino
acquisition = util.Iterator(carte)
acquisition.start()
# Définition de la LED sur la pin 11
led11 = carte.get_pin("d:11:p")
# Petite pause pour s'assurer que la communication est stable
time.sleep(1.0)
Cette étape est cruciale : elle établit la communication entre Python et Arduino, permettant ensuite de contrôler les composants électroniques directement depuis votre script Python.
Création de la fonction de contrôle de la LED
Ensuite, nous définissons la fonction qui sera exécutée lorsque l’utilisateur appuie sur le bouton dans l’interface. Cette fonction allume la LED pendant cinq secondes, puis l’éteint.
def start_btn():
led11.write(1) # Allume la LED
time.sleep(5) # Maintient la LED allumée pendant 5 secondes
led11.write(0) # Éteint la LED
La fonction write() de pyFirmata envoie la commande correspondante au pin spécifié. Ici, 1 correspond à l’état HIGH (allumé) et 0 à l’état LOW (éteint). Cette fonction simple est idéale pour comprendre le contrôle des composants électroniques via Python.
Création de l’interface graphique avec Tkinter
Enfin, nous allons construire l’interface graphique. Tkinter nous permet de créer une fenêtre, ajouter un bouton et associer ce bouton à notre fonction de contrôle de la LED.
# Création de la fenêtre principale
win = Tk()
win.title("Commande LED avec Tkinter")
win.minsize(300, 100)
# Ajout d’un bouton
btn = Button(win, text="Start", bd=5, bg='yellow', command=start_btn)
btn.pack()
# Lancement de la boucle principale Tkinter
win.mainloop()
Voici ce que fait chaque élément :
-
Tk()crée la fenêtre principale de votre interface. -
title()définit le titre de la fenêtre. -
minsize()définit la taille minimale de la fenêtre. -
Button()crée un bouton avec du texte, une couleur et une fonction associée. -
pack()organise le bouton dans la fenêtre. -
mainloop()démarre la boucle principale de Tkinter pour gérer les événements.
Commentaires et bonnes pratiques
-
Vérification du port COM : assurez-vous que votre Arduino est connecté au bon port série. Vous pouvez le vérifier dans l’IDE Arduino.
-
Temps d’attente (
time.sleep) : utile pour stabiliser la communication et éviter des erreurs dans la lecture/écriture des pins. -
Sécurité des composants : ne dépassez pas les limites électriques de vos LEDs et résistances pour éviter d’endommager votre carte.
-
Extensibilité : vous pouvez facilement ajouter plusieurs LEDs et boutons en créant des variables et fonctions similaires.
Extensions possibles
Après avoir maîtrisé cette configuration simple, vous pouvez enrichir votre projet en :
-
Ajoutant plusieurs boutons pour contrôler différentes LEDs.
-
Utilisant des curseurs (Slider) pour ajuster l’intensité des LEDs via PWM.
-
Intégrant des capteurs comme la lumière ou la température pour déclencher des actions automatiquement.
-
Créant une interface graphique plus complexe avec plusieurs fenêtres et widgets pour un projet Arduino complet.
Conclusion
Ce tutoriel vous a guidé pas à pas pour intégrer Python et Arduino en utilisant Tkinter et pyFirmata. Vous avez appris à :
-
Configurer la carte Arduino dans Python.
-
Créer une interface graphique simple.
-
Contrôler une LED à l’aide d’un bouton interactif.
Cette base vous ouvre la porte à des projets plus ambitieux, où Python peut piloter plusieurs composants électroniques et créer des systèmes interactifs puissants. L’utilisation de Tkinter et pyFirmata rend l’apprentissage de l’électronique plus accessible, tout en combinant la puissance de la programmation Python avec l’univers Arduino.

Aucun commentaire:
Enregistrer un commentaire