Arduino+Python via Firmata
Firmata est un protocole de communication entre un microcontrôleur Arduino et d’autres les logiciels sur l’ordinateur hôte.
- Coté Arduino, il faut installer un programme (firmware) firmata
- Coté ordinateur, on peut utiliser n’importe quel logiciel utilisant le protocole firmata.
Sites de référence :
Voici quelques modules Python permettant d’utiliser le protocole Firmata avec Python :
FirmataExpress + pymata4
Installation
Arduino
- Ouvrir l’IDE Arduino
- Installer les bibliothèques FirmataExpress by Alan Yorinks et Ultrasonic by Erick Simöes : (voir installer une bibliothèque)
- Ouvrir l’exemple : Fichier > Exemples > FirmataExpress > FirmataExpress
- Connecter l’Arduino via le port USB
- Configurer le modèle de carte et le port série (voir Préparation)
- Téléverser le programme
Ordinateur
Depuis une fenêtre de commande (ou depuis pyzo), exécuter la commande
pip install pymata4
Programme de base
Voici un petit programme qui peut servir de base de départ pour programmer un Arduino en Python.
Ce programme permet de faire clignoter une LED.
from pymata4 import pymata4 import time # Objet représentant la carte Arduino carte = pymata4.Pymata4() # Constantes DELAY = 0.5 # période d'attente PIN = 13 # Initialisation .................................... carte.set_pin_mode_digital_output(PIN) # Fonction de test def blink(): print('ON') carte.digital_write(PIN, 1) time.sleep(DELAY) print('OFF') carte.digital_write(PIN, 0) time.sleep(DELAY) # Lancement du programme ............................ try: # Boucle infinie ................................ while True: blink() except KeyboardInterrupt: # Ctrl+C (sauf pyzo) carte.shutdown() sys.exit(0) finally: carte.shutdown()
Remarque : le programme peut être interrompu en faisant Ctrl+C, ou en cliquant sur
avec pyzo.
Analyse du programme :
Firmata + pyFirmata
Installation
Arduino
- Ouvrir l’IDE Arduino
- Ouvrir l’exemple : Fichier > Exemples > Firmata > StandardFirmata
- Connecter l’Arduino via le port USB
- Configurer le modèle de carte et le port série
- Téléverser le programme
Ordinateur
Depuis une fenêtre de commande (ou depuis pyzo), exécuter la commande
pip install pyFirmata
Erreurs fréquentes
serial.serialutil.SerialException: could not open port ‘COM5’: FileNotFoundError(2, ‘Le fichier spécifié est introuvable.’, None, 2)
Le port série n’a pas pu être ouvert
- Vérifier que l’Arduino est bien connecté sur le port spécifié
serial.serialutil.SerialException: could not open port ‘COM4’: PermissionError(13, ‘Accès refusé.’, None, 5)
Le port série n’a pas pu être ouvert
- Vérifier qu’un autre logiciel ne l’utilise pas (IDE Arduino par exemple)
- Débrancher puis rebrancher l’Arduino
- Ajouter le code suivant à la fin du programme Python :
xxx.exit() (pyFirmata) xxx.shutdown() (pymata4)
RuntimeError: Firmata Sketch Firmware Version Not Found
Erreur rencontrée avec pymata4 : ce n’est pas le bon firmware !
Installer le firmware compatible avec pymata4.
Activité Python+Arduino