...
- 32-bit ARM M4 @ 120 MHz microprocessor
- Flash memory + Micro SD card slot
- Watch dog timer (automatically resets system in case of error)
- IMU
- Radio + 5V buck converter for radio + Antenna*
- 4.5V-18V → 3.3V buck converter
- Li-ion battery charger (compatible with solar)
- Burn wire (cool mechanism that keeps the antenna "folded" until the satellite deploys, upon which it springs out)
- Power monitor
*Side note: the PyCubed sofware by default disables radio unless you have the antenna attached because this can damage the radio. Once you've attached the antenna, you have to manually set ANTENNA_ATTACHED = True.
The board can be controlled using the PyCubed software, found here: https://github.com/pycubed/software/blob/master/mainboard-v05/lib/pycubed.py
The GitHub repo pretty much only has code to initialize the board and gives the user free reign to design the flight software.
An example of a basic process that can be made with the PyCubed repo can be found here: https://pycubed.org/Beep-Sat%20(basic)%20a3074e1925d74835bd3e2e3543819981.html and here: https://pycubed.org/Beep-Sat%20(advanced)%202d93fbe63d1a42cc8ce084b6f19535ba.html
Rules of thumb about designing flight software:
- There is a central loop which takes sensor data → runs update() function
- Each task should be given (1) a "priority score" (and tasks are executed in order as such) and (2) a frequency of which they are scheduled (if recurring)
- Use the keyword
awaitbefore a task if you want to 100% guarantee it is executed before moving on. - Use the
schedule_later = Truekeyphrase if you want something to skip its first iteration.
How to create your own task:
- Use the /Tasks/task_test.py template in the repo