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 :

Comment s’appelle l’objet « python » qui représente le microcontrôleur ?
×
Sur quel port numérique doit être connectée la LED à faire clignoter ?
×
Quelle est la période du clignotement de la LED ?
×
À quelle ligne la LED est-elle éteinte ?
×
Que faut-il faire à l’objet « python » représentant le microcontrôleur avant de terminer l’exécution du programme (nom de la méthode) ?
×

 

Activité : Buzzer

 

 

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

 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *