Outils pour utilisateurs

Outils du site


arduino:communication_entre_arduino_et_python_par_la_liaison_serie

Communication entre Arduino et Python par la liaison série


Objectifs



Le montage et le code Arduino

La photorésistance est connectée à une entrée analogique (A0) et nécessite un diviseur de tension réalisé avec une résistance de 1 KΩ (marron / noir / rouge).



Le code suivant permet d'afficher dans le moniteur série les valeurs lue sur la broche analogique A0.

void setup() {
    Serial.begin(9600);  // Initialise la communication avec l'ordinateur
}
 
void loop() { 
  int valeur = analogRead(A0);  // Mesure la tension sur la broche A0
  Serial.println(valeur);  // Affiche la mesure sur l'ordinateur
  delay(250);
}



Lecture des données envoyées sur le port série en Python

Avant de lire avec Python les données envoyées sur le port série, il faut fermer le moniteur série d'Arduino !

Pour lire sur le port série, il faut :

  • importer le module serial ;
  • initialiser la liaison série en précisant le nom du port utilisé et la vitesse de transmission ;
  • lire avec la fonction readline() ;
  • fermer le port série avec la fonction close().
import serial
port_serie = serial.Serial(port = "COM4", baudrate = 9600)
print(port_serie.readline())
port_serie.close()

Après l’exécution de ce code, la console Python pourrait afficher une chaine de caractères (byte) de la forme : b'795\r\n'

  • 795 : est la valeur (entre 0 et 1023) envoyer par l'Arduino ;
  • \n : indique un retour chariot ;
  • \r : indique un retour à la ligne (println).


Stocker les données envoyées par l'Arduino dans une liste

Les données envoyées par l’Arduino peuvent être stockées dans une liste :

import serial
port_serie = serial.Serial(port = "COM4", baudrate = 9600)
 
liste_mesures = []
 
for i in range(10):                           # pour lire les 10 premières lignes sur le port série
    mesure = port_serie.readline().split()    # la fonction split() décompose la chaîne de caractères est supprime '\r\n'
    liste_mesures.append(mesure)              # ajoute la valeur de "mesure" à la liste "liste_mesures"
 
port_serie.close()
print(liste_mesures)
arduino/communication_entre_arduino_et_python_par_la_liaison_serie.txt · Dernière modification: 15/06/2020 20:11 (modification externe)