Opensat first generation cubesat bus
- Official Website http://sa.kechuang.org
- License: LGPL-2.1
- Launch Vehicle: CALT CZ-11
- Launch Date: 2016/11/11
- NORAD Object: 2016-066E
- Complete Cubesat bus design: hardware + software + documents
- Payloads: camera, LED array, radiation dosimeter
- Onboard computer: STM32F4, software stack including RTOS, FS, CANbus, libcsp (Cubesat Space Protocol), navigation, logging
- Onboard communications: half duplex or full duplex on amateur VHF and UHF band (140-148MHz, 430-440MHz). Tx power 2W, Rx sensitivity -113dBm @ 10kbps, both tx and rx support 2k~500kbps rate. FPGA radio baseband compliant to CCSDS standard, with libcsp support. With USRP B210, downlink rx sensitivity -126dBm @ 10kbps.
- Power system: MPPT solar charging, battery management, power distribution, safety switch, magnetorquer driver, sun sensor input, EED driver and RTC clock. Telemetry and protection for all critical components.
- Ground control: Qt based UI, provide display and control for all onboard modules.
- Gnuradio extension: custom OOT module gr-kcsa-ks1q for telemetry and telecommand. Contains necessary blocks for building custom satellite transceivers.
- Documents: interface control document (ICD) and safety report submit to launch service provider, including mechanical stress test and EMC test report. Brief product introduction, schematic and flowgraph for all modules.
- 2016/11/3: fix radio telemetry packet early-ending problem.
- 2016/11/20: fix battery under-voltage protection issues.
- 2018/6/2: gr-kcsa-ks1q pdu_to_stream2 support fractional decimation ratio.
- documents: system design documents, intro pages, ICD and safety report.
- firmware: embedded software for all onborad modules.
- firmware/binary: prebuilt firmware images.
- firmware/(MODULE)_FW(VER)/: firmware VER, code and project files for MODULE.
- firmware/(MODULE)_FW(VER)_flowgraph.pdf: firmware VER program flowgraph for MODULE.
- firmware/(MODULE)_FW_ChangeLog.txt: firmware changelog for MODULE.
- hardware: module hardware design documents.
- hardware/*block.pdf: module block diagram.
- hardware/connector: connector list and pin definations.
- hardware/mech_outline*: KS-1Q final mechanical dimensions.
- hardware/photo: board photos.
- host: software for ground control and debug purpose
- host/csp: libcsp preconfigured. need by KS1GCS
- host/DM: Data manager, all telemetry and telecommand data structure definations and service routines.
- host/NTCTest: onboard NTC temp sensor lookup table generation tool, needed if custom NTC is used.
- host/gr-kcsa-ks1q: custom OOT module for telemetry and telecommand.
- host/KS1GCS: ground control user interface, qt based.
- Minimal KS-1Q devkit including:
- KS1_EPS ( electrical power system ) module
- KS1_SOLAR ( solar panel, sun sensor and LED array )
- TTC ( telemetry and telecommand, aka. onboard communication ) module
- OBC ( onboard computer ) module
- NI USRP B210 ( other SDR device like LimeSDR can be used, some software modification needed )
- KS-1Q internal cables.
- KS1 Debug Tool ( an interface wiring board, two stlink or jlink, one flashpro 4. )
- How to buy
- http://deepace.net
- http://kcsa.taobao.com ( work in progress )
- Firmware: IAR EWARM 7.2+ ( commerical toolchain. gcc support work in progress )
- FPGA: if you want to recompile fpga logics, install Microsemi Libero SoC 11.3+ ( it's free, see licensing section in https://www.microsemi.com/product-directory/design-resources/1750-libero-soc )
- Ground control: Qt 5.2+ ( it's free )
- Radio transceiver: Ubuntu with Gnuradio 3.7.10+, UHD 003.010.001+ installed. ( USRP B210 only supported in UHD 003.010.001+, windows virtual machine won't work. )
- STLink utility: if using stlink debugger, need this for firmware hex download. ( download link https://www.st.com/en/development-tools/stsw-link004.html )
- J-Flash: if using jlink debugger, need this for firmware hex download. ( shipped with your jlink )
- Preparing - how to load mcu firmware
- if build with source, configure debugger in IAR
Project Settings
, then useDownload and debug
button. - if loading prebuilt image, use STLink utility or J-Flash.
- if build with source, configure debugger in IAR
- Preparing - how to load fpga image
- if build with source, use
Program Device
in Libero SoC. ( https://www.eecs.umich.edu/courses/eecs373/labs/LiberoRefGuides/projectflow_SoC.html ) - if loading prebuilt image, use FlashPro software, user guide here http://coredocs.s3.amazonaws.com/Libero/11_7_0/Tool/flashpro_ug.pdf
- if build with source, use
- Preparing - how to install gnuradio and usrp driver
- if using Ubuntu 18.04, use
sudo apt install gnuradio-dev uhd-host
is the easist way - if using Ubuntu 16.04, compile and install gnuradio from source ( http://github.com/gnuradio/gnuradio ) by yourself, usrp driver must use latest PPA ( https://files.ettus.com/manual/page_install.html )
sudo add-apt-repository ppa:ettusresearch/uhd
sudo apt-get update
sudo apt-get install libuhd-dev libuhd003 uhd-host
- other linux distribution not tested, compile on your own is suggested.
- if using Ubuntu 18.04, use
- Install host software
- Install ubuntu linux
- Install gnuradio and usrp driver
- Build and install libcsp
cd KS-1Q/host/csp
./build_csp.sh
sudo ./install_csp.sh
- Build KS1GCS
- launch QtCreator, open project KS-1Q/host/KS1GCS/KS1GCS.pro
- press
Build
button ( the hammer icon near left-bottom )
- Load bootloader / firmware
- Step 1: Connect KS1 debug tool to KS-1Q
- Step 2: Connect stlink or jlink to EPS SWD port
- Step 3: Connect li-ion battery charger to CHARGE port
- Step 4: Set EPS_RBF switch to
UNLOCK
position - Step 5: Load KS1_EPS_FW03 (firmware) to KS1_EPS module
- if failed, check STM32 on KS1_EPS have power supply
- possible reason: RBF in
LOCK
position or battery rans out.
- Step 6: Set TTC_DEBUG_SELECT switch to
JTAG
position - Step 7: Load TTC_V04_FPGA (fpga bitstream) to TTC module
- if failed, check TTC module have power supply.
- possible reason: KS1_EPS no output.
- RBF unlocked ? KS1_EPS firmware loaded ?
- Step 8: Set TTC_DEBUG_SELECT switch to
SWD
position - Step 9: Load TTC_V04_FW00 to TTC module
- if failed, check TTC module have power supply.
- Step 10: connect USRP to host USB3.0 port
- Step 11: Run gnuradio to establish wireless connection to KS-1Q.
- cd KS-1Q/host/KS1GCS/
- python ccsds-halfduplex-tcpserver2.py
- to edit flowgraph, run gnuradio-companion and open KS-1Q/host/gr-kcsa-ks1q/examples/ccsds-halfduplex-tcpserver2.grc
- Step 12: Run KS1GCS, then click
Connect
button. - Step 13: Send telecommand to enable OBC power. click
EPS
page in KS1GCS, then clickOBC on
button. if success, EPS telemetry PwrOBC will change to nonzero value after ~10seconds.- Now OBC have power supply
- Step 14: Load OBC_2D_FW03 to OBC module.
- if failed, check OBC module have power supply.
- use an external power supply ( equal to battery voltage, 7.2~8.4V ) can power on OBC directly. here step 10 - 13 is not required.
- Move all firmware to gcc toolchain
- Web based ground control
- Onboard scripting support
- OBC firmware upgrade support
- Better half-duplex radio link.