By Micaiah Adeoba(A), Lindsey Lubin (A), Adit Sachde (A)
We were tasked with designing a project utilizing the skills and knowledge taught in ECE 4180 Embedded Systems.
Our project is based loosely on the Georgia Tech Experimental Rocketry (GTXR) team's flight computers, which utilize a ethernet network onboard the rocket. This network is also connected to the ground network while on the launch pad.
Our implementation uses IMU and an ethernet connection to display the real time attitude of the mbed device on a website, and provides an API to allow other devices to query and use the current attitude. Many systems require access to the attitude of the launch vehicle, however the IMUs used are very expensive. This setup allows a single IMU to be used without sacrificing access to data.
-
Obtains the orientation of the device, using a Madgwick to fuse the various sensors on the LSM9DS1 chip and get better data.
-
Displays the website over an ethernet link between a PC and the mbed. This website displays the orientation of the mbed as calculated by the Madgwick filter. It also has a refresh mechanism to ensure that the orientation is automatically updated without requiring user interaction.
-
Provides an API, used by the example terminal based project in the
api_demo
folder.
- MBED Microcontroller LPC1768
- IMU LSM9DS1 9 dof stick. | https://os.mbed.com/components/LSM9DS1-IMU/
- Madgwick Filter
- This filter is implemented with C++ classes, making it far easier to integrate into other programs.
- HTTP server
- The server implements both
GET
andPOST
requests. GET
is used to serve the websitePOST
is used to provide the realtime API
- The server implements both
- Remote Access
- Utilizes Cloudflare tunnel, running on a PC with network access to the mbed as a bridge.
- This solution also allows the website to be accessed with a url (https://aprs.koven.dev) instead of an IP address.
- The filter provides accurate data for pitch and yaw
- The filter does not integrate the magnetometer, resulting in an inaccurate roll axis. This is because the axis is perpendicular to the gravity vector.
- The filter lags slightly. It stabilizes to the correct attitude, but could stablize faster if it was better tuned to the particular hardware.
- API is simple and easy to use
- It does not use the most appropriate HTTP method, but is an acceptable tradeoff for simplicity of implementation.