In the Wizard Game, the interaction between the U96 development board (acting as the central game server) and the two player wands (acting as IoT clients) is managed using the MQTT (Message Queuing Telemetry Transport) protocol. MQTT provides a lightweight, publish–subscribe messaging structure that ensures reliable, low-latency communication between devices — ideal for real-time gameplay.
-
AI
- Software Contains the AI pipeline for the prediction of spells drawn using the wand. Prediction is made using a window size of 60 mpu data sampled by the ESP32-Firebeetle
- Hardware Contains cpp code of the model created, that will be converted to verilog code and bitstream to be generated and uploaded to the Ultra96, for AI model to be run on the onboard FPGA
- wand_dataset Contains mpu dataset collected to be used for training/testing.
-
certs
- Contain the certs that are used to allow for secure transmission of data between all devices
-
Comms
- Server_final.py is the code to be run on U96, the following are the threads ran in parallel on the U96:
- Game thread
- Comms thread
- AI prediction thread
- Server_final.py is the code to be run on U96, the following are the threads ran in parallel on the U96:
-
Hardware
- ESP32_MQTT.ino is the code to be uploaded to the ESP32-Firebeetles on the wands, allowing for the wands to send battery info and stream mpu data to the U96, and receive game state data packets from the U96.
-
Web
- Contains visualiser code

