The system developed by the Senior Design team operates as the "brain" and "guts" of the CubeSat. It hosts environmental sensors, power components, and communication protocols on-board. While many processes are contained entirely on the board, it also provides and facilitates communication, power and control of external components. The system is broken down into four subsystems: power, anomaly detection, communications, and major interfaces.
The power subsystem consists of LiPo batteries that are charged by four deployable solar cells via a Solar LiPo Charger. The charger pulls near maximum power from the solar cells to power the entire system and charge the batteries with any excess power. The output of the charger ranges from 3.7-4.4V, so our subsystem utilizes 1.8V, 3.3V, 5V, and 9V DC-DC converters to create the necessary voltages for our electronics.
Using sensor data, the anomaly and state detection system tracks the CubeSat's environment and determines what components should be operating. This subsystem classifies the current state of the overall system as undeployed, tumbling, day cycle, night cycle, downlink, low-power, or sleep, based on certain parameters (see below). The anomaly and state detection subsystem also monitors the current and voltage levels for several sensors and devices, ensuring proper operation of the board. If "anomalies" are detected, the devices may be shut off for some time. This feature also allows devices to be shut off for energy conservation.
The communications subsystem reads input sensor data that is used in other subsystems. This data is then formatted into packets that can be read by the SDR and eventually sent to a ground station.
The interfaces subsystem establishes communication links between the Raspberry Pi Zero 2 W and Motor Controller Board. Acceleration, gyroscopic, and magnetometer sensor data of the CubeSat is fed to the flight computer, where IrishSat’s Kalman filter will allow for attitude control.
The board was designed to fit all components and routing in a 5.32cm x 6.32cm space. Due to this restriction and other requirements of the microcontroller used, the ESP32, the board was designed with four layers: three layers are used for routing, and one layer is left as a complete ground. Connections to external components were placed in order to avoid overlap and conflict between components.
Software was written to enable state and anomaly detection in conjunction with the communication and major interfaces. By including the ESP32, the processing load of the flight computer was alleviated. The ESP32 independently reads sensor data, determines the current state, checks for anomalies, reboots and shuts down devices, and communicates periodically with the flight computer. Much of this is supported through either one of two I2C buses or the ADC capabilities of the ESP32.