Communication Arduino/Python

 

Principe de fonctionnement

Si les microcontrôleurs Arduino sont, de par leur conception, destinées à travailler de manière autonome, il est cependant intéressant de les utiliser comme interface physique sur un ordinateur pour piloter directement des matériels ou récupérer des informations issues de capteurs, à des fins de traitement et d’exploitations. Les données, qu’elles soient des commandes ou des informations, transiteront par la connexion USB qui émule un port série. C’est ce qu’on appelle la communication série.

Dans un premier temps, pour communiquer avec l’Arduino, par liaison série, on peut utiliser le moniteur série du logiciel Arduino IDE, dans lequel ou à partir duquel, on demandera au microcontrôleur, via le programme téléversé dans sa mémoire, d’écrire ou de lire des données.

On peut alors également se servir d’un programme en python sur l’ordinateur, en remplacement du moniteur série, pouvant lui aussi lire ou écrire des données via le port série.

Avec cette méthode de communication, le programme téléversé dans la mémoire de l’Arduino est spécifique aux circuits électroniques ou aux capteurs connectés à la platine. Les ordres sont donnés à l’Arduino par ce programme et c’est lui qui écrit ou lit les informations qui transitent par le port série. Le programme python ne fait que lire les données envoyées par l’Arduino et éventuellement répondre à une demande d’information du microcontrôleur.

 

Il existe une autre méthode de communication ARDUINO / PYTHON, appelé protocole de communication Firmata, basé sur deux programmes :

– un programme en Python « donneur d’ordres », sur l’ordinateur,

– un programme « pilote », sur le microcontrôleur, qui comme son nom l’indique, pilotera les matériels en réponse aux ordres reçus.

Dans ce cas, le programme téléversé dans la mémoire de l’Arduino est généraliste et n’est qu’un intermédiaire entre le programme spécifique donneur d’ordres sur l’ordinateur et le matériel ou les capteurs connectés au microcontrôleur.

C’est le programme en Python qui donne l’ordre, via la connexion USB, d’effectuer une action au microcontrôleur (par exemple, déclarer une entrée numérique, lire l’état logique d’une entrée, écrire sur une sortie, lire la valeur d’un capteur…).


1. Le moniteur série

1.1 Envoi de données de l’Arduino vers le moniteur série

. La fonction ”Serial.print()
. La fonction ”Serial.write()

1.2 Envoi de données du moniteur série vers l’Arduino

. Programme pour la réception d’un caractère 
. Programme pour la réception d’une chaine de caractères

1.3 Conversion des données

. La fonction ”atoi()
. La fonction ”sscanf()
. La fonction ”Serial.parseInt()


2. Communication Arduino – Python via le port série

2.1 Réception de données envoyées depuis l’Arduino par un programme Python

. Programme pour la réception d’une chaine de caractères
. Programme pour la conversion d’une chaine de caractères en nombre

2.2 Envoi de données par un programme Python vers l’Arduino

2.3 Réception et envoi de données simultanément par un programme Python

3. Communication Arduino-Python via le protocole de communication Firmata

3.1 le protocole de communication ”Firmata Standard

. Gestion des sorties numériques
. Gestion des entrées numériques
. Gestion des sorties analogiques
. Gestion des entrées analogiques 

3.2 le protocole de communication ”Firmata Express

. Gestion des sorties numériques
. Gestion des entrées numériques
. Gestion des sorties analogiques
. Gestion des entrées analogiques
. La prise en charge de la bibliothèque Arduino ”Tone
. La prise en charge des capteurs ultrasoniques

4. Synthèse de la communication Arduino-Python