Would you ever leave your computer on and unattended for an entire week? How about for 8 months, while you are 400km away? Even though electronic devices at home won’t remain on for so long, a satellite will have to endure the loneliness of space for a really long time – you can’t just press a button to reboot it if something goes wrong!

This is one amongst the many responsibilities of the OBC (On Board Computer) or OBDH (On Board Data Handling) subsystem. OBC could be described as the main “brain” of the satellite – the computer responsible for all of its actions, from reading temperature sensors and checking if everything works nominally, to writing data in the memory and reporting all errors.The word computer, however, shouldn’t be interpreted as your typical home computer. In a PC, thousands of parts are running simultaneously to provide users with the best possible performance. However, on our CubeSat, a custom so-called “embedded system” will be designed for minimal power consumption and high reliability purposes. The OBC will consume less than 0.1% of the power of a typical computer, and will have less than 10 MB of RAM available. Although old mobile phones had even more RAM capacity than our system, it will be more than enough to run the entirety of the satellite operations!

Left: CubeSat mockup programming, Right: One of the microcontrollers that will be used for the satellite

The OBC will consist of a network of 4 or more tiny microcontrollers (one for each subsystem), built on the well-known ARM architecture and will use a protocol called CAN to communicate with each other. These microcontrollers will be programmed in C and C++ languages, and the software will run on the FreeRTOS operating system. FreeRTOS is not a typical OS like Windows or Linux. It is a real-time operating system with no nice graphical interface, but built to be as reliable and fast as possible without causing any crashes. (There is no room for Blue Screens of Death here!)

Some of the most crucial tasks that the OBC is responsible for are:

  • Reading measurements from sensors (e.g. sensors for temperature, pressure, acceleration, …)
  • Storing data from our mission in an SD card
  • Reading and executing commands from the ground station
  • Running automated scheduled commands
  • Detecting and reporting errors in the satellite’s subsystems
  • Processing and compressing data
  • Updating the code of the CubeSat’s microcontrollers, whenever a fix needs to be made after launch
  • Preparing all the telemetry data of the satellite to be sent (to the ground) through the Comms subsystem

Programming our microcontrollers in C

As we’ve mentioned before, space is an unforgiving environment: when something is sent to orbit, every possible failure scenario has to be thought of. That said, in our technical presentation on March 6, some of the techniques used to create a reliable and flight-ready system that meets all the necessary requirements for launch will be presented. Some examples include, thorough testing & documentation, code reviews, static memory allocation, hardware failsafes, defensive programming and space standards (ECSS).

On-Board Computer Team (Thodoris, Dimitris, Konstantinos, Grigoris, Thanasis)

The OBC sub-team consists of 5 members, all of whom are undergraduate students at the Aristotle University of Thessaloniki. Konstantinos, Thodoris and Grigoris are studying Electrical & Computer Engineering, while Thanasis is studying Computer Science and Dimitris is studying Physics. Currently, Konstantinos is implementing an error-correcting algorithm on an FPGA logic circuit, Thodoris is developing code for accurate time keeping on-board the satellite, Grigoris is working on interfacing the microcontrollers with our wireless transceiver, Thanasis is developing a system which performs automated actions on system events, and Dimitris is working on command scheduling, received from the ground stations.

Categories: CubeSat