TP03 : WiFi et MQTT
Dans ce TP, nous modifions le TP précédent pour permettre l’envoi de la température sur un dashboard dans le cloud.
Objectifs du TP
À la fin de ce TP, les étudiants :
- auront conçu et implémenté une application multitâches
- auront utilisé le module Wifi BLE avec les commandes “AT”
- auront configuré un feed sur Adafruit IO
- auront conçu un dashboard pour représenter des courbes de température
- auront implémenté des routines de service d’interruption pour le traitement des données transmises par le port série (UART)
- auront rédigé un journal de travail et déposé le PDF dans le dépôt git.
Les livrables sont :
- un projet git (tp03
) dans votre groupe sur gitlab.forge.hefr.ch avec le code du TP et le code du programme de test; - une configuration CI/CD de gitlab pour valider votre TP;
- un journal de travail déposé sur gitlab.
Temps accordé : 4 périodes de 45 minutes en classe + travail personnel à la maison
Délai
Le TPs doit être rendu au plus tard 6 jours après la séance en classe à 23:59
Configuration
Configurez votre cible avec le module Wifi BLE sur le click 1 et le capteur Thermo 3 sur le click 2.
L’enseignant vous a assigné un projet sur gitlab.forge.hefr.ch (embsys/2024-2025/sup/tp03/tp03<X>
).
Le projet à été créé à partir du projet starter-tp03.
Le module Wifi BLE
Le module Wifi BLE est un ESP32 programmé avec un firmware qui implémente les fonctionnalités de Wifi et de Bluetooth Low Energy avec des commandes AT. Ces commandes AT sont transmises sur un port série (UART).
Étudiez la structure des commandes ainsi que la liste des commandes :
A faire
Déterminez la séquence de commandes à envoyer pour se connecter à un réseau WiFi. Les paramètres du point d’accès de la salle C00.16 sont les suivants :
- SSID :
Lab-C0016
- Password :
Micro-Lab
- BSSID (MAC Address) :
fc:34:97:1e:a3:70
Note
Si vous devez continuer ce TP à la maison, n’oubliez pas de mettre à jour les paramètres de connexion pour votre Wifi personnel. Le module Wifi BLE devrait aussi être capable de se connecter à un réseau WPA2 Entreprise (comme Eduroam), mais cette fonctionnalité n’a pas été testée.
Bonus 1 : WPA2 Enterprise
Un bonus sera accordé au premier groupe qui publiera sur MS-Teams la configuration permettant de se connecter au réseau Eduroam avec le module Wifi BLE.
Le broker MQTT et le dashboard
Pour ce TP, nous utilisons le serveur MQTT et le dashboard de Adafruit IO
Si ce n’est pas déjà fait, créez un compte sur ce système. Votre username et votre clé (mot de passe pour MQTT) sont visibles en cliquant sur la clé dans un rond jaune en haut à droite de l’écran.
Dans l’onglet Feeds, créez un nouveau feed Temperature
. Vous trouverez les détails concernant
le feed en l’ouvrant et en cliquant sur Feed Info. Vous y trouverez entre autres le topic à
utiliser pour MQTT.
Créez ensuite un dashboard avec une gauge et un graphe qui représente la température :
Les paramètres MQTT sont décrits sur la page décrivant l’API
A faire
Déterminez la séquence de commandes AT à envoyer pour se connecter au MQTT de Adafruit et pour envoyer une nouvelle température
Le mini projet
Le but du mini projet est de modifier le TP précédent en lui supprimant l’affichage sur le 7-segments et en ajoutant l’envoi de température à Adafruit IO. Le LCD sera toujours rafraichi chaque seconde. La Data Policy de Adafruit IO nous autorise à envoyer au maximum 60 données par minutes. Afin de garder un peu de marge, la température ne sera envoyée que toutes les 5 secondes au broker.
Une bonne partie du code est déjà fourni par le starter code. Pour réaliser ce projet, les deux seuls fichiers que vous devez compléter sont :
lib/wifi_ble/wifi_ble.cpp
src/main.cpp
Dans le driver du WiFi (lib/wifi_ble/wifi_ble.cpp
) nous utilisons les interruptions pour envoyer les commandes
au module Wifi BLE et pour lire les réponses de ce dernier. De cette manière, nous ne devons pas faire de “busy waiting”
pour attendre qu’une commande soit envoyée et nous ne risquons pas de manquer les réponses envoyées par le module.
Nous utilisons efficacement les interruptions et les mécanismes de synchronisation offerts par FreeRTOS.
Recherchez les occurrences de TODO(student)
pour savoir ce qu’il faut compléter. Les
commentaires à ces endroits devraient vous permettre de terminer le projet. N’hésitez
pas à poser des questions en classe si vous avez besoin d’aide.
Bonus 2 : Sécurité
Votre projet a besoin de plusieurs données sensibles telles que le mot de passe du wifi ou le mot de passe pour le broker MQTT. Ce n’est pas une bonne idée de mettre ces données sensibles dans le code ni dans tout autre fichier géré par git. Décrivez et implémentez une technique qui permet de compiler le code sans divulguer d’information sensible dans git.
Voici quelques liens utils:
Bonus 3 : Testing
Trouvez un moyen de tester l’envoi de données vers Adafruit IO. Utilisez l’API HTTP pour lire et valider les données envoyées vers le feed.
À ne pas oublier
Gardez toujours en têtes les bonnes pratiques ainsi que les dix commandements du bon programmeur.
- Choisissez de bons noms pour les classes, les méthodes et les variables.
- Implémentez les bibliothèques avec un haut niveau d’abstraction pour pouvoir réutiliser les méthodes dans d’autres projets.
- Faites des “git commit” régulièrement avec de bons commentaires.
- Configurez le CI/CD de gitlab et testez automatiquement le plus de choses possibles.
- Implémentez des tests unitaires.
- Utilisez des assertions dans votre code pour le documenter et le rendre plus robuste.
Journal de travail
- Rédigez un rapport (journal de travail) avec les indications suivantes :
- Une page de titre avec au minimum :
- le nom et le logo officiel de l’école
- le nom du cours : Systèmes Embarqués 1
- le titre de votre document : “TP03 : WiFi et MQTT”
- le numéro de votre groupe
- les noms des auteurs (vous) avec la classe dans laquelle vous êtes
- la date à laquelle vous avez terminé le rapport
- éventuellement la version du rapport
- Une introduction pour poser le contexte
- Un résumé des notions que vous avez apprises pendant ce TP en précisant si c’est
- non acquis
- acquis, mais encore à exercer
- parfaitement acquis
- Un résumé des points qui vous semblent importants et que vous devez retenir
- Les réponses aux questions.
- Le code source bien formaté et avec du “syntax highlighting” de votre code source.
- Une conclusion par laquelle vous donnez vos impressions sur le TP, ce que vous avez aimé, ce que vous avez moins aimé, et éventuellement des suggestions pour des changements. Indiquez également le nombre d’heures que vous avez passées, par personne, en dehors des heures de TP en classe.
Important
Déposez votre rapport dans un dossier /docs
de votre dépôt git
(tp03) avec le nom report03.pdf
(le chemin complet vers votre rapport est donc
/docs/report03.pdf
)