SAHEL-CUBESAT: An Experimental Educational CubeSat
Project work in progress
This project aims to develop a complete experimental CubeSat for educational purposes. It is based on an STM32H7 MCU for data handling and uses two CC1200 radios for communication. The software is developed using a Zephyr-like RTOS.
The structure was designed according to the specifications using Onshape. All printable components can be found in this directory.
Mechanical faces X+ X- Y+ Y-
Mechanical faces Z+ Z-
Solar panel
Electronics
KiCad is used for the electronic design. The hardware is divided into three parts. The first part includes the radio communication system and the OBC (On-Board Computer) for the CubeSat. The second part consists of a board integrating several sensors and a solar MPPT controller IC.
STM32H7B0VBTx High-performance Arm Cortex-M7 MCU with DSP and DP-FPU, 128 KB Flash, 1,376 KB SRAM, up to 280 MHz.
FRAM — FM24CL64B
Parameter
Value
Memory
64-Kbit (8K × 8)
I2C Address
0b1010000
SDA (I2C3)
PC9
SCL (I2C3)
PA8
Write Protect
PC5
Sensors
Accelerometer, Gyroscope, and Magnetometer: LSM9DS1 Barometer: BMP388
Parameter
Value
I2C Address (ACC/GYRO)
0b1101011
I2C Address (MAG)
0b0011110
I2C Address (BARO)
0b1110111
SDA (I2C4)
PD13
SCL (I2C4)
PD12
INT_ACC/GYRO
PE8
DRDY_MAG
PE7
DRDY_BARO
PB2
RTC & Temperature Sensor
RTC: RV-8803-C7 TEMP: TMP100
Parameter
Value
RTC I2C Address
0b0110010
TEMP I2C Address
0b1001000
SDA (I2C1)
PB7
SCL (I2C1)
PB6
RTC_INT
PB5
RTC_EVI
PB4
CAN Interface: TCAN334G
Signal
Pin
CAN1_TX
PD1
CAN1_RX
PD0
CAN_SHDN
PA15
CAN_STBY
PD2
RS-485 Interface: ISL3170E
Signal
Pin
UART2_RX
PD6
UART2_TX
PD5
UART2_EN
PD4
Radio Interface: CC1200
The CC1200 device is a fully integrated single-chip radio transceiver designed for high performance at very low-power and low-voltage operation in cost-effective wireless systems frequency bands at 164–192 MHz, 274–320 MHz, 410–480 MHz, and 820–960 MHz.
UHF(TX/RX) 420-470 MHz
Signal
Pin
UHF_SCK(SPI1)
PA5
UHF_MISO(SPI1)
P6
UHF_MOSI(SPI1)
P7
UHF_CS(SPI1)
PA4
UHF_GPIO2
PC5
UHF_GPIO3
PC4
VHF(TX/RX) 164-192 MHz
Signal
Pin
UHF_SCK(SPI4)
PE12
UHF_MISO(SPI4)
PE13
UHF_MOSI(SPI4)
PE14
UHF_CS(SPI4)
PE11
UHF_GPIO2
PB10
UHF_GPIO3
PE14
Solar Panel and Battery PCB
Solar charger PCB
Battery charger PCB
In this project, the BQ24650 solar charger is used together with an INA219A current sensor for photovoltaic (IPV) monitoring.
Parameter
Value
Input Voltage (Vin)
9V – 24V
MPPT Voltage (VMPPT)
9V
Charge Voltage
8.2V
Charge Current
1.2A
Precharge Current
125mA
Termination Current
125mA
INA219A I2C Address
0b1000010
SDA (I2C4)
PD13
SCL (I2C4)
PD12
Battery Pack & Protection
The system uses four RS PRO Li-Ion batteries configured in a 2S2P arrangement with the following specifications:
Parameter
Value
Nominal Voltage
3.60V
Capacity
3500mAh
Maximum Charge Voltage
4.20V
Energy
12.60Wh
Operating Voltage
4.20V – 2.50V
Cut-Off Voltage
2.50V
Standard Charge Method
CC-CV
Standard Charge Current
0.2C (0.7A)
Standard Charge Cut-Off Current
0.02C (0.07A)
Maximum Continuous Charge Current
1.0C (3.5A)
Standard Discharge Conditions
Temperature Range
Discharge Current
0°C – 10°C
0.1C (0.35A)
10°C – 20°C
0.2C (0.7A)
20°C – 45°C
0.5C (1.75A)
The battery protection and monitoring system is based on the BQ76907 battery monitor IC and an INA219A current sensor.
Parameter
Value
I2C Address (BQ76907)
0b0001000 (default)
I2C Address (INA219A)
0b1000000
SDA (I2C1)
PB7
SCL (I2C1)
PB6
Battery Alert
PE2
Software
The software is developed using Zephyr RTOS. The middleware architecture is described in the Software Documentation.
System Logic
We are developing the system based on Zephyr RTOS, using a multi-threaded architecture combined with Zephyr zbus for internal communication.
The application is structured around multiple independent threads that communicate through the zbus message bus system.
Key concepts:
Each module acts as a zbus publisher and/or subscriber
Data is exchanged through well-defined channels
This avoids tight coupling between components
Improves scalability and modularity of the system
Benefits of using zbus:
Decoupled architecture between threads
Clean publish/subscribe communication model
Easier debugging and tracing of data flow
Better maintainability for complex systems
Ground Station Communication
The ground station software is not yet implemented. The current plan is to develop it using either:
Qt-based applications (for a custom GUI control station)
or existing SDR software tools for signal reception and analysis
Communication Mechanism
The communication between the system and the ground station is designed around a structured and layered protocol stack.
1. Physical & Link Layer
The system uses the AX.25 protocol as the primary data link layer.
AX.25 provides:
reliable packet framing
addressing capability (callsigns)
error detection (CRC)
compatibility with amateur radio / SDR systems
2. Packet Structure
All exchanged data is encapsulated in AX.25 frames containing:
payload data
message type identifier
optional sequence number
checksum (handled by AX.25 layer)
3. Command System
The ground station can send commands to the embedded system.
Commands are structured as:
command ID
optional parameters
target module (if applicable)
Examples of command types:
system control (start / stop / reset)
configuration update
request sensor data
debug / diagnostics requests
4. Internal Routing (zbus integration)
Incoming and outgoing messages are bridged into the internal zbus architecture.
Flow:
AX.25 frame received → decoded → converted to internal message
message published on zbus channel
relevant modules subscribe and react
5. Response System
The system responds using structured messages:
ACK / NACK for command validation
telemetry data packets
event notifications
status reports
All responses follow the same pipeline:
zbus → encoder → AX.25 → ground station
6. Design Goals
This architecture is designed to ensure:
robustness over noisy RF links
modular separation between communication and logic
easy integration with SDR tools
future compatibility with different ground station implementations
SAHEL-CUBESAT: An Experimental Educational CubeSat
Project work in progress
This project aims to develop a complete experimental CubeSat for educational purposes. It is based on an STM32H7 MCU for data handling and uses two CC1200 radios for communication. The software is developed using a Zephyr-like RTOS.
Mechanical Frame
CubeSat Assembly with PCBs
Complete CubeSat Assembly
Table of Contents
Hardware
Software
Ground Station Communication
Hardware
Structure
The structure was designed according to the specifications using Onshape. All printable components can be found in this directory.
Mechanical faces X+ X- Y+ Y-
Mechanical faces Z+ Z-
Solar panel
Electronics
KiCad is used for the electronic design. The hardware is divided into three parts. The first part includes the radio communication system and the OBC (On-Board Computer) for the CubeSat. The second part consists of a board integrating several sensors and a solar MPPT controller IC.
Radio and OBC PCB : Available in: hardware/sahel_pcb_main
Architectural Diagram of the Radio and OBC PCB
Radio and OBC PCB
Components
MCU
STM32H7B0VBTx
High-performance Arm Cortex-M7 MCU with DSP and DP-FPU, 128 KB Flash, 1,376 KB SRAM, up to 280 MHz.
FRAM — FM24CL64B
0b1010000Sensors
Accelerometer, Gyroscope, and Magnetometer: LSM9DS1
Barometer: BMP388
0b11010110b00111100b1110111RTC & Temperature Sensor
RTC: RV-8803-C7
TEMP: TMP100
0b01100100b1001000CAN Interface: TCAN334G
RS-485 Interface: ISL3170E
Radio Interface: CC1200
The CC1200 device is a fully integrated single-chip radio transceiver designed for high performance at very low-power and low-voltage operation in cost-effective wireless systems frequency bands at 164–192 MHz, 274–320 MHz, 410–480 MHz, and 820–960 MHz.
UHF(TX/RX) 420-470 MHz
VHF(TX/RX) 164-192 MHz
Solar Panel and Battery PCB
Solar charger PCB
Battery charger PCB
In this project, the BQ24650 solar charger is used together with an INA219A current sensor for photovoltaic (IPV) monitoring.
0b1000010Battery Pack & Protection
The system uses four RS PRO Li-Ion batteries configured in a 2S2P arrangement with the following specifications:
Standard Discharge Conditions
The battery protection and monitoring system is based on the BQ76907 battery monitor IC and an INA219A current sensor.
0b0001000(default)0b1000000Software
The software is developed using Zephyr RTOS.
The middleware architecture is described in the Software Documentation.
System Logic
We are developing the system based on Zephyr RTOS, using a multi-threaded architecture combined with Zephyr zbus for internal communication.
The application is structured around multiple independent threads that communicate through the zbus message bus system.
Key concepts:
Benefits of using zbus:
Ground Station Communication
The ground station software is not yet implemented.
The current plan is to develop it using either:
Communication Mechanism
The communication between the system and the ground station is designed around a structured and layered protocol stack.
1. Physical & Link Layer
The system uses the AX.25 protocol as the primary data link layer.
AX.25 provides:
2. Packet Structure
All exchanged data is encapsulated in AX.25 frames containing:
3. Command System
The ground station can send commands to the embedded system.
Commands are structured as:
Examples of command types:
4. Internal Routing (zbus integration)
Incoming and outgoing messages are bridged into the internal zbus architecture.
Flow:
5. Response System
The system responds using structured messages:
All responses follow the same pipeline: zbus → encoder → AX.25 → ground station
6. Design Goals
This architecture is designed to ensure: