arduino Première communication série entre Arduino et Python


Exemple

Dans ce premier exemple, une opération d'écriture série de base est lancée à partir d'un périphérique Arduino.

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
  Serial.println("Hello World!");
  delay(100);
}

Dans setup() , la fonction Serial.begin(9600) configure le débit en bauds pour la communication de données en série. Dans cet exemple, un débit en bauds de 9600 est utilisé. D'autres valeurs peuvent être lues ici: Fonction Arduino Serial.begin ()

Dans loop() , le premier message que nous souhaitons envoyer est "Hello World!". Ce message est transmis en utilisant Serial.println("Hello World!") il enverra cette chaîne au port série au format ASCII. À la fin du message, il y a le retour de chariot (CR, \r) et le caractère de nouvelle ligne (\n) . De plus, un délai de 100 millisecondes est utilisé chaque fois que le programme imprime sur le port série.

Ensuite, téléchargez cette esquisse Arduino via le port COM (rappelez-vous ce numéro de port COM tel qu’il sera utilisé dans le programme Python).

Le programme Python qui lit les données série envoyées par l’appareil Arduino est illustré ci-dessous:

import serial
import time

ser = serial.Serial('COM8', 9600)
while (1):
    print ser.readline()
    time.sleep(0.1)

Tout d'abord, le paquetage pyserial doit être importé. Pour plus d'informations sur l'installation de pyserial dans un environnement Windows, veuillez consulter cette instruction: Installation de Python et de pyserial . Ensuite, nous initialisons le port série avec le numéro de port COM et le débit en bauds. Le débit en bauds doit être identique à celui utilisé dans l'esquisse Arduino.

Le message reçu sera imprimé en boucle en utilisant la fonction readline() . Un délai de 100 millisecondes est également utilisé ici, comme dans l'esquisse Arduino. Veuillez noter que la fonction readline() pyserial nécessite un délai d'expiration lors de l'ouverture d'un port série (documentation pyserial : PySerial ReadLine ).