Currently the system has five modules. They are:
1 - MCU module: an ATMega328P in a little PCB, connected to the other modules by a main SPI bus. This module is surrounded by pads much like an Arduino stamp. These pads form a standard connection to a smaller module which I call a submodule. They deliver a second SPI, an I2C, a serial connection, two analog inputs and some GPIOs to the submodule. To enable the second SPI I had to remove the boot loader from the ATMega328P and strip all Arduino and wiring traces, rewriting what I needed from the beginning and redefining many things.
2 - AMGP sensor submodule: a small board that connects to the MCU module. This submodule has an accelerometer, a gyro, a magnetometer and a barometer. They connect to the MCU module using I2C and SPI buses, both available on the lateral connections. Data is read by the MCU module, processed and made available for other modules when they need.
3 - COM module: This is a standard MCU module also connected to the main SPI bus, but with connections to the slave select pins of the other modules. It is also connected via UART to a WIFI module that delivers the required information wirelessly to my computer. This module is the messenger. It calls other modules, identifies them and pulls all the available information, delivering everything later to the flight control module.
4 - PS Modules: Two very small factor power supplies that are able to charge a LiPo cell and power up the system with up to 0.8A at 3.3V and 5V.
5 - The Backbone: A PCB with an optimal form factor to plug the modules and host a RN131G WiFi and a COM module.
6 - Servo control submodule: A submodule sized PCB which connects to a MCU module and can control up to 16 servos.