The aim of this project was to create a helmet that would alert skiers when they are at risk of colliding with a person or object. The alerts would indicate both the distance of the threat and the speed at which it is approaching.
The three main components of this project were an ESP32-S3 microcontroller, a TF Luna LiDAR sensor and a passive haptic buzzer. There were 5 LiDAR sensors used. Two directly on the side, 2 slightly behind those, and one at the back. The intention was to cover all directions that were not within the field of view of the user. The placement of the buzzer corresponded with the placement of the sensors so that the alerts would be intuitive.
The the strength of each buzz was based on the distance of the oncoming object and the frequency of the buzzes was based on how quickly an oncoming object was approaching.
This project was developed on an ESP32-S3 Microcontroller. An ESP32 was chosen because of the great deal of documentation available for both by Espressif and third parties, its integration of WiFi and IoT which would aid over the air updates in the future, and its dual core architecture.
The ESPIDF framework was used when programming it. FreeRTOS was used to control the tasks needed to complete this project.
The schematic was very similar to the breadboard design; however, I had to make adjustments because the schematic uses an ESP32 module rather than a development board. I added a voltage regulator to step down the incoming 5V to the ESP32's operational voltage of 3.3V. I also included a USB-C to UART converter so I could flash code onto the microcontroller even after it is soldered onto the board.
I added two buttons: one for bootloading and the other for resetting. The two holes at the bottom are meant for the battery. Throughout the board, I ensured the inclusion of decoupling capacitors to minimize noise, as specified in the datasheet.
This is the original prototype I made on a breadboard. I glued it onto a skiing helmet to get a fuller understanding of how effective my very basic design was. There was a sensor at the front and back that would cause buzzers to start beeping at different rates based on the proximity of nearby objects. This is just one of the preliminary steps of completing this project and creating something that could actually be beneficial to the public.
On the PCB I put each LiDAR sensor and each beeper on opposite sides as one was meant for the front and one was meant for the rear. The plan with this PCB is to put it at the top of the helmet and thus at a central location.
I'm still developing both the software and hardware to make them both robust and manageable. A lot of this has been incorporating the tools that C gives like enums, structs and pointers to write better code. Furthermore, the schematic is overgoing a complete overhaul. I hope that I will be able to post both parts soon.