Академический Документы
Профессиональный Документы
Культура Документы
TP Découverte SIN
- Etude de la liaison série UART -
NetAtmo : La Station Météo Connectée ETAPE 1 P. 1/17
PRÉSENTATION DU PROJET :
On vous demande d'étudier le concept de gestion distante du module NetAtmo. Celui-ci doit pouvoir
communiquer directement avec une application mobile.
Il nous faut donc dans un premier temps comprendre ce qu'est une communication en série, et ce par
une série d'expériences et de simulations pour ensuite mettre en œuvre le module.
Se pose alors plusieurs problématiques auxquelles nous allons répondre à travers différents TP
mettant en œuvre le principe de la communication interne des modules puis entre systèmes
externes :
Comment transmettre des informations sur une liaison en série entre les modules d’un même
système ?
Comment interpréter et mettre en œuvre un protocole de communication entre deux systèmes
distants ?
UNO
microcontrolandos.blogspot.com
AREF
13
PB5/SCK A
12
PB4/MISO
RESET 11
~ PB3/MOSI/OC2A B
10
~ PB2/SS/OC1B
9
~ PB1/OC1A C
8
PB0/ICP1/CLKO
ATMEGA328P-PU
1121
D
7
ANALOG IN
PD7/AIN1
DIGITAL (~PWM)
6
A0 ~
PD6/AIN0/OC0A
PC0/ADC0 5
A1 ~
PD5/T1/OC0B
PC1/ADC1 4
A2 PD4/T0/XCK
PC2/ADC2 3
A3 ~
PD3/INT1/OC2B
PC3/ADC3 2
A4 PD2/INT0
PC4/ADC4/SDA 1 TXD
A5 TX PD1/TXD RXD
PC5/ADC5/SCL 0
RX PD0/RXD
TXD
ARDUINO UNO R3
RTS
CTS
communication.DSN
Broche TXD: signal de communication Série (en sortie) pour la transmission des informations
communication.ino
Réalisez le schéma sous PROTEUS ISIS et écrire le programme sur ARDUINO. Enregistrez le schéma
et le programme dans le dossier M:\Travail\...\CI3-Comment circule …\TP\ETAPE1-
Apprentissage\Simulation\
QUESTION 1 : Compilez puis chargez le programme .hex dans le module Arduino UNO sous ISIS. Lancez
ensuite la simulation et réglez l'oscilloscope afin d'obtenir la visualisation suivante du signal TxD:
AMPLITUDE : DECALAGE :
réglage sur 1V réglage sur 45
Voix A sur
"DC"
5V
0V
DONNÉE
Voix B,C et D
Trame sur "OFF"
BASE DE TEMPS :
réglage sur 0,1 ms DECALAGE :
réglage sur 120
Complétez les valeurs BINAIRES lues dans la Trame de DONNÉE et recherchez à partir de la
table ASCII (cf document ressource) le caractère correspondant :
.......
0V
0 1
DONNÉE
Que constatez-vous ? Analysez dans quel ordre est envoyée un octet (octets D7 à D0) sur une
liaison Série UART.
………………....………………………………………………..………………....………………
………………....………………………………………………..………………....………………
………………....………………………………………………..………………....………………
Complétez les informations transmises lors de l'envoie d'un caractère codé sur un octet :
DATA
Repos Repos
1
S……. Bit …. Bit …. Bit …. Bit …. Bit …. Bit …. Bit …. Bit …. S.…...
0 t
QUESTION 3 : Modifier votre programme Arduino pour envoyer cette fois-ci non plus un Caractère
mais une chaine de caractère : "UN" Serial.print("UN");
TRIGGER sur 25
tracez le chronogramme de TxD en identifiant les bits à 1 (5V) et les bits à 0 (0V) :
DATA
Repos Repos
1
0 t
Quel est le premier caractère transmis ? Combien de bits START et STOP seront utilisés si
l'on envoie le message "STI2D-SIN" en série UART ?
………………....………………………………………………..………………....………………
………………....………………………………………………..………………....………………
………………....………………………………………………..………………....………………
………………....………………………………………………..………………....………………
Modifiez le programme afin d'envoyer le message "STI2D". Vérifiez que le message s'affiche
bien dans le terminal de debogage.
………………....………………………………………………..………………....………………
………………....………………………………………………..………………....………………
………………....………………………………………………..………………....………………
Arrêtez la simulation et double-cliquez sur le Terminal de debogage. Modifiez la valeur " Baud
rate" en la mettant également à 4800.
………………....………………………………………………..………………....………………
………………....………………………………………………..………………....………………
CONCLUSION : Quelle est la condition indispensable dans une liaison ASYNCHRONE entre un
émetteur et un récepteur pour que les messages soient lisibles ? ("Baud Rate"
correspond au paramètre vitesse de transmission, exprimé en bit/sec)
………………....………………………………………………..………………....………………
………………....………………………………………………..………………....………………
Modifiez le programme afin d'envoyer le caractère 'U' à 9600 bauds. Vérifiez que le caractère
s'affiche bien dans le terminal de débogage.
Ajouter l'envoie du caractère '\r' après l'envoi du caractère 'U'. Le caractère '\' (slache) est
obtenu est appuyant simultanément sur la touche Alt Gr et 8 :
………………....………………………………………………..………………....………………
………………....………………………………………………..………………....………………
QUESTION 7 : Retrouvez sur la trame de votre oscilloscope le code ASCII du caractère '\r'. A
partir de la table ASCII en annexe, donnez le nom, la valeur Hexadécimale et le rôle de ce
caractère de contrôle :
TxD
0 t
S P
Hexa : $ .............
Supprimer l'envoie du caractère '\r'. Modifiez ensuite le schéma Proteus ISIS en ajoutant le
module COMPIM. Relier la broche TXD sur le signal TxD de la broche 1 d'Arduino et
paramétrez le module ainsi (double-click ou click Droit + Editer propriétés) :
UNO
A
microcontrolandos.blogspot.com
C
AREF D
13
PB5/SCK
PB4/MISO
12 DEBOGAGE
RESET 11
~ PB3/MOSI/OC2A RXD
10
~ PB2/SS/OC1B
9
~ PB1/OC1A TXD
8
ATMEGA328P-PU
1121 PB0/ICP1/CLKO
7 RTS
ANALOG IN
PD7/AIN1
DIGITAL (~PWM)
6
A0 ~
PD6/AIN0/OC0A CTS
PC0/ADC0 5
A1 ~
PD5/T1/OC0B
PC1/ADC1 4
A2 PD4/T0/XCK
PC2/ADC2 3
A3 ~
PD3/INT1/OC2B
PC3/ADC3 2
A4
PC4/ADC4/SDA
PD2/INT0
1 TXD P1
A5 TX PD1/TXD
PC5/ADC5/SCL 0
RX PD0/RXD 1
DCD
6
DSR
ARDUINO UNO R3 2
RXD
7
RTS
3
TXD
8
CTS
4
DTR
9
RI
ERROR
COMPIM
Lancez le logiciel
"Terminal.exe" (répertoire L:\LOGICIELS\SIN\ ) et paramétrez le ainsi :
COM4, 9600 bauds, 8 bits de données, 1 bit de STOP, pas de parité, pas de controle
Connectez le logiciel TERMINAL au port COM4 et vérifiez que le caractère 'U' s'affiche bien
dans le terminal de réception :
………………....………………………………………………..………………....………………
………………....………………………………………………..………………....………………
QUESTION 9 : Retrouvez sur la trame de votre oscilloscope le code ASCII du caractère '\t'. A
partir de la table ASCII en annexe, donnez le nom, la valeur Hexadécimale et le rôle de ce
caractère de contrôle :
TxD
0 t
S P
Hexa : $ .............
Connectez le logiciel TERMINAL au port COM4 et vérifiez que le caractère 'U' s'affiche bien
dans le terminal de réception.
………………....………………………………………………..………………....………………
………………....………………………………………………..………………....………………
………………....………………………………………………..………………....………………
CONCLUSION :
Il est donc possible d'envoyer des caractères de contrôle, non visibles, en série avec Arduino.
Soit nous envoyons directement la valeur DECimale, HEXAdécimale ou BINaire, soit nous
passons par la commande \<x> en remplaçant <x> par un caractère bien spécifique
Le tableau ci-dessous regroupe l'ensemble des caractères de contrôle utilisable sous Arduino
avec la commande \<x> :
Seq Dec Hex Acro Symb NOM C Description
À l'origine utilisé pour permettre de laisser une absence (un gap) sur les bandes de
papier pour modification ultérieure. Plus tard utilisé pour combler la suite d'un
code nécessitant au terminal un temps de traitement (par exemple le temps d'un
^@ 00 0x00 NUL ␀ Null \0 retour chariot
ou d'un retour à la ligne sur un terminal imprimant). Il est maintenant souvent
utilisé comme terminateur de chaîne de caractères, spécialement dans le langage de
programmation C.
À l'origine utilisé pour faire tinter la cloche du terminal. Ensuite utilisé pour
produire un court signal sonore (beep) sur des systèmes n'étant pas dotés d'un
^G 07 0x07 BEL ␇ Bell \a timbre physique. Par la suite, en mode silencieux, l'avertisseur peut attirer
l'attention sous forme de flash en activant et désactivant l'inverse video (visual bell
/ cloche visuelle), le temps d'un éclair.
Déplacement du curseur d'une position vers la gauche. En entrée, cela peut détruire
le caractère précédent (à gauche, le sens d'écriture étant de gauche à droite). En
sortie, alors qu'avec les premières technologies, une caractère imprimé ne pouvait
plus être effacé, le retour arrière (backspace) était parfois utilisé pour générer des
caractères accentués en ASCII. Par exemple, à pouvait être imprimé en utilisant la
^H 08 0x08 BS ␈ Backspace \b
séquence des trois multiplets ASCII a BS ` (0x61 0x08 0x60). Cet usage
est maintenant désuet et généralement n'est plus pris en charge. Pour permettre une
levée d'ambiguïté entre les deux usages potentiels du backspace', le code de
contrôle caractère d'annulation (cancel character) a été intégré dans le jeu de
contrôle C1.
Tabulation \t
^I 09 0x09 HT Positionne le caractère suivant dans une colonne de type tab stop (tabulation).
LECTURE DE CARACTERES
Modifiez le programme Arduino en écrivant les lignes de commande suivantes dans la partie
Loop ( ) du programme :
B
microcontrolandos.blogspot.com
AREF D
13
PB5/SCK
PB4/MISO
12 DEBOGAGE
RESET 11
~ PB3/MOSI/OC2A RXD
10
~ PB2/SS/OC1B
9
~ PB1/OC1A TXD
8
PB0/ICP1/CLKO
ATMEGA328P-PU
1121
7 RTS
ANALOG IN
PD7/AIN1
DIGITAL (~PWM)
6
A0 PD6/AIN0/OC0A
~ CTS
PC0/ADC0 5
A1 PD5/T1/OC0B
~
PC1/ADC1 4
A2 PD4/T0/XCK
PC2/ADC2 3
A3 ~
PD3/INT1/OC2B
PC3/ADC3 2
A4
PC4/ADC4/SDA
PD2/INT0
1 TXD P1
A5 TX PD1/TXD
PC5/ADC5/SCL 0
RX PD0/RXD 1
DCD
6
RXD DSR
ARDUINO UNO R3 2
RXD
7
RTS
3
TXD
8
CTS
4
DTR
9
RI
ERROR
COMPIM
Connectez le logiciel TERMINAL au port COM4 et tapez dans la zone de TRANSMISSION des
caractères (Exemple : Spécialité STI2D - SIN )
………………....………………………………………………..………………....………………
………………....………………………………………………..………………....………………
………………....………………………………………………..………………....………………
QUESTION 12 : Quel est à votre avis le rôle de la méthode Serial.read() dans le programme ?
Quel type de variable renvoie cette fonction ?
………………....………………………………………………..………………....………………
………………....………………………………………………..………………....………………
………………....………………………………………………..………………....………………
………………....………………………………………………..………………....………………
………………....………………………………………………..………………....………………
………………....………………………………………………..………………....………………
………………....………………………………………………..………………....………………
………………....………………………………………………..………………....………………
Modifiez le programme Arduino en écrivant les lignes de commande suivantes dans la partie
serialEvent ( ) du programme :
Modifiez le schéma de simulation sous PROTEUS ISIS en connectant une LED jaune sur la
broche 7 de l'Arduino UNO :
UNO
R1
microcontrolandos.blogspot.com
270
AREF
PB5/SCK
13 D1
12 LED-BIRY
PB4/MISO
RESET 11
~ PB3/MOSI/OC2A
10
~ PB2/SS/OC1B
9
~ PB1/OC1A
8
PB0/ICP1/CLKO
ATMEGA328P-PU
1121
7
ANALOG IN
PD7/AIN1
DIGITAL (~PWM)
A0 ~
PD6/AIN0/OC0A
6 P1
PC0/ADC0 5
A1 ~
PD5/T1/OC0B
PC1/ADC1 4
A2 PD4/T0/XCK 1
PC2/ADC2 3 DCD
A3 ~
PD3/INT1/OC2B 6
PC3/ADC3 2 RxD DSR
A4 PD2/INT0 2
PC4/ADC4/SDA 1 RXD
A5 TX PD1/TXD 7
PC5/ADC5/SCL 0 RTS
RX PD0/RXD TXD 3
TXD
8
CTS
4
ARDUINO UNO R3 DTR
9
RI
ERROR
COMPIM
Entrez les chaines de caractères "ON" et "OFF" dans le champ de saisie M1 et M2 du logiciel
TERMINAL :
QUESTION 16 : Cliquez sur le bouton M1. Quel changement s'est opéré sur le simulateur ISIS ?
………………....………………………………………………..………………....………………
QUESTION 17 : Cliquez sur le bouton M2. Quel changement s'est opéré sur le simulateur ISIS ?
………………....………………………………………………..………………....………………
………………....………………………………………………..………………....………………
………………....………………………………………………..………………....………………
………………....………………………………………………..………………....………………
QUESTION 20 : Pourquoi doit-on passer par une variable de type String (chaine de caractères)
pour interpréter les commandes envoyées par le logiciel TERMINAL ?
………………....………………………………………………..………………....………………
………………....………………………………………………..………………....………………
………………....………………………………………………..………………....………………
………………....………………………………………………..………………....………………
………………....………………………………………………..………………....………………
………………....………………………………………………..………………....………………
PROTOTYPAGE
Moniteur série
Cliquez sur M1 et vérifiez que la LED s’allume sur votre schéma de simulation :
………………....………………………………………………..………………....………………
………………....………………………………………………..………………....………………
Corrigez la commande M2 en remettant « OFF », puis cliquez ensuite sur M2. Que constatez-
vous ?
………………....………………………………………………..………………....………………
………………....………………………………………………..………………....………………
………………....………………………………………………..………………....………………
………………....………………………………………………..………………....………………
………………....………………………………………………..………………....………………
………………....………………………………………………..………………....………………
………………....………………………………………………..………………....………………
………………....………………………………………………..………………....………………
………………....………………………………………………..………………....………………
………………....………………………………………………..………………....………………
………………....………………………………………………..………………....………………
………………....………………………………………………..………………....………………
………………....………………………………………………..………………....………………