Académique Documents
Professionnel Documents
Culture Documents
Julien Launay
MON PREMIER
OBJET
CONNECTÉ
Découvrir les réseaux
informatiques
Aujourd’hui, notre environnement est devenu hyperconnecté. Les systèmes Titulaire d’un DESS en automatique et infor-
qui nous entourent, de notre lave-linge aux transports en commun, partagent matique industrielle, Julien Launay est pro-
des données pour améliorer notre quotidien. Le monde de l’Internet des fesseur de technologie au collège et au lycée
objets (Internet of Things en anglais ou IoT) est en marche ! Mais comment depuis 25 ans. Il enseigne également en IUT
fonctionnent ces objets connectés? Comment partagent-ils des informa- Informatique, ainsi qu’en école d’ingénieur.
tions? Quels réseaux exploitent-ils? Il est aussi l’auteur de l’ouvrage Les réseaux
informatiques par la pratique, paru aux édi-
Avec juste quelques connaissances de base en programmation, cet ouvrage tions Eyrolles.
très illustré vous initiera au monde de l’IoT à travers la réalisation de plu-
sieurs objets connectés (une lampe, un thermomètre, un robot). Pour
cela, vous utiliserez la carte à microcontrôleur Galaxia, simple d’emploi et
de faible coût, que vous programmerez dans un environnement visuel par
blocs de type Scratch. Vous connecterez ainsi ces objets à un réseau TCP/
IP, puis vous créerez une page web affichant les données des capteurs. Vous
serez également amené à concevoir votre propre réseau, ce qui vous per-
mettra de vous familiariser avec les différentes notions associées (protocole,
adresse IP, etc.). Avec ce livre ludique, vous apprendrez par la pratique !
Qu’est-ce qu’un objet connecté ? • Pourquoi un monde connecté ? • Composition
d’un système pour l’IoT • Réseaux utilisés pour l’IoT • Créer son propre réseau
IoT • Programmer la carte Galaxia • Présentation de Galaxia • Interface
de développement • Programmation • Ressources en vidéo • Interface de
développement Vittascience • Lampe connectée • Créer un réseau • Identifier les
éléments du réseau • Vérifier le réseau • Mettre en œuvre la lampe connectée •
Thermomètre connecté • Analyser le système • Tester le capteur IoT • Mettre le
capteur en réseau • Programmer le capteur • Tester le capteur • Adresse IP du
système connecté • IoT sur une page web • Notion de client-serveur sur un réseau
• Fonctionnement d’une page web • Programmer une page web sur la carte Galaxia
• Commander la carte Galaxia avec une URL • Échanger des données avec la carte
Galaxia • Application à construire • Dessiner l’application • Programmer la carte
Galaxia • Tester le système • Utiliser une plate-forme IoT et le protocole MQTT •
Protocole MQTT • Plate-forme HiveMQ • Plate-forme Adafruit • Commander un
robot • Présentation du robot Maqueen • Piloter un robot avec une application
Dashboard • Pour aller plus loin
MON PREMIER
OBJET
CONNECTÉ
CHEZ LE MÊME ÉDITEUR
Dans la collection « Serial Makers »
C. BOSQUE, O. NOOR et L. RICARD. – FabLabs, etc. Les nouveaux lieux de fabrication numérique.
N° 13938, 2015, 216 pages.
Julien Launay
MON PREMIER
OBJET
CONNECTÉ
Découvrir les réseaux
informatiques
Éditions Eyrolles
61, bd Saint-Germain
www.editions-eyrolles.com
En application de la loi du 11 mars 1957, il est interdit de reproduire intégralement ou partiellement le présent ouvrage, sur quelque support
que ce soit, sans l’autorisation de l’Éditeur ou du Centre français d’exploitation du droit de copie, 20, rue des Grands-Augustins, 75006 Paris.
Je tiens à remercier tout particulièrement l’équipe des éditions Eyrolles et Antoine Derouin pour avoir
accepté l’ouvrage proposé et m’avoir permis d’écrire en toute liberté. Merci aussi pour cette relecture très
minutieuse et ô combien indispensable.
Merci à André Bernot, de la société A4, pour son aide matérielle autour de la carte ESP32, ainsi que ses
capteurs et actionneurs Grove, son robot CODO et Maqueen.
Un grand merci tout particulier à Cyril de Thingz, avec qui j’ai échangé autour de sa carte Galaxia et qui a
su s’adapter rapidement à mes demandes.
Merci aussi à Léo, de Vittascience, qui adapte son environnement à la carte Galaxia.
Un merci tout particulier à ma petite famille, qui a pu supporter mes périodes de travail limitant mes dispo-
nibilités et qui m’a soutenu dans cet exercice.
5
Avant-propos
Notre environnement devient de plus en plus connecté. Les systèmes qui nous entourent, de notre lave-
linge aux transports en commun, partagent des données pour améliorer notre quotidien. Depuis l’arrivée
du smartphone en 2007, ces connexions se démultiplient et les nouveaux services toujours plus nombreux.
Et nous n’en sommes qu’au début…
Le nombre de ces données maintenant disponibles explose. Pour les traiter, les bases de données classiques
cèdent la place à des outils d’intelligence artificielle associés à des algorithmes de traitement automatique.
Vous allez découvrir dans cet ouvrage comment créer un objet connecté fonctionnel afin de mieux
comprendre ce monde de l’IoT. Vous utiliserez la carte Galaxia à base de microcontrôleur, qui facilitera la
réalisation des objets connectés. Cette carte présente, outre son faible coût, l’avantage d’être compacte et
très facile à utiliser avec un outil de développement simple et performant.
Cet ouvrage s’adresse à des débutants en informatique. Il suffira de connaître quelques bases simples de
programmation, vues avec Scratch au collège par exemple. Cette programmation sera réalisée en mode
blocs pour simplifier le propos. Vous utiliserez le réseau déjà installé chez vous pour tester vos solutions IoT.
Il ne s’agit ici que d’une initiation. Il existe bien sûr d’autres systèmes plus performants, mais moins acces-
sibles économiquement et dont le niveau de complexité requiert des compétences supérieures.
Dans ce livre, vous allez ainsi vous familiariser avec les réseaux informatiques par la pratique, en créant
votre propre réseau et en l’utilisant. Vous pourrez alors plus facilement appréhender le vocabulaire associé,
la notion de protocole, d’adresse IP, etc…
Cet ouvrage vous permettra donc de vous faire votre propre avis sur l’utilisation de l’IoT au quotidien.
Les objets connectés sont capables de prendre des décisions de façon autonome, sans l’intervention de
l’être humain. Vous pourrez ainsi réfléchir aux questions suivantes :
• Est-ce que l’IoT aura un impact environnemental ?
• Quel sera le contrôle de l’être humain sur la machine ?
• Devons-nous confier nos données personnelles à des machines ?
• Est-ce que les machines prendront des décisions importantes à notre place ?
• Quelle sera la responsabilité des algorithmes ?
• Quel niveau de confiance accorder à ces derniers ?
• Est-ce que l’intelligence artificielle et l’IoT permettront de trouver de nouvelles lois physiques ?
7
MON PREMIER OBJET CONNECTÉ
• Si les objets connectés et leurs données sont restreints par le périmètre de leurs usages, est-ce que l’IoT
permettra une réelle autonomie ?
Si vous souhaitez aller plus loin, n’hésitez pas à lire Les réseaux informatiques par la pratique pour en apprendre
davantage sur les réseaux et Créer des applications avec App inventor pour programmer des applis sur smart-
phone ; ces deux ouvrages sont disponibles aux éditions Eyrolles.
Alors maintenant, lancez-vous dans ce monde des objets connectés. Bonnes expériences !
8
Table des matières
3 Lampe connectée....................................................................................................... 23
Créer un réseau................................................................................................................................................. 23
Identifier les éléments du réseau..................................................................................................................... 24
Vérifier le réseau............................................................................................................................................... 26
Mettre en œuvre la lampe connectée............................................................................................................... 27
4 Thermomètre connecté.............................................................................................. 29
Analyser le système........................................................................................................................................... 29
Tester le capteur............................................................................................................................................... 30
Mettre le capteur en réseau.............................................................................................................................. 31
Programmer le capteur..................................................................................................................................... 31
Tester le capteur IoT......................................................................................................................................... 33
Adresse IP du système connecté...................................................................................................................... 35
9
MON PREMIER OBJET CONNECTÉ
8 Commander un robot.................................................................................................. 81
Présentation du robot Maqueen........................................................................................................................ 81
Piloter un robot avec une application Dashboard............................................................................................ 82
Pour aller plus loin............................................................................................................................................ 90
10
1 Qu’est-ce qu’un objet connecté ?
Le monde de l’Internet des objets (Internet of Things – IoT) met en relation le monde physique réel avec le
monde virtuel. Il fait dialoguer des machines entre elles. En général, une structure IoT met en œuvre un
objet associé à des capteurs et/ou des actionneurs, des passerelles qui conduisent les données jusqu’à des
serveurs, lesquels accueillent des plates-formes dédiées sur un cloud. Ces données seront ensuite visualisées
et traitées sur un ordinateur ou un smartphone connecté au cloud. On pourra ainsi connaître les places de
stationnement libres les plus proches de soi ou suivre l’état d’un patient à distance. C’est un domaine en
pleine évolution.
En général, les objets connectés ne nécessitent aucune intervention humaine et sont autonomes.
11
MON PREMIER OBJET CONNECTÉ
Capteur / Actionneur
Objet connecté
PC / smartphone
Passerelle Plate-forme IoT (cloud)
(applications)
Capteur / Actionneur
Objet connecté
Les réseaux présentés à la figure 1–2 sont principalement utilisés et ont chacun une portée, un débit et une
couverture caractéristiques.
Les réseaux LoRa et Sigfox sont les plus utilisés dans le monde de l’IoT. Leur portée est importante et
couplée à une faible consommation d’énergie, mais avec un débit faible de données.
70
64 %
60
50
40
30 29 %
25 %
22 %
20 20 %
10 9%
4%
2%
0
LoRa, Sigfox
Réseaux mobiles EnOcean
(2G, 3G, 4G, 5G)
Wi-Fi
Zigbee
Autres
Bluethooth low energie (BLE)
Réseau filaire
12
CHAPITRE 1. QU’EST-CE QU’UN OBJET CONNECTÉ ?
La figure 1–3 montre quel réseau choisir en fonction de sa portée et du débit de données souhaité.
Débit
100 MBps Wi-Fi
5G - 4G - 3G
Wi-Fi
Halow
1 MBps Bluetooth
BLE LTE-M
100 kBps NB-IoT
Zigbee
Z-Wave
1 MBps
LoRa
RFID
SigFox
0
1m 10 m 100 m 1 km 10 km Portée
Figure 1–3 – Répartition des réseaux selon leur portée et leur débit de données.
Pour des raisons de simplicité et de coût, nous utiliserons dans ce livre le réseau Wi-Fi, qui a l’avantage
d’être disponible facilement, avec une mise en œuvre simplifiée et des systèmes à très faible coût.
IOTBIT de Elecfreaks
Cette carte permet de créer un objet connecté à l’aide d’une
carte micro:bit. La programmation est réalisée à l’aide de
l’IDE makecode.microbit.org en installant une extension
spécifique.
https://www.elecfreaks.com/learn-en/microbitKit/iot_kit/iot_bit.html
13
MON PREMIER OBJET CONNECTÉ
MiBot32 de Cartelectronic
Cartelectronic
Cartelectronic
Figure 1–5 – Carte MiBot32 connectée Figure 1–6 – Carte MiBot32 connectée au robot mBot.
à une carte micro:bit.
Cette carte permet de transformer une carte micro:bit ainsi que le robot mBot de chez Makeblock en objets
connectés.
https://www.cartelectronic.fr/29-robot-educatif
Il suffit ensuite d’utiliser l’IDE de programmation par blocs makecode.microbot.org pour la carte micro:bit
avec l’extension proposée ou mBlock 5 avec le robot mBot.
ESP32 DevkitC
Cette carte sert à créer des prototypes.
14
CHAPITRE 1. Qu’est-ce qu’un objet connecté ?
Waveshare
des zones reculées.
Galaxia de Thingz
Elle est très proche de la carte micro:bit, avec le gros avantage de proposer
une connexion Wi-Fi et un écran. Le connecteur est totalement compa-
tible avec celui de la micro:bit.
C’est cette carte que nous utiliserons dans cet ouvrage. Elle présente
l’avantage d’être très simple d’utilisation et très polyvalente. L’interface
de développement propose une programmation par blocs ou en Python
ou même en langage C.
Thingz
Nous présenterons une programmation de type blocs, qui permet une
initiation à l’IoT très progressive et sans difficultés.
Figure 1–9 – Carte Galaxia de Thingz.
15
2 Programmer la carte Galaxia
La carte Galaxia est l’un des différents systèmes permettant de créer un objet connecté. Vous allez découvrir
comment la programmer simplement avec des blocs, en vous inspirant de ce que l’on fait avec Scratch.
Présentation de Galaxia
La carte Galaxia de Thingz va vous permettre de programmer des objets connectés. Elle est basée sur un
microcontrôleur ESP32 qui intègre un grand nombre de fonctionnalités (figures 2–1 et 2–2).
Thingz
Connexions
vers connecteurs Boutons-poussoirs
Connexion son A et B
Accéléromètre Bouton
système Écran DEL couleur
17
MON PREMIER OBJET CONNECTÉ
Interface de développement
Pour programmer la carte Galaxia, vous allez utiliser une interface de développement (Integrated Development
Environment – IDE) disponible en ligne sur le site https://play.thingz.co/galaxia (figure 2–3).
À gauche sont proposés les blocs de programmation disponibles, classés par thèmes correspondant à diffé-
rentes couleurs. Au centre, votre programme sera un ensemble de blocs que vous glisserez-déplacerez depuis
le menu de gauche. En haut à gauche, deux boutons bleus servent respectivement à ouvrir et sauvegarder
votre programme. En haut à droite sont proposés des boutons pour se connecter à la carte et téléverser le
programme.
Il est possible de programmer la carte dans différents langages de programmation : programmation par blocs,
Python, C++. Dans cet ouvrage, nous nous limiterons au langage Blockly par simplicité. C’est ce même
langage qui est utilisé par Scratch par exemple. Les boutons orange en haut à gauche (Blockly, Hybride et
Python) servent à convertir les blocs en programme Python.
Les utilisateurs du navigateur Google ) devront d’abord installer l’extension thingz via ce lien :
https://chrome.google.com/webstore/detail/thingz/ifpbemhfgibeaednjoidchimcbphpacn?hl=fr
Puis cliquez sur Ajouter à chrome pour installer cette extension. Elle vous permettra de téléverser le
programme à l’aide d’un seul bouton, une fois la carte Galaxia connectée en USB à l’ordinateur.
Important
L’outil de développement proposé sur le site https://play.thingz.co/galaxia est susceptible d’évoluer dans le temps avec
de nouvelles fonctionnalités ou des modifications et adaptations. Pour vous permettre d’avoir une compatibilité constante et
adapté à ce livre, vous pourrez aussi utiliser le lien https://play.thingz.co/eyrolles. Vous y trouvez les mêmes commandes
que dans cet ouvrage.
18
CHAPITRE 2. Programmer la carte Galaxia
Programmation
Découvrons tout d’abord comment utiliser l’interface de développement pour programmer la carte Galaxia.
2. Dessinez un diagramme de blocs internes pour identifier les différents éléments utilisés par la carte ainsi
que ses éventuels périphériques. Cela vous aidera à visualiser les flux de données.
7. Déboguez et utilisez au besoin le mode pas à pas avec visualisation des variables.
Premier programme Z
y
Pour vous familiariser avec l’environnement de développement, créons un
programme qui va détecter un mouvement vertical de votre carte Galaxia.
Pour cela, vous allez recourir au capteur d’accélération qui est intégré
x
à la carte. Ce capteur mesure trois accélérations suivant trois axes x, y
et z (figure 2–4).
Tester l’accéléromètre
Dans un premier temps, vous allez simplement afficher la valeur du
Figure 2–4 – Capteur intégré
capteur pour visualiser son fonctionnement.
de la carte Galaxia.
Voici l’algorithme et sa traduction en blocs (figure 2–5) :
DEBUT
TANT QUE vrai
Afficher accélération sur l’axe vertical z
Attendre 200 ms
FIN TANT QUE
FIN
19
MON PREMIER OBJET CONNECTÉ
DEBUT :
Effacer l’écran
Afficher « Détection d’un soulèvement »
RÉPÉTER toujours
accélération ← valeur du capteur d’accélération axe z
SI accélération>1076 OU accélération<976 ALORS
Afficher « Objet soulevé ! »
Attendre 3 s
FIN SI
FIN RÉPÉTER
FIN
On ajoutera un deuxième algorithme qui se lancera si l’événement Lorsque le bouton A est appuyé est actif.
On effacera alors l’écran et on affichera « Détection d’un soulèvement ».
Votre programme est prêt ; il vous suffit de cliquer sur le bouton Téléverser. Vous pourrez régler vos niveaux
de seuil de détection. Sans bouger, la carte ne doit pas détecter de mouvement.
20
CHAPITRE 2. Programmer la carte Galaxia
Gérer le système
La carte Galaxia présente un bouton Système bleu en
haut à droite (figure 2–9). Ce bouton est actif à tout
moment.
21
MON PREMIER OBJET CONNECTÉ
Ressources en vidéo
Des vidéos d’explications sont disponibles sur YouTube en tapant le mot-clé « thingz galaxia » ou à l’adresse
suivante (figure 2–10) :
https://www.youtube.com/channel/UCZ6GpqkvQo9kwQ6R_GyVZzQ
22
3 Lampe connectée
Le plus simple pour comprendre comment fonctionne un objet connecté est tout simplement d’en mettre
un en œuvre et de le tester en conditions réelles. Dans ce chapitre, vous allez utiliser la carte Galaxia pour
commander une lampe à distance à partir d’un smartphone ou d’une tablette.
Il est facile de transformer la carte Galaxia en lampe connectée, car elle possède une DEL (diode électro-
luminescente) de couleur qu’il sera possible de piloter à distance.
Créer un réseau
Il faut dans un premier temps créer un réseau, c’est-à-dire un ensemble de périphériques reliés avec ou
sans fil afin d’échanger des données.
La carte Galaxia possède nativement une connexion à un support de connexion sans fil Wi-Fi (figure 3–1).
Nous utiliserons un point d’accès sans fil Wi-Fi et le réseau TCP/IP (sur lequel nous reviendrons plus tard)
afin de relier notre lampe connectée à un smartphone ou une tablette (figure 3–2).
23
MON PREMIER OBJET CONNECTÉ
Le point d’accès sans fil sera par exemple la box de votre domicile.
24
CHAPITRE 3. Lampe connectée
Si tout s’est bien passé, vous devriez visualiser l’adresse IP sur l’écran
de la carte Galaxia (figure 3–8). Sinon, une erreur s’affiche. Une des
causes possibles peut être une erreur dans le SSID ou le mot de passe
que vous avez saisi.
Figure 3–8 – Visualisation de l’adresse IP
de la carte Galaxia, ici 192.168.0.100.
25
MON PREMIER OBJET CONNECTÉ
Maintenant que vous avez identifié les adresses IP de vos périphériques, vous allez tester si les communi-
cations sont possibles. À cette fin, vous allez télécharger et installer l’application Ping sur votre tablette ou
smartphone (figure 3–11).
26
CHAPITRE 3. Lampe connectée
Il ne vous reste plus qu’à vous connecter à votre lampe en cliquant sur
l’icône . Un message vous indique que l’opération a bien réussi
(figure 3–19).
Figure 3–19 – Affichage de la connexion
à la lampe.
Pour commander la lampe, il vous suffit de supprimer la commande par
défaut /n, de saisir la commande on ou off et de cliquer sur le bouton
d’envoi (figure 3–20). Vous devriez voir la lampe s’allumer et s’éteindre Figure 3–20 – Envoi d’une commande
à la lampe connectée.
suivant les codes envoyés.
27
MON PREMIER OBJET CONNECTÉ
Vous venez d’utiliser un protocole de communication, c’est-à-dire un ensemble de règles communes entre
un émetteur et un récepteur. Ici, le protocole définit qu’on allume la DEL si on envoie on et qu’on l’éteint
si on envoie off. Vous auriez pu choisir un tout autre protocole ; par exemple, éteindre lorsqu’on envoie 0
et allumer si on envoie 1.
28
4 Thermomètre connecté
Analyser le système
Une solution consiste à utiliser un capteur externe que l’on viendra
Figure 4–1 – Réfrigérateur connecté.
connecter sur un des deux connecteurs Grove de la carte (figure 4–2).
Chaque connecteur est identifié par un numéro (Grove1 et Grove2).
(figure 4–3).
29
MON PREMIER OBJET CONNECTÉ
Branchez votre capteur sur le connecteur Grove1. Vous remarquerez que le fil jaune (sortie nommée SIG,
signal analogique) qui relie le capteur à la carte arrive sur la broche P19. Il serait aussi possible de connecter
ce capteur sur une autre entrée analogique disponible : Grove2 sur l’entrée P7.
Tester le capteur
Le programme suivant (figure 4–5) va afficher la valeur de la température sur l’écran de votre carte Galaxia.
Vous verrez alors la température varier toutes les secondes sur l’écran de
la carte Galaxia (figure 4–6).
30
CHAPITRE 4. Thermomètre connecté
De la même façon que précédemment, vous pouvez programmer votre carte Galaxia pour qu’elle se connecte
au point d’accès de votre box avec ses SSID et mot de passe. N’hésitez pas à utiliser les applications PingTools
et Ping pour réaliser vos essais préliminaires afin de vérifier que votre réseau est bien opérationnel. Notez
alors les adresses IP de vos périphériques.
Programmer le capteur
Pour lire la température, il suffit d’utiliser l’application TCP Client déjà vue et d’envoyer la commande temp
au capteur connecté. Lorsque ce dernier reçoit cette commande, il renvoie alors la valeur de la température
lue au niveau du capteur Grove et l’affiche dans l’application TCP Client.
On a bien un dialogue client/serveur ; le client est le smartphone ou la tablette et le serveur est la carte
Galaxia (thermomètre connecté). Le diagramme de séquence associé est présenté à la figure 4–8.
31
MON PREMIER OBJET CONNECTÉ
Client Serveur
DEBUT
Afficher « capteur de température »
Se connecter au point d’accès avec SSID et mot de passe
TANT QUE vrai
TANT QUE pas de requête reçue
Ne rien faire
FIN TANT QUE
SI requête= «temp » ALORS
Envoyer au client « température= » valeur capt temp Grove
FIN SI
FIN TANT QUE
FIN
32
CHAPITRE 4. Thermomètre connecté
Vous aurez remarqué que, pour détecter l’arrivée d’une donnée au niveau du serveur, il faut attendre d’avoir reçu un message
(requête) qui se termine par un caractère spécial. Ici, le caractère est CR (Carriage Return qui signifie retour chariot).
En effet, lorsque vous saisissez une ligne dans un logiciel et que vous appuyez sur la touche Entrée, vous envoyez le carac-
tère spécial CR. Ce dernier indique au système la fin de votre message. Vous avez la possibilité de choisir entre plusieurs
caractères spéciaux pour délimiter votre fin de message ; nous y reviendrons.
Si vous ne définissez pas un caractère spécial de fin de message, alors le système va attendre une seconde pour vérifier qu’il ne
reçoit rien. C’est possible avec la commande Attendre qu’un message soit reçu dans message puis faire, mais cette méthode
est fortement déconseillée, car le système devra attendre une seconde. Donc la réponse possible ne sera pas instantanée.
Voilà, votre carte Galaxia est prête à fonctionner. Elle va attendre qu’un client vienne se connecter et
renverra la température.
Adresses IP
Figure 4–11 – Paramétrage
Attention ! Les adresses IP notées ici ne sont pas forcément les mêmes que les de l’adresse IP du capteur dans
vôtres ; c’est tout à fait normal. TCP Client.
En effet, c’est un serveur spécial (présent dans le point d’accès), appelé serveur
DHCP, qui va choisir pour vous l’adresse IP de la carte Galaxia. On verra plus tard
qu’il est aussi possible d’imposer l’adresse IP statique de son choix.
33
MON PREMIER OBJET CONNECTÉ
Vous aurez remarqué que, pour détecter l’arrivée d’une donnée au niveau du serveur, il faut attendre d’avoir reçu un message
(requête) qui se termine par un caractère spécial. Ici le caractère est CR.
En fait, le serveur du thermomètre connecté ne pourra accepter qu’un seul client à la fois. Si un deuxième
client souhaite se connecter et prendre le contrôle, il faudra qu’il attende que le premier client se décon-
necte. C’est chacun son tour.
La figure 4–15 montre le schéma de réseau pour deux smartphones connectés à la carte Galaxia (thermomètre).
Il n’est pas possible pour le serveur de la carte Galaxia d’accepter plusieurs clients en même temps.
En fait, un « vrai » serveur peut accepter plusieurs clients en même temps ; c’est bien là tout son intérêt. Lorsque vous vous
connectez sur un site web comme https://meteofrance.com/, vous accédez à un tel serveur. Bien évidemment, il y a déjà
plusieurs clients connectés sur ce même serveur et qui consultent la météo en même temps que vous.
La limitation actuelle dans la carte Galaxia n’est là que par simplification du système, pour éviter d’indiquer qui envoie des
données au serveur et qui est le client.
34
CHAPITRE 4. Thermomètre connecté
35
MON PREMIER OBJET CONNECTÉ
Sur la figure 4–20, vous visualisez le point d’accès Wi-Fi TP-link (192.168.0.1), ainsi que le smartphone
connecté (petit personnage à droite, 192.168.0.100) et la carte Galaxia (192.168.0.110). Il n’y a pas d’autres
périphériques. Si vous souhaitiez choisir une adresse IP pour la carte Galaxia, vous pourriez choisir entre
192.168.0.2 et 192.168.0.99 ou entre 192.168.0.101 et 192.168.0.254.
36
5 IoT sur une page web
Vous avez découvert qu’il est possible d’échanger des informations entre un objet connecté et une appli-
cation TCP Client.
Pour plus de facilité, on affichera les données d’un objet connecté sur une page web, qu’on consultera géné-
ralement dans un navigateur plutôt que sur application, où l’information est plus ou moins bien présentée.
Dans ce chapitre, vous allez donc découvrir comment créer une page web pour visualiser des données reçues
d’un objet connecté. Ainsi, vous comprendrez mieux le protocole HTTP qui permet de faire transiter des
pages web sur un réseau TCP/IP.
Serveur
requête
exécution
réponse du service
Client Serveur
réponses serveur
client
requête
Figure 5–3 – Demande de plusieurs clients
à un même serveur.
37
MON PREMIER OBJET CONNECTÉ
Dans les exemples précédents (lampe et thermomètre connectés), vous avez mis en œuvre cette structure
de client/serveur sans le savoir : la lampe ou le thermomètre était le serveur et la tablette ou le smartphone
était le client (figure 5–4).
L’exemple concret le plus simple est l’utilisation d’un navigateur internet qui interroge un site web : le client
est le navigateur et le serveur est la machine qui héberge les pages web du site consulté.
Pour échanger des pages web, le protocole utilisé est le HTTP (HyperText Transfert Protocol). Le client envoie
une requête HTTP au serveur pour lui demander de lui renvoyer une page web. Cela nécessite de connaître
l’adresse IP ou l’URL du serveur. Ce dernier analyse la requête HTTP, puis y répond en renvoyant le code
HTML de la page demandée.
Attention, la notion de serveur implique une application qui fonctionne sur une machine pour écouter les
requêtes d’éventuels clients.
38
CHAPITRE 5. IoT sur une page web
La carte Galaxia est un serveur. Elle va héberger une page web qui devra être modifiée régulièrement pour
afficher l’état de l’objet connecté. On utilise pour cela la commande Générer la page web. Dans cet exemple,
nous n’ajouterons qu’une simple ligne de texte grâce à la commande Ajouter le texte, mais on pourrait
présenter le résultat sous forme de jauge. Saisissez le programme de la figure 5–5, puis chargez-le dans la
carte Galaxia en cliquant sur le bouton Téléverser.
Pour connaître l’adresse IP du serveur, il suffit de la lire sur l’afficheur au démarrage du programme. Elle
est nécessaire pour ensuite y accéder avec un simple navigateur.
Vous devez obtenir les exemples de pages des figures 5–6 et 5–7 en fonction de la position de votre carte
Galaxia. La mise à jour de l’information est automatique.
Figure 5–6 – Affichage de la page web « objet incliné ». Figure 5–7 – Affichage de la page web « objet horizontal ».
39
MON PREMIER OBJET CONNECTÉ
Principe
La page web va afficher deux boutons : On pour allumer la lampe et Off pour l’éteindre. On affichera aussi
l’état de la lampe en retour. Le diagramme de séquence correspondant est présenté à la figure 5–8.
Figure 5–8 – Diagramme de séquence des échanges entre le serveur web Galaxia
et le navigateur client.
40
CHAPITRE 5. IoT sur une page web
Figure 5–9 – Programme pour commander une DEL depuis une page web.
Figure 5–10 – Lampe allumée et bouton pour l’éteindre. Figure 5–11 – Lampe éteinte et bouton pour l’allumer.
41
MON PREMIER OBJET CONNECTÉ
La valeur de la jauge sera rafraîchie automatiquement. Ici, on utilise le capteur de température interne de
la carte Galaxia. Vous remarquerez qu’il est possible de fixer la valeur minimale et maximale de la jauge.
Ici min=20 et max=36.
42
CHAPITRE 5. IoT sur une page web
Voyons comment commander une lampe connectée avec ce principe d’envoi d’une donnée par la requête
HTTP.
Pour allumer et éteindre la DEL de la carte Galaxia, vous utiliserez le protocole suivant :
Protocole utilisé
État de la DEL
(donnée envoyée dans la requête)
Allumée on
Éteinte off
DEBUT
Se connecter au point d’accès SSID et mot de passe
Fixer une IP
TANT QUE vrai
TANT QUE aucune requête reçue en HTTP
Ne rien faire
FIN TANT QUE
SI fin de requête http = « on » ALORS
43
MON PREMIER OBJET CONNECTÉ
Allumer lampe
SINON SI fin de requête http = « off » ALORS
Éteindre lampe
FIN SI
FIN TANT QUE
FIN
Figure 5–15 – Programme pour commander une lampe avec une requête HTTP.
Pour allumer la lampe, il vous suffira de saisir l’adresse IP de votre carte Galaxia suivie de /on (figure 5–16).
Pour l’éteindre, l’adresse IP sera suivie de /off (figure 5–17).
Figure 5–16 – Exemple d’URL avec commande « on ». Figure 5–17 – Exemple d’URL avec commande « off ».
44
6 Échanger des données avec la carte Galaxia
Découvrons comment réaliser une application sur tablette ou smartphone pour échanger des informations
avec la carte Galaxia. Nous allons tout d’abord définir quel sera l’aspect de l’application sur l’écran. Ensuite,
nous créerons le programme associé. Pour finir, il faudra tester l’application avec la carte Galaxia afin de
vérifier que les échanges se font correctement.
Application à construire
Reprenons l’exemple de la lampe connectée. L’objectif est
de réaliser une application qui pilotera la DEL de la carte
Galaxia (figure 6–1).
Dessiner l’application
Voyons tout d’abord les différents objets qui composent l’écran.
Cet ouvrage n’a pas vocation à expliquer en détail comment réaliser une application sur tablette ou smartphone. Pour plus
de détails, vous pourrez consulter le livre Créer des applis avec App Inventor paru aux éditions Eyrolles.
45
MON PREMIER OBJET CONNECTÉ
Insérez les objets constituant l’IHM (figure 6–1) en les glissant-déposant de la partie de gauche vers le cadre
intitulé Interface (figure 6–3).
46
CHAPITRE 6. Échanger des données avec la carte Galaxia
Une fois installée, vous devriez voir l’extension dans la liste en bas à gauche (figure 6–6).
Si nécessaire, vous avez à votre disposition sur https://www.editions-eyrolles.com/dl/0100822 le fichier AIA complet à ouvrir
directement dans App Inventor.
47
MON PREMIER OBJET CONNECTÉ
Pour placer les objets les uns à côté des autres, utilisez dans la palette Interface
utilisateur l’objet Disposition>Arrangement horizontal (figure 6–9).
Vous pourrez donner des noms plus précis aux différents composants en
choisissant Renommer dans leur menu contextuel (clic droit sur les objets).
Cela facilitera la lecture du programme. Figure 6–9 – Disposition des objets.
Programmer l’application
Coder le programme
Dans l’IDE App Inventor, cliquez en haut à droite sur Blocs pour programmer votre application.
Il suffit de cliquer sur l’objet choisi et de sélectionner dans la liste une méthode ou un attribut. Repérez bien
les couleurs. Vous devez obtenir le programme de la figure 6–10.
Au lancement de l’application, on fixe l’adresse IP du serveur et on impose le port 2000. Si on appuie sur
le bouton de connexion, le système établit le contact avec la carte Galaxia.
Si on appuie sur le bouton allumer_led, le système envoie la commande on avec \r pour indiquer à la
carte Galaxia où se finit la commande. Si on appuie sur le bouton eteindre_led, le système va envoyer
la commande off suivie du code \r.
48
CHAPITRE 6. Échanger des données avec la carte Galaxia
Ensuite, la carte Galaxia répond à la commande en envoyant l’état de la lampe LED allumée ou
LED éteinte.
Si on appuie sur le bouton de déconnexion, cela coupe le contact avec la carte Galaxia. Il est alors possible
de saisir une autre adresse IP d’une autre carte Galaxia pour s’y connecter
Lancez-la, puis cliquez sur Scan QR code. Flashez le QR code (figure 6–12). L’application s’installe.
Lorsque notre application est installée, elle se présente comme sur la figure 6–13.
Figure 6–13 – Application pour commander la lampe connectée sur tablette ou smartphone.
49
MON PREMIER OBJET CONNECTÉ
L’installation devrait être aussi possible sur IOS. Pour cela, téléchargez sur votre tablette ou smartphone l’application
suivante MIT App Inventor : https://apps.apple.com/fr/app/mit-app-inventor/id1422709355.
Figure 6–14 – Programme pour commander une lampe connectée avec une requête HTTP.
On utilise le même principe de fonctionnement avec le même protocole de communication. Si la carte Galaxia
reçoit une requête GET avec la commande on en fin d’URL, on allume la lampe ; si on reçoit off, on l’éteint.
Téléversez le programme dans votre carte Galaxia, qui va se connecter à votre point d’accès.
50
CHAPITRE 6. Échanger des données avec la carte Galaxia
Tester le système
Commencez par vérifier que votre point d’accès est disponible.
Alimentez la carte Galaxia. Le programme se lance et vous devriez visualiser sur l’écran l’adresse IP de la
carte. Connectez votre smartphone ou tablette au même point d’accès. Lancez l’application, puis saisissez
l’adresse IP de votre Galaxia.
Il vous suffit de faire des essais en appuyant sur les boutons Se connecter, Se déconnecter, Allumer LED et
Eteindre LED pour vérifier le bon fonctionnement de l’ensemble.
51
7 U tiliser une plate-forme IoT
et le protocole MQTT
Jusqu’à maintenant, vous avez connecté un objet à un réseau. Pour envoyer (commander) ou recevoir
(visualiser) des données, vous avez utilisé des commandes simples ou programmé des applications.
Toutefois, le principal intérêt des systèmes IoT est de pouvoir centraliser les données et les présenter sur
une plate-forme. Ainsi, différents clients se connecteront facilement sur cette dernière afin de superviser le
système IoT. La lecture des données sera alors très facile à gérer et bien présentée.
Dans ce chapitre, vous allez découvrir comment programmer la carte Galaxia pour qu’elle envoie ou reçoive
des données sur une plate-forme dédiée, en utilisant le protocole MQTT.
Vous utiliserez deux plates-formes pour héberger des données : HiveMQ et Adafruit. Vous pourrez ainsi
visualiser la dernière donnée publiée par votre capteur et suivre très facilement son évolution sous forme
d’un graphique.
Protocole MQTT
Nous avons jusqu’à maintenant mis en œuvre un principe client-serveur : il fallait interroger un serveur afin
de recevoir en retour une donnée.
Imaginons que vous souhaitez vous abonner au compte Twitter d’une personne afin de la suivre. Cependant,
vous ne voulez pas consulter sans arrêt son compte pour vérifier si une nouvelle publication est disponible.
Vous souhaiteriez plutôt recevoir un simple e-mail qui vous en informerait (figure 7–1).
53
MON PREMIER OBJET CONNECTÉ
1. Souscription
3. Lecture 2. Publication
De la même façon que pour suivre un compte Twitter (figure 7–2), dans une communication machine à
machine (M2M), il existe un protocole qui permet à des machines clientes de s’abonner à des données qui
ont été publiées. Le client utilise alors un serveur intermédiaire (broker), qui correspond à une application
en charge de la réception des informations publiées, afin de les retransmettre aux abonnés. Il met ainsi en
relation les souscripteurs et les publieurs.
Le protocole utilisé est le MQTT (Message Queuing Telemetry Transport). Il présente l’avantage d’être très
peu consommateur de bande passante sur un réseau. On peut connecter tous types de systèmes entre eux,
basés sur des technologies totalement différentes.
54
CHAPITRE 7. Utiliser une plate-forme IoT et le protocole MQTT
1. Souscription (subscribe)
Un client s’inscrit à une ressource sur un serveur intermédiaire (broker), qui va héberger et centraliser
les données des objets connectés. Il s’agit d’un abonnement. Dès qu’une nouvelle donnée est disponible
sur le serveur, elle est envoyée au client abonné.
Cette ressource est localisée dans une arborescence appelée topic. Par exemple : /capteur/temp/.
2. Publication (publish)
Un client peut publier une donnée, ou un message (payload), comme une donnée de capteur. Cette
information va alors transiter vers le serveur intermédiaire, qui la redistribuera aux clients abonnés.
Le protocole MQTT s’appuie sur TCP pour acheminer les données entre clients et intermédiaires.
Plate-forme HiveMQ
Vous allez découvrir le fonctionnement du protocole MQTT en utilisant un intermédiaire spécifique pour
échanger des données : HiveMQ.
Dans un premier temps, vous allez paramétrer votre client pour qu’il se connecte à votre serveur intermé-
diaire HiveMQ afin de préparer les données à afficher et leur format, texte, graphique. La deuxième étape
consistera à programmer la carte Galaxia qui fournira des données qui seront envoyées (publiées) en asso-
ciation avec un topic.
Cette plate-forme a été choisie en raison de sa simplicité d’usage et de présentation. Il ne sera possible
d’afficher des données que sous forme de textes ou de nombres. Le serveur ne nécessite aucun paramétrage,
ce qui est très confortable.
1. Un client souscrit à un topic (contenant les données recherchées), à l’aide d’un Subscribe.
2. Un autre client (objet connecté) publie une donnée (payload) sur une arborescence particulière, le topic.
55
MON PREMIER OBJET CONNECTÉ
1
2
3
Consultation des données
du capteur
Capteur Broker (client = abonné)
(client) (serveur)
Avec un PC, connectez-vous sur le site d’un client MQTT associé au serveur HiveMQ :
http://www.hivemq.com/demos/websocket-client/.
Saisissez le nom essai dans la partie Username, puis cliquez sur le bouton Connect.
56
CHAPITRE 7. Utiliser une plate-forme IoT et le protocole MQTT
Saisissez le nom du topic (temp1) sur lequel vous souhaitez vous inscrire et cliquez sur Subscribe.
Vous êtes maintenant abonné aux données qu’enverra votre capteur de température (carte Galaxia).
Dorénavant, dès qu’une nouvelle donnée associée au topic temp1 arrivera au serveur, elle s’affichera auto-
matiquement dans votre espace client abonné.
Rien ne se passe actuellement, car la carte Galaxia n’a pas encore été programmée pour publier une donnée
de température.
Attention : lorsque vous connectez la carte Galaxia au serveur HiveMQ, ne saisissez pas le mot de passe
noté sur la figure 7–9, mais celui correspondant au ClientId qui est créé automatiquement sur le serveur.
Ce CLientId change en fonction de votre connexion !
57
MON PREMIER OBJET CONNECTÉ
Dans un premier temps, on efface l’écran et la carte Galaxia se connecte au point d’accès, puis au serveur.
Ensuite, on affiche la connexion établie. Si on appuie sur le bouton A alors que la carte est connectée, on
envoie la température mesurée sur la carte associée au topic temp1.
Figure 7–11 – Affichage des valeurs transmises par HiveMQ au client abonné.
58
CHAPITRE 7. Utiliser une plate-forme IoT et le protocole MQTT
Lancez l’application, puis cliquez sur l’icône + pour ajouter une zone d’information.
Figure 7–13 – Ajout d’une zone de visualisation d’une donnée sur MQTT Dash.
Tapez le nom du serveur, puis son URL (affichée au démarrage du client) et cliquez sur l’icône de sauve-
garde en haut à droite.
59
MON PREMIER OBJET CONNECTÉ
Vous allez maintenant choisir le type d’information que vous voulez voir sur votre tableau de bord. Plusieurs
formats sont proposés. Ici, vous allez afficher un texte : cliquez sur Text.
Figure 7–16 – Choix d’un type d’information à afficher sur le tableau de bord.
Saisissez le nom du capteur à visualiser ainsi que le topic auquel est associée la donnée qu’il envoie. N’oubliez
pas de valider vos informations en cliquant sur l’icône en haut à droite (figure 7–17). Vous voyez alors l’in-
formation au format texte en attente de la publication d’une nouvelle valeur de température (figure 7–18).
60
CHAPITRE 7. Utiliser une plate-forme IoT et le protocole MQTT
Vous pouvez afficher la température sous forme de jauge (Range/progress) selon les mêmes principes.
1. Souscription
au topic
2. Publication
du topic
3. Réception
du topic
Serveur MQTT
Publication
Client MQTT
depuis un PC
Figure 7–20 – Schéma d’échange des données avec le protocole MQTT entre un PC et la carte Galaxia.
Saisissez le programme du client MQTT pour que la carte Galaxia se connecte sur le serveur HiveMQ
(figure 7–21).
61
MON PREMIER OBJET CONNECTÉ
62
CHAPITRE 7. Utiliser une plate-forme IoT et le protocole MQTT
Plate-forme Adafruit
Vous avez mis en œuvre une première plate-forme IoT avec le serveur HiveMQ. Vous avez pu constater
que l’on ne pouvait afficher que des valeurs et une jauge, mais que les possibilités étaient limitées.
On souhaite maintenant afficher des informations sous forme d’une évolution graphique. Vous allez décou-
vrir une nouvelle plate-forme avec le serveur Adafruit afin d’afficher l’évolution du capteur de température.
Créez un nouveau tableau de bord avec New Dashboard (figure 7–26), puis saisissez son nom et ses carac-
téristiques (figure 7–27).
63
MON PREMIER OBJET CONNECTÉ
Cliquez sur le tableau de bord créé (figure 7–28) et créez un nouveau bloc graphique. Pour cela, cliquez sur
l’icône , puis sur Create New Block (figure 7–29).
Figure 7–29 – Création d’un nouveau bloc pour l’ajout d’une zone de graphique.
Créez une nouvelle zone de graphique en cliquant en bas à droite sur Live chart (figure 7–30), puis créez un
nouveau topic (Feed) et validez en cliquant sur Create (figure 7–31).
64
CHAPITRE 7. Utiliser une plate-forme IoT et le protocole MQTT
Sélectionnez votre nouveau topic et cliquez sur Next step (figure 7–32).
Paramétrez votre graphique (figure 7–33), puis finalisez en cliquant sur Create block (figure 7–34).
65
MON PREMIER OBJET CONNECTÉ
Vous allez redimensionner la taille de la fenêtre de votre graphique, qui est trop petite par défaut. Pour
cela, dans les outils, cliquez sur Edit layout (figure 7–35). Cliquez/tirez sur les bords pour redimensionner
la taille de la fenêtre (figure 7–36).
La zone graphique pour montrer l’évolution de la température est prête sur votre client MQTT Adafruit.
Notez la clé associée à votre tableau de bord en cliquant sur My Key (figure 7–37) et mémorisez aussi le
nom d’utilisateur (figure 7–38).
66
CHAPITRE 7. Utiliser une plate-forme IoT et le protocole MQTT
Nom du topic
Vous remarquerez que le nom du topic est de la forme username/feeds/nom_feed. Username est le nom
d’utilisateur saisi lors de la création de votre compte sur Adafruit et nom_feed est le nom du topic (feed).
67
MON PREMIER OBJET CONNECTÉ
Si vous cliquez sur le titre du graphique Evolution de la température °C, vous obtenez tous les détails voulus,
ainsi que des réglages complémentaires (figure 7–41).
Principe de fonctionnement
Vous avez vu que l’on pouvait utiliser un client MQTT à l’aide d’un navigateur internet avec accès au cloud
du serveur ou avec une application Android. Il est aussi possible de recevoir des données de capteur sur
une carte Galaxia automatiquement dès qu’elles ont été publiées par une autre carte Galaxia ou tout autre
système capable de publier sur le topic voulu (figures 7–42 et 7–43).
68
CHAPITRE 7. Utiliser une plate-forme IoT et le protocole MQTT
1. Souscription
au topic
2. Publication
du topic
3. Réception
du topic
Capteur de
Serveur MQTT Client MQTT
température
Adafruit Galaxia n° 2
connecté Galaxia
n° 1
Figure 7–43 – Schéma de connexion avec un broker entre deux cartes Galaxia.
Figure 7–44 – Programme du capteur de température sur carte Galaxia pour publication.
69
MON PREMIER OBJET CONNECTÉ
Figure 7–45 – Programme du client MQTT sur carte Galaxia pour affichage de la température.
70
CHAPITRE 7. Utiliser une plate-forme IoT et le protocole MQTT
Vous constatez aussi, sur le capteur de température, la publication de la nouvelle donnée. Sur l’autre carte
Galaxia, qui joue le rôle de client MQTT, vous voyez s’afficher la même donnée sous forme de texte.
Figure 7–47 – Capteur de température connecté. Figure 7–48 – Affichage des données
sur la carte Galaxia cliente.
Pour créer l’application sur smartphone ou tablette, allez sur le site : http://ai2.appinventor.mit.edu.
Créez l’interface de la figure 7–50 en cliquant-déplaçant les objets voulus.
71
MON PREMIER OBJET CONNECTÉ
Un bouton sert à se connecter au serveur Adafruit ; on indique en dessous l’état actuel de la connexion. On
affiche la dernière valeur de la température, le nombre de données précédemment reçues et leurs valeurs
dans une liste.
Pour dialoguer, on utilise l’extension MQTT disponible sur le site suivant : http://ullisroboterseite.de/android-
AI2-PahoMQTT.html. Cliquez sur Extension, en bas à gauche, puis sur Import extension et choisissez l’extension
de.ullisroboterseite.ursai2pahomqtt.aix.
Il faut bien paramétrer l’objet MQTT pour spécifier le site du serveur (figure 7–51), ainsi que l’identifiant
(ici eyrolles) et le mot de passe qui est le my key sur Adafruit (figure 52).
Figure 7–51 – Nom du site du serveur. Figure 7–52 – Paramétrage de l’objet MQTT.
72
CHAPITRE 7. Utiliser une plate-forme IoT et le protocole MQTT
Cliquez ensuite sur la partie « blocs » qui vous permettra de programmer le système selon le code de la
figure 7–53. Les données de température sont sauvegardées dans une liste qui est ensuite affichée.
Enfin, cliquez sur Construire, puis sur Android App (figure 7–54).
Téléchargez sur votre tablette ou smartphone l’application MIT AI2 companion, puis flashez le QR code
créé. L’application s’installe ; il ne reste plus qu’à faire vos essais.
Vous avez découvert qu’un tableau de bord était une présentation d’objets comme des capteurs et permettait
de recevoir les données publiées. Il est aussi possible de commander des actionneurs.
73
MON PREMIER OBJET CONNECTÉ
Cette fois-ci, vous allez publier des données associées à un topic bouton. Votre carte Galaxia (lampe
connectée qui jouera le rôle du client) qui aura souscrit au même topic, réagira aux données reçues du
serveur (figure 7–55).
Figure 7–55 – Diagramme de séquence pour piloter une DEL depuis un tableau de bord Adafruit.
Vous allez utiliser le serveur io.adafruit.com déjà vu. Connectez-vous à votre compte Adafruit. Créez un
nouveau tableau de bord pour afficher uniquement un bouton ON/OFF. Cliquez sur le menu Dashboard, puis
sur View all et enfin sur le bouton + New Dashboard (figure 7–56). Créez le tableau de bord lampe LED et
cliquez sur Create (figure 7–57).
Figure 7–56 – Création d’un nouveau Dashboard. Figure 7–57 – Description du nouveau tableau de bord Adafruit.
74
CHAPITRE 7. Utiliser une plate-forme IoT et le protocole MQTT
Créez ensuite le topic (feed) bouton qui servira à publier on ou off (figure 7–59) et sélectionnez-le
(figure 7–60).
Entrez les paramètres choisis pour définir le protocole : valeur on pour allumer, valeur off pour éteindre
(figure 7–61). Vous obtenez l’écran de la figure 7–62.
75
MON PREMIER OBJET CONNECTÉ
Le lien est disponible (figure 7–65). Il suffit de le partager et de l’utiliser directement dans un navigateur.
76
CHAPITRE 7. Utiliser une plate-forme IoT et le protocole MQTT
donnée, on ou off, arrive en provenance du serveur MQTT Adafruit, on allume ou éteint la lampe. La
donnée associée au topic bouton dépend de la sélection de l’interrupteur sur le tableau de bord.
Figure 7–66 – Programme sur smartphone pour commander une lampe avec le protocole MQTT.
Changez la position de l’interrupteur sur le tableau de bord et vérifiez que la DEL s’allume ou s’éteint.
Il est ainsi possible de piloter sa lampe de n’importe quel périphérique final (smartphone, tablette, PC)
connecté à Internet qui possède un simple navigateur. Il vous suffit de saisir le lien précédent pour accéder
à votre tableau de bord (page web) hébergé sur le serveur Adafruit. Cela vous évite de développer une
véritable page web, mais reste limité par rapport à une application pour tablette ou smartphone.
77
MON PREMIER OBJET CONNECTÉ
Commander une lampe via une application pour smartphone avec le protocole MQTT
De la même façon que vous avez créé une application pour visualiser des données d’un thermomètre
connecté, vous allez créer une application pour envoyer des commandes à une lampe connectée (figure 7–67).
Saisissez le programme de la figure 7–68. On utilise deux images d’une lampe en modes allumé et éteint,
que l’on télécharge dans la partie Média>Charger fichier.
78
CHAPITRE 7. Utiliser une plate-forme IoT et le protocole MQTT
Figure 7–68 – Programme sur smartphone pour commander une lampe avec le protocole MQTT.
Cette fois-ci, vous utilisez la commande Publish pour envoyer on ou off au serveur Adafruit. Le programme
est le même sur la carte Galaxia pour piloter la DEL (figure 7–69).
Testez votre système. Vous remarquerez qu’il est aussi possible de visualiser en même temps l’état du
bouton dans le tableau de bord Adafruit.
79
8 Commander un robot
Vous allez maintenant mettre en œuvre ce que vous avez appris dans les chapitres précédents et découvrir
comment piloter un robot : le Maqueen de DFRobot. Il sera possible de connecter la carte Galaxia en lieu
et place de la carte micro:bit sur le même connecteur.
Vous verrez comment commander un robot à distance. Pour cela, vous utiliserez une application Dashboard
à personnaliser ou vous créerez une application pour tablette ou smartphone ou encore développerez une
télécommande Galaxia avec les touches tactiles.
Vous utiliserez dans ces différents cas le protocole MQTT très pratique. Vous pourrez aussi récupérer des
informations en provenance des capteurs du robot.
81
MON PREMIER OBJET CONNECTÉ
Principe de pilotage
Ce robot est équipé de deux moteurs indépendants pour se déplacer. En pilotant indépendamment ces deux
moteurs, il sera possible de le diriger dans toutes les directions.
Vous allez créer un tableau de bord qui vous servira à piloter votre robot et à afficher en option la valeur
d’un capteur de suivi de ligne situé sous le robot (figure 8–2).
DFRobot
Figure 8–2 – Capteurs de suivi de ligne (1) et LED (5) du robot Maqueen.
Pour le diriger, on pourra le faire avancer ou reculer en pilotant les deux moteurs droit et gauche en même
temps dans le même sens de rotation. Pour le mettre en rotation à droite, il suffira de faire tourner le moteur
droit vers l’avant et le moteur gauche à reculons. On enverra les commandes par MQTT, selon le protocole
de pilotage suivant :
82
CHAPITRE 8. Commander un robot
Ces commandes de direction seront associées au topic eyrolles2022/direction. Ce dernier a été choisi
arbitrairement ; vous pouvez en choisir un autre. Le système utilisera un serveur intermédiaire (broker) sur
lequel seront publiées les données de direction. Le robot s’abonnera (Subscribe).
Créer l’application
Vous avez déjà vu une application du même type. Vous allez ici découvrir une autre application, similaire
mais plus complète et qui permet une personnalisation de votre écran très intéressante : MQTT Dashboard.
Téléchargez-la sur votre tablette ou smartphone.
83
MON PREMIER OBJET CONNECTÉ
Vous pouvez laisser le client ID tel qu’il est sur votre application, c’est-à-dire différent de celui sur la
figure 8–8. N’oubliez pas de valider en haut à droite !
Votre connexion doit être active ; vérifiez qu’il y a une icône en forme de nuage validé (figure 8–9).
84
CHAPITRE 8. Commander un robot
Entrez dans votre tableau de bord (figure 8–14), puis sélectionnez l’objet à insérer, ici un bouton-poussoir
(figure 8–15). Saisissez les informations demandées (figure 8–16).
85
MON PREMIER OBJET CONNECTÉ
86
CHAPITRE 8. Commander un robot
87
MON PREMIER OBJET CONNECTÉ
Cette application vous permet aussi de modifier la taille et la position de l’objet dans votre écran. Pour cela,
il vous suffit de cliquer sur le bouton (figure 8–21) puis de le cliquer/déplacer ou de cliquer/déplacer le coin
en bas à droite pour le redimensionner (figure 8–22).
Procédez de la même façon pour les autres boutons, en prenant garde à préciser la bonne donnée à envoyer
(payload) selon le tableau définissant le protocole de commande du robot (figure 8–23).
88
CHAPITRE 8. Commander un robot
Il n’y a rien de nouveau par rapport aux programmes vus précédemment pour gérer le protocole MQTT
(figure 8–24). La gestion de l’événement « réception d’un message » se traduit par le traitement des dépla-
cements. Les affichages du topic et du message ne sont là que pour vérifier que tout se passe bien.
Téléversez le programme dans la carte Galaxia et placez cette dernière dans son emplacement, puis allumez
le robot. Vérifiez que la carte se connecte bien à votre point d’accès et que, sur l’écran, s’affiche le message
Connecté au Broker Mosquitto.
89
MON PREMIER OBJET CONNECTÉ
Tester le pilotage
Il ne vous reste plus qu’à appuyer sur les boutons avancer, reculer ou stop pour piloter votre robot.
En procédant comme expliqué dans ce chapitre, il vous sera possible de piloter un même robot à partir de
plusieurs tablettes ou smartphones ou, à l’inverse, de piloter plusieurs robots qui exécuteront les mêmes
déplacements en même temps.
Vous pouvez bien sûr compléter à votre guise ce programme pour faire tourner le robot et ajouter l’affichage
des données de capteurs.
Vous pourrez créer une télécommande avec une deuxième carte Galaxia, en utilisant les boutons tactiles
pour envoyer des ordres à votre robot (figure 8–26). Vous pourrez aussi utiliser le protocole HTTP pour
envoyer directement vos commandes, par exemple http://192.168.1.10/avancer ou http://192.168.1.10/reculer,
si l’adresse IP 192.168.1.10 est celle de votre robot.
Figure 8–26 – Schéma du réseau pour commander le robot à partir de la carte Galaxia.
90
CHAPITRE 8. Commander un robot
Vous pourrez développer une application Android en insérant différents boutons pour piloter votre robot
de la même façon en utilisant l’extension MQTT déjà vue (figures 8–27 à 8–29). C’est à vous de créer votre
protocole.
Figure 8–27 – Interface pour piloter le robot Maqueen sur APP Inventor.
91
MON PREMIER OBJET CONNECTÉ
Figure 8–29 – Programme pour piloter le robot Maqueen sur APP Inventor.
Vous pourrez aussi vous initier à la programmation Python en analysant progressivement vos programmes
réalisés en code Blocs et en étudiant leur traduction en code Python (figure 8–30).
92
CHAPITRE 8. Commander un robot
Si vous voulez découvrir le langage Python, vous pourrez consulter le livre Python pour la carte micro:bit
(éditions Eyrolles), qui s’adapte très bien à la carte Galaxia.
93