|Coordinates||51.9893° N, 4.3629° E|
|Coordinates||51.9893° N, 4.3629° E|
|Launch vehicle||ISRO/Antrix PSLV, India|
|Orbit||LEO 500 – 600 km polar sun-synchronous|
|Platform||Hello World (RSL)|
|Payload||Infrared hyperspectral imager (VTT)|
|Dimensions||10 x 10 x 22.7 cm|
|Communication||UHF and S-band|
Telemetry and telecommand: (RSL)
Our command link is built to provide a connection that is as reliable as possible. The data speed is low, but the purpose is to give commands that are quite small and get back vital telemetry.
Power production and distribution: (RSL)
The heart of the spacecraft. Keeps the satellite alive.
Onboard data-handling: (RSL)
A low power computer that can be the brain in any mission coordinating the work of other subsystems and payload.
Attitude determination and control:
Points the satellite at Earth so we can take hyperspectral images of the ground.
Commands the hyperspectral imager over an FPGA module and post-processes the data into consumable form. Ability to easily upload more functionality.
“Faster downlink of hypercubes.”
Keeping it all in one piece.
In order to start writing high level code we of course had to implement the plumbing in the platform. That has been done using for example C, C++, and Verilog. Some of our subsystems have no operating system, some use the facilities of FreeRTOS, and there’s a Linux box too.
All of them implement the Cubesat Space Protocol with the open source libcsp library over a CAN bus inside the satellite and the communications subsystem broadcasts the packets to the outside world. We use a TCP to CSP proxy to enable using rsync, telnet, and other TCP protocols to orbit.
And yeah, the high level scripting language we do use instead of Node.js is of course POSIX shell!
Infrared hyperspectral imager
World’s smallest space-grade hyperspectral imager. Based on a tunable Fabry-Perot interferometer.
Want to contact the Hello World satellite? Here we have gathered all the information you need to see how the satellite is doing or even send your own messages from space.
Reaktor Hello World has periodic beacons and a digital packet repeater:
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/s
TI CC1125’s packet protocol is used using TI’s whitening and crc16.
CSP (Cubesat Space Protocol) is used inside TI’s packet format.
[[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], [uint32, 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], [uint32, periodic_boot_count], [uint8 * 12, [boot_reasons]], [uint8, last_boot_reason], [uint32, total_uptime_s], [uint32, uptime_s], [bool, 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)] ]
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’.