💾

Software & Firmware

PyCubed is programed/operated using a version of Python designed for microcontrollers called CircuitPython. Advantages to using CircuitPython include:

  1. Native USB support with serial port debugging, no extra drivers or other software required.
  1. CubeSat mounts as a "USB flash drive" with software and libraries stored as plain-text files on the drive, no compilation required.
  1. Simple Python3 programming syntax capable of accessing low-level hardware peripherals such as I2C, SPI, UART, and CAN bus.
  1. Open-source architecture with robust fault tolerance and error handling
  1. Capable of over-the-air software updates.

The CircuitPython architecture is an open-source effort led by Adafruit and targeted towards beginner programmers. Although it's easy to get started, CircuitPython is capable of enough depth to allow command and control of the spacecraft. Visit https://circuitpython.org/ to read more.

Overview

When working with embedded hardware like PyCubed, it's helpful to group programming into two categories.

  • Firmware: this is the low-level code that implements Python on the microcontroller. Written in C.
  • Software: this is the code written in Python telling the spacecraft what it should do.

When getting started, the user will work entirely with software. If there comes a point where the user wants to implement a new microcontroller capability, he or she will need to learn more about the PyCubed firmware.

Firmware and software are located in separate repositories within the PyCubed GitHub. Visit their respective pages below:

PyCubed software block diagram illustrating a portion of the CircuitPython runtime

Software


See Hands-On Quick Start for getting started with software.

After finishing the quick start, there are lots of tutorials and examples to help you craft your mission software.

  1. 🖥️Code Examples for software snippets and helpful patterns
  1. Example Flight Software for complete mission software demos






Software Repo 👇

https://github.com/pycubed/software

Firmware


There are three cases when someone might want to alter the PyCubed firmware:

  1. Update to the latest CircuitPython version for new features. See 🗳️Updating PyCubed
  1. You built a mainboard yourself and need to flash firmware for the first time. See 🛠Programming the Bootloader
  1. You're interested in tweaking CircuitPython or developing your own firmware. See 🔨Building the PyCubed Firmware from Source

Firmware Repo 👇

https://github.com/pycubed/firmware