Back to projects

IoT mini-architecture

A full IoT chain from a micro:bit sensor to an Android app.

Context
CPE Lyon, embedded systems and IoT
Period
2026
Role
Team project
Team
Team of 4
  • C++
  • micro:bit
  • Python
  • SQLite
  • Android
  • Grafana
  • Docker

The project

A micro:bit measures temperature, humidity, pressure and light. It sends them by radio to a second micro:bit used as a gateway. The gateway sends them to a Python server over a serial link. The server stores them in SQLite and answers an Android app over UDP. From the app you can also change the order of the values shown on the sensor screen.

  1. Sensor micro:bitBME280, light sensor, OLED
  2. Gateway micro:bit
  3. Python serverSQLite, Grafana
  4. Android app
The path of the data.
Grafana dashboard with the temperature and humidity measured by the sensor
Real measures recorded by our sensor during a test session and shown in Grafana.
Android app showing the latest sensor values and the display order TLHP
The Android app asks for the latest values and sends the display order TLHP. For this screenshot a small script played the server and sent back the last measure recorded in May.

Securing the radio link

At first the values were sent in clear text. Anyone nearby could read them. We then used XOR with a fixed key but identical frames gave identical bytes. So we added a nonce that changes for every frame. A CRC16 detects broken frames and the gateway ignores a frame if its nonce was already used.

AES would have been better. The micro:bit has an AES chip but our SDK did not give access to it. We wrote this limit in our report.