Vous êtes sur la page 1sur 20

12/11/2021 15:45 Mettez en place une communication radio - Initiez-vous à l'électronique embarquée, capteurs et actionneurs - OpenClassroo…

Accueil
> Cours
> Initiez-vous à l'électronique embarquée, capteurs et actionneurs
> Mettez en place une
communication radio

Initiez-vous à l'électronique embarquée, capteurs et


actionneurs

12 heures  Moyenne

Mis à jour le 27/09/2021

 

Mettez en place une communication radio

 Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Transmissions radio “low cost”


Dans le chapitre précèdent, nous avons parlé de la communication radio à 433 MHz, qui peut être
utilisée quand nous avons à transmettre une faible quantité de données de manière

https://openclassrooms.com/fr/courses/5119661-initiez-vous-a-lelectronique-embarquee-capteurs-et-actionneurs/5574086-mettez-en-place-une-… 1/20
12/11/2021 15:45 Mettez en place une communication radio - Initiez-vous à l'électronique embarquée, capteurs et actionneurs - OpenClassroo…

unidirectionnelle. Mais de quoi avons-nous besoin pour mettre en place ce type de


communication ?

Nous avons choisi d’utiliser deux cartes Arduino Uno pour l'émission, et une carte Arduino MEGA
pour la partie réception.  Ce choix a été fait parce que les cartes Arduino ont un prix raisonnable,
et sont assez simples à prendre en main.

Une carte Arduino Uno.

Nous avons utilisé également des modules radio bon marché. Il s'agit des modules MX-FS-05V 
pour la partie émission, et du module MX-05V pour la partie réception.  Ces modules peuvent
être achetés à des prix dérisoires (moins de 5 € chez votre distributeur de composants
électroniques préféré). De plus, sur Internet, vous pouvez trouver la bibliothèque de fonctions
VirtualWire qui fournit les drivers pour ces deux cartes, et peut être  utilisée avec l’application
Arduino.  Depuis peu, la bibliothèque VirtualWire a été remplacée par la bibliothèque RadioHead :

http://www.airspayce.com/mikem/arduino/RadioHead/index.html 

qui propose toutes les fonctionnalités de son prédécesseur.

Sur la figure suivante, vous pouvez retrouver l'image des deux modules émetteur et récepteur :

https://openclassrooms.com/fr/courses/5119661-initiez-vous-a-lelectronique-embarquee-capteurs-et-actionneurs/5574086-mettez-en-place-une-… 2/20
12/11/2021 15:45 Mettez en place une communication radio - Initiez-vous à l'électronique embarquée, capteurs et actionneurs - OpenClassroo…

Le module MX-FS-05V (à gauche) et le module MX-05V (à droite).

Les connexions électriques entre les modules radio et les cartes Arduino sont extrêmement
simples  à mettre en place. Prenons le cas du module émetteur :

il est alimenté entre +5 volt et la masse, en utilisant les broches correspondantes (+5 V et
GND), qui se trouvent sur la carte Arduino ;
ensuite, la connexion DATA sur le module émetteur est connectée à la sortie D12 du module
Arduino ;
il ne faut  pas oublier de souder un fil d'environ 17 cm à la connexion ANT du module
émetteur.

Voici ce que ça donne :

https://openclassrooms.com/fr/courses/5119661-initiez-vous-a-lelectronique-embarquee-capteurs-et-actionneurs/5574086-mettez-en-place-une-… 3/20
12/11/2021 15:45 Mettez en place une communication radio - Initiez-vous à l'électronique embarquée, capteurs et actionneurs - OpenClassroo…

Les connexions électriques entre le module MX-FS-05V et la carte


Arduino UNO.

Une fois les connexions électriques effectuées, il faut relier, grâce à un câble USB, la carte à
microcontrôleur au PC sur lequel tourne l’application Arduino qui permet de les programmer.

Regardons de plus près le code qui permet de programmer le microcontrôleur de la partie


émettrice :
c_cpp

1 #include <VirtualWire.h>

3 const char *message = "ConnectIO : capteurs, actionneurs"; // la chaîne de caractères à


transmettre

5 void setup()

6 {

7 vw_setup(5000); //la vitesse de transmission de données en bits pas sec.

8 }

10 void loop()

11 {

12 vw_send((uint8_t *)message, strlen(message));

13 vw_wait_tx(); //attendre que le message soit transmis

14 delay(1000); //attendre 1000 millisecondes avant la retransmission suivante

15 }

La première ligne correspond à l’appel de la bibliothèque « VirtualWire » qui définit, entre autres,
les différentes fonctions permettant le paramétrage de la transmission. Ces fonctions sont
facilement reconnaissables par leur préfixe ("vw_").

Ensuite, nous définissons une chaîne de caractères qui contient le message à transmettre
("ConnectIO : capteurs, actionneurs"). On peut très bien imaginer que ce message soit remplacé
par une série de valeurs binaires, récupérées à partir d’un capteur relié à la carte Arduino.

Dans la boucle  setup  qui s’exécute une seule fois, on définit la vitesse de transmission de
données. Dans notre cas, elle est de 5 000 valeurs binaires par seconde et (ou 5 000 bauds).  Cette
vitesse de transmission peut varier entre 1 000 et 9 000 bauds. En règle générale, plus la vitesse
est grande, plus le risque d'avoir des erreurs de transmission est grand. De plus, ce risque
augmente avec la distance entre l'émetteur et le récepteur. 

La fonction  vw_send()  lance la transmission, et celle d’après   vw_wait_tx()   fait attendre que

le message soit transmis complètement. Enfin, la fonction  delay() permet de temporiser la


transmission ; plus précisément, d'attendre une seconde avant le début de la prochaine
transmission.

Le module de réception (MX-05V) sera connecté à une autre carte de développement


microcontrôleur. Ici, une carte Arduino Mega a été utilisée, mais tout autre carte de même type
peut faire l'affaire, à condition qu'elle ait une entrée numérique disponible.

https://openclassrooms.com/fr/courses/5119661-initiez-vous-a-lelectronique-embarquee-capteurs-et-actionneurs/5574086-mettez-en-place-une-… 4/20
12/11/2021 15:45 Mettez en place une communication radio - Initiez-vous à l'électronique embarquée, capteurs et actionneurs - OpenClassroo…

Les connexions électriques entre le module MX-05 et une carte Arduino


Mega.

Plus précisément, pour alimenter le module récepteur, il faut utiliser les connexions +5 Volt et
GND sur la carte Arduino, qui seront reliées aux connexions Vcc et GND du module récepteur. La
sortie "data" sera reliée à l’entrée  D11  de la carte Arduino MEGA. Comme pour l'émetteur, une
antenne filaire d'environ 17 cm (enroulée sur elle-même pour prendre moins de place) devra être
soudée à la connexion ANT du module récepteur.

Le programme qui roule sur le microcontrôleur du coté récepteur est le suivant :


c_cpp

1 #include <VirtualWire.h>

2 void setup()

3 {

4 vw_setup(5000);

5 vw_rx_start();

7 Serial.begin(9600);

8 }

10 void loop()

11 {

12 uint8_t long_buf = 33;

13 uint8_t mem_tampon[long_buf];

14

15 if (vw_get_message(mem_tampon, &long_buf))

16 {

17 int i;

18 Serial.print("Reçu : ");

19

20 for (i = 0; i < long_buf; i++)

21 {

22 Serial.write(mem_tampon[i]);

23 }

24 Serial.println();

25 }

https://openclassrooms.com/fr/courses/5119661-initiez-vous-a-lelectronique-embarquee-capteurs-et-actionneurs/5574086-mettez-en-place-une-… 5/20
12/11/2021 15:45 Mettez en place une communication radio - Initiez-vous à l'électronique embarquée, capteurs et actionneurs - OpenClassroo…

26 }

Comme pour l'émetteur, il faut appeler la bibliothèque VirtualWire. Ensuite, il faut indiquer le
débit de données reçues (fonction   vw_setup()  ). Bien évidemment, ce débit doit être identique
à celui utilisé à l'émission (5 000 bauds). Après avoir indiqué le débit de données et démarré le
récepteur (  vw_rx_start()  ), on initialise la communication avec le moniteur série pour
visualiser les données qui seront reçues, grâce à la fonction   Serial.begin(9600) .

Ensuite, dans la boucle principale, on définit une mémoire tampon de longueur égale à la taille
du message transmis, en sachant qu’au maximum, cette longueur est de 80 octets. Cela est
effectué par les instructions suivantes :   uint8_t long_buf = 33;  et  
uint8_t mem_tampon[long_buf]; .

Si un paquet de données a été correctement reçu, alors cela est affiché par le moniteur série par
la fonction   Serial.write(mem_tampon[i]); .

Comme vous pouvez le constater, la transmission a été réalisée avec succès ; le message transmis
par l’émetteur est affiché en boucle par le moniteur série du récepteur :

Terminal série du récepteur.

Cette communication est assez fiable. En visibilité directe, la communication porte a plus de 100
mètres et, dans un environnement "indoor" (à l'intérieur d'un bâtiment) cela est réduit à
quelques dizaines de mètres.  Les messages sont transmis même si les deux fils qui servent
d'antennes ne sont pas soudés, mais la portée est alors fortement dégradée.

Dans la section suivante, nous allons configurer un autre type de transmission : la Bluetooth Low
Energy, qui est plus complexe, certes, mais qui permet d’avoir plus de degrés de liberté, tels que

https://openclassrooms.com/fr/courses/5119661-initiez-vous-a-lelectronique-embarquee-capteurs-et-actionneurs/5574086-mettez-en-place-une-… 6/20
12/11/2021 15:45 Mettez en place une communication radio - Initiez-vous à l'électronique embarquée, capteurs et actionneurs - OpenClassroo…

le choix d’un canal de communication, la constitution d’un réseau radio, etc.

Transmissions Bluetooth Low Energy



Faire communiquer des modules radio bon marché c’est bien, mais qu’est-ce qu’on fait si
on souhaite établir une communication radio fiable, sécurisée et surtout avec une faible
empreinte énergétique?

Dans cette section, je vous présenterai comment on peut établir une connexion Bluetooth Low
energy (Bluetooth LE) entre un système à microcontrôleur et un smartphone.

La connexion Bluetooth Low Energy utilisée pour le pilotage d'un drone


avec un smartphone.

Pour ce faire, nous allons relier un module Bluefruit LE à une carte Arduino (dans le cas présent,
via une liaison SPI). Le tableau suivant récapitule les connexions électriques à faire entre les deux
dispositifs :
https://openclassrooms.com/fr/courses/5119661-initiez-vous-a-lelectronique-embarquee-capteurs-et-actionneurs/5574086-mettez-en-place-une-… 7/20
12/11/2021 15:45 Mettez en place une communication radio - Initiez-vous à l'électronique embarquée, capteurs et actionneurs - OpenClassroo…

Arduino UNO Bluefruit LE

D13   SCK

D12 MISO

D11 MOSI

D10 REQ

2 RDY

pas connecté ACT

~9 RST

pas connecté 3V0

GND. GND

5V VIN

À son tour, la carte à microcontrôleur est connectée à un PC sur lequel tourne l’environnement de
programmation Arduino, qui inclut la librairie Adafruit  nRF 8001.  De l’autre côté, sur le
smartphone, on installe l’application Bluefruit LE.  Ce type de communication radio fonctionne
comme une liaison série UART entre les deux équipements : microcontrôleur et smartphone.

La connexion UART entre un module Bluefruit LE et une carte à


microcontrôleur Arduino UNO.
https://openclassrooms.com/fr/courses/5119661-initiez-vous-a-lelectronique-embarquee-capteurs-et-actionneurs/5574086-mettez-en-place-une-… 8/20
12/11/2021 15:45 Mettez en place une communication radio - Initiez-vous à l'électronique embarquée, capteurs et actionneurs - OpenClassroo…

Regardons de plus près  le programme qui roule sur le microcontrôleur :


c_cpp

1 #include "Adafruit_BLE_UART.h"

2 #include "SPI.h"

4 #define ADAFRUITBLE_REQ 10

5 #define ADAFRUITBLE_RDY 2

6 #define ADAFRUITBLE_RST 9

8 Adafruit_BLE_UART BTLEserial = Adafruit_BLE_UART(ADAFRUITBLE_REQ, ADAFRUITBLE_RDY,


ADAFRUITBLE_RST);

10 void setup() {

11 BTLEserial.setDeviceName("Cnct_IO"); // 7 characteres maximum

12 Serial.begin(9600);

13 BTLEserial.begin();

14 }

15 aci_evt_opcode_t laststatus = ACI_EVT_DISCONNECTED;

16

17 void loop() {

18 BTLEserial.pollACI();

19 aci_evt_opcode_t status = BTLEserial.getState();

20 if (status != laststatus) {

21 if (status == ACI_EVT_DEVICE_STARTED) {

22 Serial.println(F("# ConnectIO: Capteurs, actionneurs\n\n#Le module Bluefruit LE


(BLE4.0) est prêt pour la connexion"));

23 }

24 if (status == ACI_EVT_CONNECTED) {

25 Serial.println(F("# Connecté!"));

26 }

27 laststatus = status;

28 }

29

30 if (status == ACI_EVT_CONNECTED) {

31 if (BTLEserial.available()) {

32 Serial.print("#Reçu : ");

33 }

34 while (BTLEserial.available()) {

35 char c = BTLEserial.read();

36 Serial.print(c);

37 }

38

39 if (Serial.available()) {

40 Serial.setTimeout(300);

41 String s = Serial.readString();

42 uint8_t sendbuffer[40];

43 s.getBytes(sendbuffer, 40);

44 char sendbuffersize = min(40, s.length());

45 Serial.print("#Transmis : "); Serial.print((char *)sendbuffer); Serial.print("\n");

46 BTLEserial.write(sendbuffer, sendbuffersize);

47 # }

48 }

49 }

https://openclassrooms.com/fr/courses/5119661-initiez-vous-a-lelectronique-embarquee-capteurs-et-actionneurs/5574086-mettez-en-place-une-… 9/20
12/11/2021 15:45 Mettez en place une communication radio - Initiez-vous à l'électronique embarquée, capteurs et actionneurs - OpenClassroo…

Après avoir appelé les librairies Adafruit et SPI avec les deux premières instructions, on configure
les différentes connexions entre le module Bluetooth et la carte Arduino, et on définit la
connexion Bluetooth comme une liaison série :
text

1 Adafruit_BLE_UART BTLEserial = Adafruit_BLE_UART(ADAFRUITBLE_REQ, ADAFRUITBLE_RDY,


ADAFRUITBLE_RST);

Ensuite, dans la partie   setup , on donne un nom et on initialise le module Bluefruit.  Dans cet
exemple, le module s’appelle   Cnct_IO. 

Dans la boucle qui s’exécute indéfiniment (  loop  ), on interroge l’état du module Bluefruit. Par
défaut, il est en attente d’appairage avec un autre équipement Bluetooth.
c_cpp

1 BTLEserial.pollACI();

2 aci_evt_opcode_t status = BTLEserial.getState();

3 if (status != laststatus) {

4 if (status == ACI_EVT_DEVICE_STARTED) {

5 Serial.println(F("# ConnectIO: Capteurs, actionneurs\n\n#Le module Bluefruit LE


(BLE4.0) est prêt pour la connexion"));

6 }

7 if (status == ACI_EVT_CONNECTED) {

8 Serial.println(F("# Connecté!"));

9 }

10 laststatus = status;

Sur la figure suivante, vous pouvez apercevoir une copie d'écran du moniteur série de la carte
Arduino.

https://openclassrooms.com/fr/courses/5119661-initiez-vous-a-lelectronique-embarquee-capteurs-et-actionneurs/5574086-mettez-en-place-un… 10/20
12/11/2021 15:45 Mettez en place une communication radio - Initiez-vous à l'électronique embarquée, capteurs et actionneurs - OpenClassroo…

Le moniteur série de la carte Arduino à laquelle le module BlueFruit LE a


été branché.

Si un message arrive, il sera détecté par la fonction    BTLEserial.available    et sera affiché au


moniteur série grâce à la fonction   BTLEserial.read . Tout message qui est saisi par l’utilisateur
au moniteur série sera transmis grâce à la fonction  BTLEserial.write . 

Coté smartphone, l’application Bluefruit LE, téléchargeable gratuitement depuis le Play Store
d'Android, permet d’initier une connexion Bluetooth 4.0 avec le module Bluefruit, et notamment
d'établir une liaison série UART bidirectionnelle. Voici la face avant de cette application, ainsi que
son icône sur Android Store :

https://openclassrooms.com/fr/courses/5119661-initiez-vous-a-lelectronique-embarquee-capteurs-et-actionneurs/5574086-mettez-en-place-une… 11/20
12/11/2021 15:45 Mettez en place une communication radio - Initiez-vous à l'électronique embarquée, capteurs et actionneurs - OpenClassroo…

Bluefruit LE sur Play Store et la face avant de l'interface UART.

Regardons de plus près comment fonctionne notre liaison Bluetooth. Avec le système à
microcontrôleur, l'utilisateur envoie le message : « Bonjour Android ». Le même message est reçu
par le smartphone, comme on peut le voir sur la figure suivante :

https://openclassrooms.com/fr/courses/5119661-initiez-vous-a-lelectronique-embarquee-capteurs-et-actionneurs/5574086-mettez-en-place-un… 12/20
12/11/2021 15:45 Mettez en place une communication radio - Initiez-vous à l'électronique embarquée, capteurs et actionneurs - OpenClassroo…

Message passé du microcontrôleur au smartphone

Comme on peut le voir ci-dessous, le possesseur du smartphone, grâce à l'interface UART, répond
à son tour « Bonjour Arduino » :

Message passé du smartphone vers le microcontrôleur.

Chouette, n’est-ce pas ?   Maintenant qu’on sait communiquer en Bluetooth, on peut se servir
de notre téléphone comme d’une télécommande de drone. Voici l'interface de la télécommande
proposée par l’application Bluefruit LE.

https://openclassrooms.com/fr/courses/5119661-initiez-vous-a-lelectronique-embarquee-capteurs-et-actionneurs/5574086-mettez-en-place-un… 13/20
12/11/2021 15:45 Mettez en place une communication radio - Initiez-vous à l'électronique embarquée, capteurs et actionneurs - OpenClassroo…

L’interface de la télécommande proposée par l'application Bluefruit LE. À


chaque touche correspond l'envoi d'un code ASCII.

Le code qui s’exécute sur la carte Arduino doit associer aux caractères reçus de la part du
smartphone, une action bien précise (tourner à gauche, tourner à droite, avancer, etc.).

Dans la section suivante, nous allons voir ensemble comment on peut communiquer grâce à des
modules radio Decawave, qui sont compatibles avec les normes de communication ultra-large
bande.

Transmissions radio "ultra-large bande"


https://openclassrooms.com/fr/courses/5119661-initiez-vous-a-lelectronique-embarquee-capteurs-et-actionneurs/5574086-mettez-en-place-un… 14/20
12/11/2021 15:45 Mettez en place une communication radio - Initiez-vous à l'électronique embarquée, capteurs et actionneurs - OpenClassroo…


Parfois, nous avons besoin de transmettre des données avec un débit plus grand, et de se servir
de la transmission radio pour calculer la distance entre les deux objets communicants. Pour ce
faire, la meilleure technologie radio à employer est celle qui utilise des signaux ultra-large bande.
Dans cette section, je vous montrerai comment mettre en place une communication point à
point, en utilisant des modules radio de la société Decawave.

https://openclassrooms.com/fr/courses/5119661-initiez-vous-a-lelectronique-embarquee-capteurs-et-actionneurs/5574086-mettez-en-place-un… 15/20
12/11/2021 15:45 Mettez en place une communication radio - Initiez-vous à l'électronique embarquée, capteurs et actionneurs - OpenClassroo…

Exemple de module radio ultra-large bande proposé par la société


Decawave.

Pour rappel, cette technologie implique la transmission des impulsions de courte durée, ce qui lui
confère une meilleure robustesse aux interférences rencontrées sur le canal de propagation.

Comparaison entre un signal de type bande étroite (noir) et un signal


ultra-large bande (rouge).

Néanmoins, la transmission ultra-large bande doit se contenter d’une portée assez réduite par
rapport aux autres technologies bande étroite.

De plus, par rapport aux autres technologies à bande étroite, avec les transmissions ultra-large
bande, nous avons la possibilité de localiser les objets communicants, voire de mesurer la
distance entre eux, parce que ce type de communication est similaire à la technique RADAR.

Une méthode pour la mesure de la distance entre deux transceivers ultra-large bande est
présentée sur la figure suivante :

https://openclassrooms.com/fr/courses/5119661-initiez-vous-a-lelectronique-embarquee-capteurs-et-actionneurs/5574086-mettez-en-place-un… 16/20
12/11/2021 15:45 Mettez en place une communication radio - Initiez-vous à l'électronique embarquée, capteurs et actionneurs - OpenClassroo…

Mesure de la distance entre deux objets communicants qui possèdent


des transceivers radio ultra-large bande.

En faisant transmettre des paquets de données entre deux systèmes embarqués avec des
modules ultra-large bande, on peut déterminer le temps de parcours  tp  du paquet entre les deux
objets. Ce temps est donné par la formule suivante :

Δt1 − Δt2 + Δt3 − Δt4


tp =
4

Bien évidemment, la distance entre les deux objets sera d = tp ⋅ c , où c = 3 ⋅ 108 m/sec est la
vitesse de la lumière.

Pour vous montrer un exemple de communication ultra-large bande, deux cartes


d’évaluation nous intéressent pour le chip radio DW1000 de la société Decawave. Ce chip
radio est compatible avec le standard ultra-large bande IEEE 802.15.4-2011.

Le module DWM1001, fabriqué à base du chip radio DW1000, est capable d’émettre des trains
d’impulsions autour de la fréquence 6,5 GHz, avec une bande passante d’environ 500 MHz. Plus
précisément, il émet entre 6 240 MHz et 6 739,2 MHz. Nous avons le choix entre trois niveaux de
débit de transmission différents : 110 kbps,  850 kbps et 6,8 Mbps. Le module respecte la densité

https://openclassrooms.com/fr/courses/5119661-initiez-vous-a-lelectronique-embarquee-capteurs-et-actionneurs/5574086-mettez-en-place-un… 17/20
12/11/2021 15:45 Mettez en place une communication radio - Initiez-vous à l'électronique embarquée, capteurs et actionneurs - OpenClassroo…

spectrale de puissance maximale définie par la norme, donc il émet des impulsions d’une densité
spectrale de puissance de -41.3 dBm/MHz.

Terminaux série d'un emetteur et d'un récepteur ultra large bande

Vous voyez ci-dessus des images d'écran de terminal (série) qui correspondent à la
communication avec deux modules DWM1001 paramétrés en émetteur (celui à gauche) et en
récepteur (celui de droite). Vous pouvez remarquer le fait que le message « ConnectIO » transmis
par le module émetteur est bien reçu par le module récepteur.

Pour résumer :

nous avons passé en revue les principaux paramètres d’une transmission radio ;
nous avons évoqué les principales normes de communication à faible débit ;
vous avez appris comment mettre en place trois types de liaison radio à faible débit :
une grâce à des modules radio bon marché, une connexion Bluetooth Low Energy et une
connexion ultra-large bande.

DÉCOUVREZ LES PRINCIPALES QUIZ : TESTEZ VOS CONNAISSANCES


 TECHNIQUES DE TRANSMISSION DE DU CONTEXTE DE LA 
DONNÉES À FAIBLE DÉBIT COMMUNICATION RADIO BAS NIVEAU

Les professeurs

https://openclassrooms.com/fr/courses/5119661-initiez-vous-a-lelectronique-embarquee-capteurs-et-actionneurs/5574086-mettez-en-place-un… 18/20
12/11/2021 15:45 Mettez en place une communication radio - Initiez-vous à l'électronique embarquée, capteurs et actionneurs - OpenClassroo…

Florin Doru Hutu


Maitre de conférences au département de Génie Électrique de l'INSA Lyon.

Bruno Allard
Professeur des Universités au Département de Génie Electrique, INSA Lyon

OPENCLASSROOMS

OPPORTUNITÉS

AIDE

POUR LES ENTREPRISES

EN PLUS

Français
 

https://openclassrooms.com/fr/courses/5119661-initiez-vous-a-lelectronique-embarquee-capteurs-et-actionneurs/5574086-mettez-en-place-un… 19/20
12/11/2021 15:45 Mettez en place une communication radio - Initiez-vous à l'électronique embarquée, capteurs et actionneurs - OpenClassroo…

https://openclassrooms.com/fr/courses/5119661-initiez-vous-a-lelectronique-embarquee-capteurs-et-actionneurs/5574086-mettez-en-place-un… 20/20

Vous aimerez peut-être aussi