Evidence of Work
The problem we were trying to solve was how football coaches communicate plays to their players. Right now teams use hand signals and verbal calls, which opponents can read and players have to look away from the field to see. Our goal was to build a system that sends plays directly to a display inside the player's helmet. We started by surveying coaches and players to confirm the problem was real, then researched existing technology, met with three mentors, and built a cardboard mockup before moving into the actual build. From there we wired an ESP32 microcontroller to a transparent OLED display powered by a LiPo battery, wrote firmware in Arduino C++, built a coach web app in HTML/CSS/JS, and connected everything wirelessly using WebSockets over a Wi-Fi hotspot. We ran into several problems along the way including a blank display, a Chromebook driver issue, and a battery boot failure, and had to troubleshoot and fix each one before moving forward.
Our final product is PlayVision, a wireless heads-up display system for football helmets. The coach opens a web app on their iPhone, selects a play from a 55-play built-in playbook or builds a custom one, and the play shows up on a transparent OLED display inside the helmet in under one second. The display auto-clears after 15 seconds, requires no internet or app download, and runs on a self-contained battery. We presented it live at our STEM Capstone Exhibit Night on April 16 and demonstrated a real wireless transmission from the coach app to the helmet in front of an audience.
Content
Wireless Communication Wireless communication is sending data between devices without wires using radio waves. We used the ESP32's built-in Wi-Fi in Access Point mode, meaning it creates its own hotspot so no outside internet is needed. Data travels using WebSockets, which keep a live open connection between the coach app and the helmet so plays arrive in under one second. This mattered because any noticeable delay would make the system useless in a real game.
Microcontrollers A microcontroller is a small computer on a chip that runs a specific program and controls hardware. The ESP32 we used has built-in Wi-Fi, a dual-core processor, and GPIO pins to connect components. We programmed it in Arduino C++ and it runs the code on its own once uploaded. On the coach side it hosts the web server and on the helmet side it receives the play and sends it to the OLED display using I2C communication.
Voltage and Power Voltage is electrical potential measured in volts, and it determines how much energy is pushing current through a circuit. Our ESP32 and OLED need a stable 3.3V to work. We used a LiPo battery outputting around 3.7V and a voltage regulator to bring it down to 3.3V. When we powered the system from the battery for the first time the OLED went blank. We found out the battery was on the wrong pin and the EN pin was not wired correctly, fixed both, and the system booted properly.
Circuits and Wiring A circuit is a closed loop that lets current flow from a power source through components and back. We built a circuit connecting the battery, voltage regulator, toggle switch, ESP32, and OLED. The OLED connects to the ESP32 using I2C, which only needs two wires for communication. Keeping the wiring clean and compact was important since everything needed to fit inside a helmet.
Engineering Design Process The engineering design process is a step-by-step method for solving a problem: define, research, brainstorm, prototype, test, and iterate. We followed this throughout the whole project. We defined the problem, surveyed users, built a paper mockup, then built and tested the real product, fixing issues as we went. Decisions like using a transparent OLED so players can still see the field came directly from user feedback in our survey.
Reflection
Two things I did well on this project were problem solving and taking initiative. Every time something broke I worked through it step by step instead of giving up. A good example is the battery boot issue where the OLED went completely blank when powered by the LiPo. I researched the ESP32's boot behavior, figured out the EN pin needed to connect to 3V3, moved the battery to the correct pin, and got it working. I also took initiative in reaching out to our mentors, preparing questions before each meeting, and making sure we actually applied their feedback to our build instead of just listening and moving on.
Two things I need to improve are time management and documentation. I kept underestimating how long hardware tasks would take, which pushed back our helmet integration further than it should have been. I need to build more buffer into my timelines and set smaller checkpoints so I catch delays earlier. I also never kept a consistent log of changes I made to the code and wiring, which made it hard to backtrack when something broke. Going forward I am going to keep a simple dated work log so there is always a clear record of what changed and when.