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 et Ultrasonic : (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
#!/usr/bin/env python # -*- coding: utf-8 -*- 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.
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.