Retour aux projets

IoT mini-architecture

Une chaîne IoT complète d’un capteur micro:bit jusqu’à une application Android.

Contexte
CPE Lyon, développement embarqué et IoT
Période
2026
Rôle
Projet d’équipe
Équipe
Équipe de 4
  • C++
  • micro:bit
  • Python
  • SQLite
  • Android
  • Grafana
  • Docker

Le projet

Un micro:bit mesure la température, l’humidité, la pression et la luminosité. Il les envoie par radio à un second micro:bit qui sert de passerelle. La passerelle les transmet à un serveur Python par liaison série. Le serveur les stocke dans SQLite et répond à une application Android en UDP. Depuis l’application on peut aussi changer l’ordre d’affichage des valeurs sur l’écran du capteur.

  1. micro:bit capteurBME280, capteur de lumière, OLED
  2. micro:bit passerelle
  3. Serveur PythonSQLite, Grafana
  4. Application Android
Le trajet des données.
Tableau de bord Grafana avec la température et l’humidité mesurées par le capteur
De vraies mesures enregistrées par notre capteur pendant une séance de test et affichées dans Grafana.
Application Android avec les dernières valeurs du capteur et l’ordre d’affichage TLHP
L’application Android demande les dernières valeurs et envoie l’ordre d’affichage TLHP. Pour cette capture, un petit script jouait le rôle du serveur et renvoyait la dernière mesure enregistrée en mai.

Sécuriser la liaison radio

Au début les valeurs étaient envoyées en clair. N’importe qui à portée pouvait les lire. Nous avons ensuite utilisé un XOR avec une clé fixe mais deux trames identiques donnaient les mêmes octets. Nous avons donc ajouté un nonce qui change à chaque trame. Un CRC16 détecte les trames abîmées et la passerelle ignore une trame si son nonce a déjà servi.

AES aurait été mieux. Le micro:bit a une puce AES mais notre SDK ne permettait pas de l’utiliser. Nous avons écrit cette limite dans notre rapport.