In this Section
Beep-Sat is a complete software example for a simple beaconing satellite that performs a handful of tasks and runs forever.
⭐ Software architecture that is easy to understand & build-upon
A simple asynchronous state machine schedules and runs routine spacecraft tasks
⭐ Well documented code with real-time debug messages
Entire code base includes thorough in-line commentary & insight
As introduced in Hands-On Quick Start, whenever a PyCubed board is powered, it loads and runs main.py
from the board's root directory.
main.py
does is automatically load each task file found within the /Tasks/
directory into a state machine and then runs the state machine indefinitely.priority
and frequency
attributes to inform the state machine how often to run the task.Download the latest Beep-Sat code from its GitHub Repo (either download the zip or if you're familiar with git, fork & clone the repo)
(Optional) With your PyCubed board plugged into your computer, backup your PYCUBED
drive by copying its contents to a directory on your computer.
Copy the files from /software_example_beepsat/basic/
to your PYCUBED
drive, overwriting any files when prompted
Open a serial terminal and observe the output as the beep-sat conducts its mission.
Refer to Accessing the Serial Console for help opening the REPL
After observing the output in the terminal for a few moments, start working through understanding each task by stepping through the code breakdown discussion (below) while opening and playing with its respective file in /Tasks/task_filename.py
.
Priority: 255
Frequency: twice per second (2 Hz)
Very simple task to blink the onboard RGB LED. With a priority of 255, Blink has a very low priority and will be preempted by most all other tasks.
Priority: 5
Frequency: once every 10 seconds (0.1 Hz)
This task demonstrates an important spacecraft function: how to perform routine sensor data collection over common serial buses such as I2C, SPI, or UART.