SAFEGOALS Team Project

Distributed IoT system for spectator engagement via interactive seat-mounted nodes.

As the team leader and primary systems architect for a 6-person engineering group, I led the development of a distributed IoT network aimed at transforming live spectator engagement. The system relied on interactive, seat-mounted hardware nodes that seamlessly synchronized real-time voting, telemetry, and safety data with a central Jumbotron hub. My role involved taking ownership of the core architecture, acting as the primary technical integrator, and single-handedly bringing together disparate modules into the unified, final codebase.

Hardware Prototyping & UART Integration

The foundation of the physical nodes required reliable communication between a Raspberry Pi Zero and an Arduino microcontroller. I developed a hardwired serial link (UART) bridging the two devices, which involved designing and soldering a custom transistor-level shifter via pull-down resistors to safely manage the voltage logic difference. I established the critical middleware (node.py) enabling the microcontrollers to reliably translate incoming JSON WebSocket payloads into serial text instructions.

Initial Hardware Wiring Level Shifter Transistor Circuit

CAD Design & Custom Enclosures

To house the electronics securely within a stadium seat's constraints, I took charge of the 3D design and printing. Using Fusion 360, I modelled rugged custom enclosures featuring precision mount points for both microcontrollers, the 18650 battery cells, and the strain gauges used for seat occupancy detection. This modular casework was iterated upon to ensure all components fit seamlessly and protected against physical tampering.

Fusion 360 CAD Modeling Final 3D Printed Assembly

Backend Architecture & Distributed Networking

I engineered a high-performance central hub utilizing FastAPI and Uvicorn operating in isolated Python virtual environments to manage all systemic traffic. I implemented a robust dual-protocol system: REST APIs answered one-off single-event requests (like time synchronization), while WebSockets streamed continuous, low-latency telemetry from the seats. To manage the live event, I built a CLI Game Manager to deploy Vevox-style polls, trigger panic alerts, and persist all game states into an SQLite database.

Tmux Server Environment Game Manager Command Line API

Feature Expansion: Autonomous Food Ordering

Proactively pushing the project scope beyond the original specifications, I architected a standalone food ordering protocol. This feature equipped the hardware nodes with the ability to render a localized menu GUI and process decisions organically without waiting for server-initiated polling, later tying back efficiently into the main server transactions.

Autonomous Ordering UI

Testing, Final Assembly & Exhibition

To guarantee stability under load, I executed rigorous validation routines, including scripting fake data injections into the network, simulating end-to-end data transfers, and stress-testing the architecture with up to 100 concurrent connections to confirm server fault tolerance. Extensive edge-case handling hardened the codebase against timeouts, misformed packets, and user input spam. Following my final physical assembly, our team delivered a comprehensive technical presentation to 85 peers and a BAE Systems review board—ultimately distinguishing ourselves as one of only four teams to successfully deliver a fully functional, working prototype.

Jumbotron in Display Presenting to BAE Systems Review Board
← Back to Timeline