Vous êtes sur la page 1sur 10

UART COMMUNICATION USING ARDUINO WITH

APPLICATIONS

Résumé:
UART est l'une des interfaces série les plus utiles, elle est présentée dans des microcontrô leurs et dans des
ordinateurs mono carte.
Il permet à l'utilisateur de communiquer en mode série ou de connecter un appareil en mode sans fil. Dans
cette pré-impression, nous donnons une introduction sur les UART essentiellement dans les modules
Arduino. Le protocole de communication est bien expliqué et nous présentons enfin trois exemples
d'utilisation de la communication série UART avec Bluetooth, capteur GPS et pour la communication avec un
autre processeur raspberry Pi.

1. Introduction:

Dans ce travail, nous montrons ce qu'est la communication UART et comment elle fonctionne. Nous écrirons
également un croquis simple pour explorer l'interface série des modules Arduino et présenterons trois
applications avec leur code.
UART signifie récepteur / émetteur asynchrone universel. Il s'agit d'un périphérique matériel (ou circuit)
utilisé pour la communication série entre deux périphériques.
Ici, nous présentons la connexion de deux appareils UART ensemble est simple et directe. La figure 1 montre
un schéma de connexion UART de base. Afin d'obtenir de bons résultats, nous devons également connecter
des GND

Figure 1: Schéma de connexion UART de base

Un fil sert à transmettre des données (appelé la broche TX) et l'autre à recevoir des données (appelé la
broche RX). Nous ne pouvons connecter que deux appareils UART ensemble.
UART fonctionne en convertissant les données en paquets pour envoyer ou reconstruire les données à partir
des paquets reçus.
2)DONNEES DE TRANSMISSION EN SERIE

ENVOI DE DONNÉ ES DE SÉ RIE

Avant que le périphérique UART puisse envoyer des données, le périphérique émetteur convertit les
octets de données en bits. Après avoir converti les données en bits, le dispositif UART les divise en
paquets pour la transmission. Chaque paquet contient un bit de début, une trame de données, un bit de
parité et les bits d'arrêt. La figure 2 montre un exemple de paquet de données.

Figure 2: éléments du paquet de données

Après avoir préparé le paquet, le circuit UART l'envoie ensuite via la broche TX.

RECEVOIR DES DONNÉ ES DE SÉ RIE

Le dispositif UART de réception vérifie le paquet reçu (via la broche RX) pour les
erreurs en calculant le nombre de 1 et en le comparant avec la valeur du bit de parité
contenu dans le paquet. S'il n'y a pas d'erreur de transmission, il procédera alors à la
suppression du bit de départ, des bits d'arrêt et du bit de parité pour obtenir la trame
de données. Il peut avoir besoin de recevoir plusieurs paquets avant de pouvoir
reconstruire l'octet de données entier à partir des trames de données. Après avoir
reconstruit l'octet, il est stocké dans le tampon UART.

Le périphérique UART récepteur utilise le bit de parité pour déterminer s'il y a eu une
perte de données pendant la transmission. La perte de données lors de la transmission
se produit lorsqu'un bit a changé son état pendant la transmission. Les bits peuvent
changer en raison de la distance de transmission, du rayonnement magnétique et des
débits en bauds non concordants, entre autres.
3) PARAMÈ TRES UART

UART a des paramètres qui doivent être les mêmes sur les deux appareils pour avoir
une communication correcte. Ces paramètres UART sont la vitesse de transmission, la
longueur des données, le bit de parité, le nombre de bits d'arrêt et le contrô le de flux.

o TAUX BAUD

Le débit en bauds est le nombre de bits par seconde (bps) qu'un appareil UART peut
transmettre / recevoir. Nous devons définir les deux appareils UART avec le même
débit en bauds pour avoir la bonne transmission des données. Les valeurs courantes
pour la vitesse de transmission sont 9600, 1200, 2400, 4800, 19200, 38400, 57600 et
115200 bps.

o LONGUEUR DES DONNÉ ES

La longueur des données fait référence au nombre de bits par octet de données.

o BIT DE PARITÉ

Le bit de parité est un bit ajouté aux données transmises et indique au récepteur si le
nombre de 1 dans les données transmises est pair ou impair. Le paramètre possible
pour le bit de parité est impair ou pair.

• ODD - le bit de parité est "1" s'il y a un nombre impair de 1 dans les données. Sinon, le
bit de parité est mis à zéro.

• MÊ ME - le bit de parité est «1» s'il y a un nombre pair de 1 dans les données. Sinon, le
bit de parité est mis à
zéro.

o NOMBRE DE BITS D'ARRÊ T

Les dispositifs UART peuvent utiliser aucun, un ou deux bits d'arrêt pour marquer la fin
d'un ensemble de bits (appelés paquets) transmis.

o CONTRÔ LE DE DÉ BIT

Le contrô le de flux est la méthode pour éviter le risque de perte de données lors de la
transmission de données via UART. Le dispositif UART utilise des caractères spéciaux
comme contrô le de flux pour démarrer / arrêter la transmission.
4) INTERFACE ARDUINO UART

Arduino a une ou plusieurs broches UART selon la carte. Pour notre projet, nous
utiliserons un Arduino Uno qui n'a qu'une seule interface UART trouvée sur la broche 0
(RX0) et la broche 1 (TX0). Les broches Arduino 0 et 1 sont également utilisées pour
communiquer avec l'IDE Arduino via USB. Donc, si vous téléchargez des croquis sur
votre UNO, assurez-vous de déconnecter d'abord tous les fils sur les broches 0 et 1. La
figure 3 montre l'emplacement des broches UART TX et RX.
NIVEAU LOGIQUE UART

Les niveaux logiques UART peuvent différer selon les fabricants. Par exemple, un Arduino Uno a un niveau
logique 5 V mais le port RS232 d'un ordinateur a un niveau logique +/- 12 V. Connecter un Arduino Uno
directement à un port RS232 endommagera l'Arduino. Si les deux appareils UART n'ont pas les mêmes
niveaux logiques, un circuit convertisseur de niveau logique approprié est nécessaire pour connecter les
appareils.

5) UN PROJET UART SIMPLE

Après avoir appris comment fonctionne l'UART, construisons maintenant un croquis simple montrant
comment utiliser la communication UART à l'aide d'Arduino Uno.

Notre projet consiste à contrô ler la LED intégrée d'un Arduino à distance via UART. Un bouton-poussoir câ blé
à la première carte Uno contrô lera la LED intégrée de la deuxième carte Uno et vice versa.

COMPOSANTS REQUIS

Pour construire notre projet, nous avons besoin des composants suivants:

Arduino Uno (2 pièces),


boutons poussoirs (2 pièces);
Planche à pain;
Fils de cavalier

5.1 DIAGRAMME DE CONNEXION

La figure 4 montre comment connecter les composants utilisés dans notre projet.

Figure 4: Connection Diagram


5.2 CROQUIS ARDUINO

Aprè s avoir rassemblé et assemblé le maté riel, nous sommes maintenant prê ts à programmer nos
cartes. Pour ce projet, les deux planches auront des croquis identiques. Tout d'abord, nous dé finissons
le mode de broche 8 (bouton-poussoir) sur INPUT_PULLUP, dé finissons le mode de broche 13 (LED) sur
OUTPUT et dé finissons l'é tat initial de la broche 13 sur LOW (LED é teinte).

// Arduino UART Tutorial

void setup() {
pinMode(8, INPUT_PULLUP); // set push button pin as input
pinMode(13, OUTPUT); // set LED pin as output
digitalWrite(13, LOW); // switch off LED pin
}

void loop() {

5.3 OBJET DE SÉ RIE

Comme toujours, l'Arduino nous permet d'utiliser facilement le maté riel UART inté gré en utilisant
l'objet sé rie. L'objet sé rie a les fonctions né cessaires pour une utilisation facile de l'interface UART de
l'Arduino.

5.4 SERIAL.BEGIN()
Pour communiquer via l'interface UART, nous devons d'abord le configurer. Le moyen le plus simple
de configurer l’UART de l’Arduino est d’utiliser la fonction Serial.begin (vitesse). Le paramètre de
vitesse est la vitesse de transmission que nous voulons que l'UART fonctionne. L'utilisation de cette
fonction définira les paramètres UART restants aux valeurs par défaut (longueur des données = 8, bit
de parité = 1, nombre de bits d'arrêt = aucun).

Si les paramètres par défaut ne fonctionnent pas pour vous, utilisez la fonction Serial.begin (speed,
config) à la place

de Serial.begin (vitesse). La configuration de paramètre supplémentaire est utilisée pour modifier les
paramètres de longueur de données, de bit de parité et de nombre de bits d'arrêt. Les valeurs
définies pour la configuration des paramètres peuvent être trouvées ici.

Le code ci-dessous ajoute Serial.begin (9600); à l'intérieur de setup () pour initialiser l'Arduino Uno
UART avec une vitesse de transmission de 9600 bps et d'autres paramètres définis sur les valeurs par
défaut.
// Arduino UART Tutorial

void setup() {
pinMode(8, INPUT_PULLUP); // set push button pin as input
pinMode(13, OUTPUT);// set LED pin as output
digitalWrite(13, LOW);// switch off LED pin
Serial.begin(9600); // initialize UART with baud rate of 9600 bps
}

void loop() {

La prochaine partie à coder est de lire et d'enregistrer une valeur reçue du numéro de série. Pour ce faire, nous
utiliserons la fonction Serial.available () avec une instruction If pour vérifier s'il y a des données reçues. Nous allons
alors
appelez Serial.read () pour obtenir un octet de données reçues et enregistrez la valeur dans la variable data_rcvd. La
valeur de
data_rcvd contrô le l'activation / la désactivation de la LED intégrée.
5.5 SÉ RIE.AVAILABLE ()
Pour vérifier s'il y a des données en attente de lecture dans le tampon UART (ou série), nous utiliserons la fonction
Serial.available (). Serial.available () renvoie le nombre d'octets en attente dans le tampon.
5.6 SERIAL.READ ()
Pour lire les données en attente dans le tampon série, nous utiliserons la fonction Serial.read (). Cette fonction renvoie
un octet de données lues à partir du tampon
// Arduino UART Tutorial

void setup() {
pinMode(8, INPUT_PULLUP); // set push button pin
as input pinMode(13, OUTPUT); // set LED
pin as output digitalWrite(13, LOW); // switch off
LED pin

Serial.begin(9600); // initialize UART with baud rate of 9600 bps


}

void loop()
{ if(Serial.ava
ilable()) {
char data_rcvd = Serial.read(); // read one byte from serial buffer and save to data_rcvd

if(data_rcvd == '1') digitalWrite(13, HIGH); // switch


LED On if(data_rcvd == '0') digitalWrite(13, LOW); //
switch LED Off
}
}

5.7 SERIAL.WRITE ()
Pour que nous puissions envoyer des données via les broches TX0 d’Arduino, nous utiliserons la fonction
Serial.write (val). Le paramètre val est l'octet (ou la série d'octets) à envoyer.
Dans notre croquis, nous enverrons une valeur char en fonction de l'état de la broche 8. Nous environs la
valeur de char : «1» si la broche 8 est HIGH ou une valeur de caractère de «0» si la broche 8 est LOW.

// Arduino UART Tutorial

void setup() {
pinMode(8, INPUT_PULLUP); // set push button pin as
input pinMode(13, OUTPUT); // set LED pin as
output digitalWrite(13, LOW); // switch off LED pin

Serial.begin(9600); // initialize UART with baud rate of 9600 bps


}

void loop() {
if (Serial.available()) {
char data_rcvd = Serial.read(); // read one byte from serial buffer and save to data_rcvd

if (data_rcvd == '1') digitalWrite(13, HIGH); // switch LED On if


(data_rcvd == '0') digitalWrite(13, LOW); // switch LED Off
}

if (digitalRead(8) == HIGH) Serial.write('0'); // send the char '0' to serial if button is not pressed.
else Serial.write('1'); // send the char '1' to serial if button is pressed.
}
5.8 TÉ LÉ CHARGEMENT ET TEST DE CROQUIS

Enregistrez l'esquisse sous arduino_uart_tutorial.ino. L'étape restante consiste à télécharger l'esquisse sur les deux
cartes Arduino Uno. N'oubliez pas de déconnecter les fils connectés aux broches TX0 et RX0 avant de télécharger le
croquis. Une fois le téléchargement réussi, reconnectez les fils sur les broches TX0 et RX0.

Après le téléchargement, nous pouvons contrô ler la LED intégrée de l'une des cartes en appuyant sur le bouton-
poussoir connecté à autre conseil. Notre croquis vérifie l'état du bouton et envoie une valeur de caractère
correspondante de «0» ou contrô le la LED intégrée.