Morse beacon is in format “OH2RHW1BxxPxxxxx”, where two numbers after B describe the battery level. e.g. “75” meaning 7.5V.
4 numbers after “P” describe, which subsystems/features of satellite are turned on using a bit mask.
Order of the field is following: payload, gps, obs, adcs, battery_heater_1, battery_heater_2, charging_allowed, uhf_a, uhf_b, 3v3_toggle, 5v_toggle, antenna_deployment_1, antenna_deployment_2
When it’s time for 2-gfsk beacon we always send two packets (EPS telemetry and UHF telemetry)
Preamble is 6 bytes of 0xAA and the syncword 0x35, 0x2E, 0x35, 0x2E
Data rate 9600 symbols/s
TI CC1125’s packet protocol is used using TI’s whitening and crc16. We are using an open source GNU Radio block to decode the packet format https://github.com/andrepuschmann/gr-cc11xx.
CSP (Cubesat Space Protocol) is used inside TI’s packet format.
Structure:
[[6, preamble], [4, syncword], [1, packet length] [1, packet type] [4, CSP header][2, CSP packet length] [0-106, payload][4, packet number][4, signature] [2, crc]]
The first packet is the eps telemetry and second one is the uhf telemetry.
UHF Statistics structure:
[[uint32, CAN_rx_frame_count],
[uint32, CAN_tx_frame_count],
[uint32, CAN_error_count],
[uint32, boot_count],
[uint16, last_boot_reason],
[uint8, memory_violation_reset_has_occured],
[int16, internal_temp],
[uint32, current_csp_packet_number],
[uint16, allowed_relay_packet_count],
[uint32, rx_csp_frame_count],
[uint32, rx_relay_frame_count],
[uint32, tx_csp_frame_count],
[uint32, rx_fifo_error_count],
[uint32, tx_fifo_error_count]]
‘allowed_relay_packet_count’ field defines how many packets the repeater can still send.
EPS Statistics structure:
[[uint32, timestamp],
[uint32, CAN_rx_frame_count],
[uint32, CAN_tx_frame_count],
[uint32, CAN_error_count],
[uint32, boot_count],
[uint16, periodic_boot_count],
[uint8 * 12, [boot_reasons]],
[uint8, last_boot_reason],
[uint32, total_uptime_s],
[uint32, uptime_s],
[uint8, memory_violation_reset_has_occured],
[int16, internal_temp],
#ADC0
[uint16, solar_panel_x_positive_curr (spxp_curr)],
[uint16, spxn_curr],
[uint16, spyp_curr],
[uint16, spyn_curr],
[uint16, sp_x_v],
[uint16, sp_y_v],
[uint16, bat_curr],
[uint16, bat_v],
#ADC1
[uint16, uhf_curr_3v3],
[uint16, uhf_curr_5v],
[uint16, payload_curr],
[uint16, iacs_curr],
[uint16, gps_curr],
[uint16, obc_curr],
[uint16, sns_3v3],
[uint16, sns_5v],
#ADC2
[uint16, sns_12v_1],
[uint16, sns_12v_2],
[uint16, temp_sns1],
[uint16, temp_sns2],
[uint16, current_mppt_value_1],
[uint16, current_mppt_value_2],
[uint16, target_power_levels],
[uint16, actual_power_levels],
[uint8, power_state]
#subsystem heartbeat
[uint16, uhf_failures]
#antenna deployment
[uint8, deployment_sensed (4), deployment_rounds (4)]
]
Our conversion code for transforming ADC values to real units is available at https://github.com/ReaktorSpaceLab/rhw-ham.
Possibility for radio amateurs to echo their packets back to ground.
Will be turned on after satellite has been confirmed to work in orbit.
Each received packet decrements a counter in the satellite and when the counter reaches zero the repeater has to be activated again by the satellite operators.
Structure: [[6, preamble], [4, syncword], [1, packet length] [1, packet type][0-126, payload] [2, crc]], where packet type should be set to 2. ‘packet length’ calculates only the length of ‘packet type’ and ‘payload’.