Arduino-based IMU telemetry system for model rockets.
Part I of this project started before the hackathon, as I have never worked with Arduinos or any circuits before, but found myself interested in learning and spent a lot of time reading, researching, and planning during quarantine. I have also always been interested in space and rockets, and finally have the knowledge and ability to build one, but I wanted to have a purpose, and reading atmospheric data was the perfect excuse to start this project, but first I had to teach myself how electrical circuits work, as well as some general electrical engineering principles.
Step one was to build a simple 'weather station' which consisted of just an Arduino Nano and BME 280, a temperature/humidity/barometer/altimeter sensor, which was a great start to understanding I2C and SPI connections.
Step two was adding the LIS3DH triple-axis accelerometer, which would give the Arduino the ability to measure position and movement during flight.
Part II of this project was configuring the network communications between the flight computer and the server. For the server, I am running a node-red instance which connects to the local network and listens for UDP packets being sent from the computer. The flight computer's main processor is the ATmega32u4 onboard the Adafruit Adalogger, which is combined with the Adafruit AirLift FeatherWing Wi-Fi Co-Processor which transmit the collected sensor data using an ESP8266 chip. The Node-Red server also creates real time graphs of sensor output, as well as stores the data into a json file for analysis post flight. The biggest challenge of this step was creating the network connection between the three components (flight computer, ground control, remote server), and syncing them. I built a startup sequence on the flight computer which checks to make sure all the sensors are present and powered on, and then checks the continuity of an analog pin which has an LED wired to it, and when the startup sequence has completed, the LED powers on and the flight computer sends an "all good" message to ground control. Ground control powers up and waits to hear from the flight computer, and when it receives data, it's own LED powers on to show that startup has completed. This was a crucial step for me because when the flight computer is in a rocket and on the launch pad ready to go, I want to be able to make sure everything is working without needed to necessarily remove the computer and check.
Part III of this project requires an actual model rocket to test the full capabilities of this computer, as certain values like altitude and pressure only changed slightly when climbing on tables at home, but are not as sensitive as other sensors like the accelerometer and temperature.
I mostly just had a really fun time polishing my C++ and learning how to work with electrical circuits, and being able to teach myself this really awesome new skill :)