Pour contrôler de l’Arduino avec Python, il existe une libraire appelée pyFirmata. Celle-ci fait la liaison entre votre éditeur Python et la carte Arduino, elle vous permet de diriger n’importe quel pin de votre carte Arduino en fonction de votre projet.
Il existe d’autres librairies que Pyfirmata sur Python pour faire cette liaison avec Arduino. Néanmoins Pyfirmata est l’une des plus simple d’utilisation.
Pour installer la bibliothèque il faut taper la commande suivante dans la console Python : !pip install pyfirmata
Vous avez sur la droite une idée de ce que vous obtiendrez une fois la librairie installée.
Pour ce tutoriel, nous utilisons Anaconda, un interpréteur de commande pour Python.
L’étape suivante pour faire fonctionner pyFirmata est d’aller sur Arduino ide et de téléverser un des programmes Firmata que l’on peut trouver dans les exemples. Cela permet d’initialiser la connexion entre Arduino et Firmata : nous avons téléversé StandardFirmata pour la suite de ce tutoriel.
Voici un programme pour tester chez vous.
Ce petit code rapide permet de vérifier (avec seulement une carte Arduino) que tout est opérationnel. Il consiste à faire clignoter 10 fois la LED se trouvant sur la carte et qui est reliée à la sortie digitale 13.
Remarque : Lorsque vous ferez le test, vous verrez que la led Rx clignote aussi, celle-ci permet de montrer qu’il y a une interaction entre la carte arduino et le programme Python quand le programme est lancé.
Remarque : On peut faire marcher le programme à l’infini en remplaçant la boucle for par « while True ».
Méthode 1 : On peut trouver le numéro du port dans le gestionnaire de périphériques.
Méthode 2 : On peut aussi le trouver depuis le bouton outil sur Arduino IDE.
Si vous avez des problèmes pour trouver votre port, on vous conseille notre cours dessus.
Il suffit de reprendre le code précédent en remplaçant la sortie 13 de la micro-led par la broche sur laquelle vous avez branché votre led.
Voici un schéma du câblage de la led.
On utilise une résistance de 220 Ohms.
Le capteur de température est un dispositif permettant de mesurer une grandeur physique (température) et de la restituer sous forme de signal en la transformant en tension. Il est composé de trois broches : une d’alimentation, une de GND et enfin une broche OUT.
Pour ce programme, nous allons afficher les valeurs des températures dans la console Python grâce à ce capteur :
Voici le schéma Fritzing associé au projet :
Voici ce que l’on peut voir en lançant le programme :
Un servomoteur est un moteur capable de maintenir une opposition à un effort statique dont la position est vérifiée en continu et corrigée en fonction de la mesure.
Dans le programme que l’on va vous proposer, vous pourrez donner la valeur de l’angle que vous souhaitez et la position du servo-moteur changera en fonction de celle-ci.
Voici le schéma Fritzing associé au projet :
Voici ce que l’on peut voir en lançant le programme :
Dans cette partie, nous allons vous présenter un programme permettant de récupérer la valeur de n’importe quel composant. Pour cela vous devrez changer quelques lignes afin d’adapter les valeurs que vous voulez obtenir, spécifier si c’est une entrée ou une sortie.
import pyfirmata
import time
port = ‘COM3’ # Windows à adapter par rapport à votre ordinateur
board = pyfirmata.Arduino(port) # Permet d’ouvrir le port associé
votre_composant_pin = board.get_pin(‘a:0:i’) # Permet d’initialiser la broche utilisée
iterator = pyfirmata.util.Iterator(board) # Permet d’initialiser la liaison entre Python et Arduino
iterator.start() # Démarrage de la connexion
votre_composant_pin.enable_reporting() # Lecture des valeurs de la broche choisie
while votre_composant_pin.read() == None: None # Tant qu’il n’y a pas de valeurs
try:
while
True:
print (« La valeur est : « ,votre_composant_pin.read()) # Lit et affiche les valeurs de la broche
time.sleep(1) # Pause entre deux mesures
except:
votre_composant_pin.disable_reporting() # Arrête la lecture de la broche
board.exit()
Voici les modifications que vous devez apporter afin de que votre programme fonctionne avec le composant choisi :
| Input (capteur, bouton …) | Output (moteur, led …) |
d => digital | (d : N° broche : i) | (d : N° broche : o) |
a => analogique | (a : N° broche : i) | (a : N° broche : o) |
1) (d : N° broche : p) -> p signifie pulse width modulation (pwm), qui permet de modifier l’intensité d’une led par exemple.
2) ( d : N° broche : s) -> s signifie servomoteur, vous devez le mettre uniquement si vous utilisez un servo moteur
d = digital, on l’utilise si l’on souhaite contrôler un composant (un moteur par exemple)
a = analogique, on l’utilise pour tout ce qui est capteur et qui renvoie une tension mesurant une grandeur physique
i = input (entrée)
o = output (sortie)
Vous savez maintenant comme utiliser pyfirmata, une des librairies Python pour Arduino. N’hésitez pas à regarder d’autres cours sur notre site, comme la télécommande infrarouge ou encore le moteur pas à pas.