The inspiration to build this device was to provide a simple PCB for the drones(majorly fixed-wing aircraft) that do not require a full-fledged data acquisition system at all points. It would measure the angle of attack of the aircraft and give effective stall warnings in real-time using the LEDs on board. This would specifically help the stunt pilots to push the aircraft to its limits and perform better.
What it does
Using an accelerometer and gyroscope, our device will calculate the angle of the drone it is mounted on and it will light up LEDs accordingly. It will also send this data to a web-service to provide flight data to a server and also give stall warning on the server. It is also capable of giving roll v/s time data. All the data is filtered while on the main dashboard, however, the raw accelerometer data can be viewed too on another tab.
Sensors and Actuators we used
We used an accelerometer(MPU 9150) and SMD RGB LED actuators coupled with LED driver(LP3944ISQ/NOPB).
Our Bootloader works by first reading a boot_status struct located on the NVM storage. This struct contains a flag saying if a firmware update was scheduled for the application. If the flag is set, then the bootloader will look at the install_index value in the boot_status. This value is then used to find the correct firmware version on the flash chip. The flash chip has a flash header where it stores the addresses of each FW version. The bootloader will read this struct and then go to the address corresponding to the install_index value. The bootloader then reads the firmware metadata struct from the flash memory. It then does a CRC check on the data in flash to confirm that it has not been altered. If that is successful, it will write the data to the NVM storage, again checking the CRC as it writes. When the write is complete, we do one last CRC check on the data on the NVM drive to confirm that we wrote it correctly. If everything is good, we reset the boot_status flag and restart. If the CRC fails, then the bootloader will not write to the NVM chip and will mark the FW update flag as false in the boot_status. The system will then reboot into the old firmware version. We include several CRC checks to ensure data integrity on the system.
Data Sent to Cloud:
1) Accelerometer Data: The device sends raw accelerometer data over three axes and the roll and pitch data in real time over the cloud. A different plot for each is displayed on the dashboard.
2) The flight status(safe mode/critical mode/stalled mode) data is also sent to the cloud to display on the dashboard.
Data Received from the Cloud: Every Aircraft could have a different stall angle. We set up the dashboard to give the required stall angle to the board.
Challenges we ran into
As with every new thing did the first time, not everything that we thought of was achieved smoothly. Few of the hurdles were:
1) Flipped SDA & SCL lines: We realized that we had flipped the SDA and SCL I2C connection on our SAM W25 chip. We ended up doing that on our backup I2C as well as original I2C connections.
Solution: Scratch the bad traces and wire the swap!!
2) Accelerometer on board is not good enough! We realized that the accelerometer we prototyped our design with (because of the unavailability of the chosen accelerometer) performed better and is more sensitive than the onboard accelerometer. Apparently, this particular accelerometer was better suited for other purposes like the phone.
Solution: We wire up the accelerometer externally.
3) LED Driver out of stock just in the week of submission to PCB.ng In spite of choosing a TI component, after the complete routing of the board that the LED Driver was unavailable.
Solution: We had to look for a part with the same pin mapping but that could drive only 2 colours in the RGB LED. 4) LED footprint flipped!
Since we ended up making the footprint ourselves for this LED, somehow we messed it up at some point and we mirrored it!
Solution: We rewire the circuit and make one colour work and rely on different patterns of the blinking to give different level of warnings.
Accomplishments that we're proud of
We are really proud of the Altium design and the way our board has finally come up. It was a thrilling challenge to work with such high packing density on the first board and finally, not having errors that can't be solved at all without redesigning the complete board.
What's next for DroneDAD
Better accelerometer, careful schematics, more debugging points, more LEDs and a promise to keep it looking as cool as it does!