Outils pour utilisateurs

Outils du site


arduino:la_liaison_serie

Faire communiquer l'ordinateur et la carte Arduino : la liaison série


Qu’est-ce que la liaison série ?

La liaison série est un protocole de communication entre la carte Arduino et l'ordinateur ou d'autres composants.
La carte Arduino possède une liaison série matérielle RX (broche numérique 1) et TX (broche numérique 2) qui permet d'établir la communication avec l'ordinateur via le port USB.

L'utilisation de la liaison série rend les broches numériques 0 et 1 inopérantes
Il est possible de créer une liaison série avec d'autres broches par contre il faut utiliser une librairie Serial Software.


Deux diodes présentes sur la carte Arduino peuvent s'allumer lors d'une communication :

  • la diode TX : lors d'une transmission de la carte Arduino vers l'ordinateur ;
  • la diode RX : lors d'une réception par la carte Arduino.



C'est grâce au moniteur série, que les informations envoyées entre la carte Arduino et l'ordinateur vont pourvoir être affichées.
Le moniteur série est accessible depuis le logiciel Arduino en cliquant sur la loupe en haut à droite de la fenêtre :

La carte Arduino doit être connecté à l'ordinateur pour faire apparaitre le moniteur série.



Pour communiquer entre l'ordinateur et la carte Arduino, nous utiliserons des fonctions qui appartiennent à la bibliothèque Serial(), installée de base dans l'IDE Arduino.
Les principales fonctions sont :

  • Serial.begin() : indique le vitesse de transmission des données en Bauds (nombre de caractères/s) ;
  • Serial.print() : permet d’envoyer des données sur la voie série ;
  • Serial.println() : fait la même chose que la précédente mais avec un retour à la ligne ;
  • Serial.write() : elle permet d'écrire sur la liaison série en envoyant des données ou des chaînes de caractères ;
  • Serial.read() : elle permet de lire les octets reçu sur la liaison série ;
  • Serial.readString() : elle permet de lire les données sur la liaison série sous forme de chaînes de caractères ;
  • Serial.avaible() : elle renvoie le nombre d'octet à lire sur la liaison série.


Communiquer d'une carte Arduino vers un ordinateur

Le code suivant permet d'envoyer une information de l'Arduino vers l'ordinateur :

void setup() {
 
  Serial.begin(9600); // initialisation de la communication
  Serial.print("Hello World !");
}  
void loop()
{
 
}

A une vitesse de 9600 baud, il y a 9600 bits (0 ou 1) envoyés par seconde.


A faire vous-même 1

- Copier-coller le code précédent dans l'IDE Arduino ;
- Téléverser ce code dans la carte Arduino ;
- Ouvrir le moniteur série .


A faire vous-même 2

- Ajouter au code précédent les lignes suivantes :

void loop() {
  Serial.println("Un message de la fonction loop()");
} 

- Après l'avoir testé, remplacer Serial.println par Serial.print ;
- En testant à nouveau, vous devez comprendre la différence entre ces deux fonctions.


Avec la fonction print() , il est aussi possible d’envoyer des nombres, des chaînes de caractères ou des variables.

int variable = 51;
void setup(){
    Serial.begin(9600);
    Serial.println(65);         // un nombre
    Serial.println(3.14159265); // un nombre décimale
    Serial.println("Bonjour");  // une chaine de caractères
    Serial.println(variable);   // le contenu d'une variable   
}

Pour les nombres décimaux, la fonction print() affiche par défaut seulement deux chiffres après la virgule. Il est possible de préciser le nombre de décimales à afficher :

Serial.println(3.14159265, 4);  // affichera 3.1415 dans le moniteur série



Communiquer d'un ordinateur vers carte Arduino


Pour savoir si une donnée est envoyé à l'Arduino depuis le moniteur série, il faut interroger en permanence, son buffer de réception.
Un buffer est une zone mémoire permettant de stocker des données sur un cours instant.

Il existe une fonction Serial.available() qui retourne le nombre de caractères contenu dans le buffer de reception.

if (Serial.available() > 0 )   
{ 
      //Si un message a été reçu  faire ceci
}
else
{
 // Si rien n'est reçu faire cela
}

Serial.available(), renvoie la valeur -1 quand il n’y a rien à lire sur le buffer de réception.


Pour lire les caractères contenus dans le buffer de réception, il faut utiliser la fonction Serial.readString()

Les caractères lus seront stockés dans une variable du type string (chaîne de caractères). Il faut déclarer cette variable avant le setup() de cette façon :

String message;   // la variable "message" peut contenir du texte 

On peut maintenant stocker dans le variable “message” les caractères lus par la liaison :

 message = Serial.readString();  // lit la valeur envoyée et l’enregistre dans la variable "message" »


A faire vous-même 3

- Écrire un sketch permettant d'afficher dans le moniteur série, le texte préalablement envoyé.




A faire vous-même 4

- Faire le montage et écrire un sketch permettant :
- lorsque la lettre “A” est envoyer dans le moniteur série la DEL sur la broche 13 s'allume. Un message “La DEL est allumée.” est alors affiché dans le moniteur série.
- lorsque la lettre “E” est envoyer dans le moniteur série, la DEL s'éteint et le message “La DEL est éteinte.” est affiché dans le moniteur série.


arduino/la_liaison_serie.txt · Dernière modification: 16/08/2019 18:56 par Stéphane LAURENT