The original design for the complete flight controller included far too many components. We have since changed the design a few times and have simplified the controller significantly while keeping almost all the functionality we first wanted.
In this diagram there is a controller that handles power to each of the boards and data acquisition for the states and error reports (D1FC). One board handles the computer vision (ATCV,) which is still in design. One board tracks and keeps the data for the voltage/current that each motor is using for troubleshooting (ATVS), which is now being mixed in with another board. There is a motor controller board that also has the accelerometer and gyroscope (ATMC). Another board with a accelerometer and gyroscope is connected to an ESP8266 WiFi chip that transmits the current readings to us while testing for real time telemetry (ATAG), this board is getting mixed with others to limit the size of the final flight controller. finally, there was a board handling the sensors for detection objects, measuring speed (difference between pressure of two barometers), and measuring elevation with a altimeter (ATSA). The new design features all the sensors and capabilities but without so many processors. This is because we found we do not need the processing power we originally thought.
This is the prototype board diagram for the traffics controller between the other boards. The main purpose of this board was to deal with state control.
The external interrupt ports gave signals to the ATTC so it can make decisions based on which state it was in. This was to keep the state control separate from the processing needed to deal with sensor input to PID control.
The other function of the ATTC was to direct traffic from the I2C lines. Since then this has been replaced with serial communication between boards to free up the I2C lines for sensor input.
The ATTC and ATAG boards are now the ATCC for the final design.
This board consists of a Arduino Pro Mini 16MHz, an ITG/MPU6050 Accelerometer and Gyroscope board, and an LED for confirmation on proper initialization of the device. It has four ports connected to the PWM outputs for the motor control.
This board consists of Arduino Mini Pro 16MHz, an ITG/MPU6050, a BMP180 Barometer and Temperature sensor, and an ESP8266 WiFi Breakout, and some 2-channel NAND gates. The NAND gates are connected to I2C and a digital GPIO that outputs a HIGH when that sensor needs to be read. This way the comm line can be active all the time but the processor only picks up data when it is in the correct state to do so. The WiFi breakout is to send acceleration and gyroscope data to the computer to have telemetry running during test flights. This board has had other boards added to it to save on size of the final design.