INTRO Welcome to the radio amateur information page for the SERPENS mission. The satellite is composed by two separate sectors: Sector A and Sector B. All the communications, both in Sector A and Sector B, use amateur radio frequencies. On August 16th 2015 the HTV5 Cargo Mission to the ISS correctly transported the SERPENS satellite to the ISS. The deployment into orbit and start of transmissions has been started September 17th 2015. The SERPENS team wants to thank all the radio amateur community for the outstanding work they are doing to help the team to receive the satellite signals. AMSAT-BR received the first signals from SERPENS, only a few hours after the launch. For more information please check: In particular, SERPENS team wants to thank the following radio amateurs: Edson PY2SDR, São Paulo, Brazil Paulo PV8DX, Roraima, Brazil Roland PY4ZBZ, Minas Gerais, Brazil Mike DK3WN, Germany Tetsu JA0CAW, Japan We invite any
radio amateur to receive the satellite telemetry and send the received data to serpens.reports@aerospace.unb.br. A description of the telemetry for
the different Sectors of the satellite and its TLE are shown below:
SERPENS TLE 1 40897U 98067GX 15265.55398127 .00040420 00000-0 59124-3 0 9991 SECTOR A Sector A transmits in VHF with frequency of 145.980 MHz, using GFSK modulation at 9600bps and standard AX.25 protocol. The callsign of the satellite is PY0ESA.
Data Description SERPENS Sector A transmit two different beacons. The first one occurs every 10 seconds with the message “SERPENS A”. This first beacon is implemented for easy identification of the satellite when searching for it. The second beacon is transmitted every 30 seconds and contains the main housekeeping data of the satellite. The telemetry beacon sends the housekeeping data organized as in the following structure:
Struct Instant_Telemetry { unsigned char telemetry_header[2]; //”@T”
unsigned long internalRTC_unix_time; //
unsigned long flash_param; //memory parameter
//temp: degC = raw*125/2000 int temp_fpga; //raw temp. measure int temp_mcu; //raw temp. measure int temp_li1; //temp. measure in degC
//L3GD20H @ 245 dps range int gyr_x; //raw gyro measure int gyr_y; //raw gyro measure int gyr_z; //raw gyro measure
//HMC5883L int mag_x; //raw mag. measure int mag_y; //raw mag. measure int mag_z; //raw mag. measure
unsigned char rssi; //radio rssi
unsigned char eps_telemetry[11]; //EPS telemetry //Battery Voltage (V) = 0.0344*eps_telemetry[1] //S. Panels Input (mA)= 2.3530*eps_telemetry[2] //Battery Current (mA)= 2.3530*eps_telemetry[3] //Systems Current (mA)= 4.7060*eps_telemetry[4] //Line 01 Current (mA)= 2.3530*eps_telemetry[8] //Line 02 Current (mA)= 2.3530*eps_telemetry[10]
unsigned char amateur_msg[5]; //payload message
unsigned char telemetry_crc; //CRC } In addition to the beacons, Sector A implements a simple storage and forward experiment. After commissioning phase of the satellite, two commands will be made available. One to upload one up to 12 bytes long message to the satellite, and another to download the current message stored onboard. SECTOR B SERPENS Sector B transmits in UHF with frequency of 437.365 MHz, using CW/MSK modulation at 1200bps and CSP protocol.
Sector B also receives data from HUMSAT compatible sensors in the frequency of 437.525 MHz, using GMSK modulation at 1200bps. For more information visit http://www.humsat.org. Data description SERPENS Sector B transmit in two different modes: Discovery Mode and User Mode. During Discovery Mode the satellite will broadcast a CW beacon, with different parameters of the satellite, and a Telemetry beacon, every 150 seconds, with all the housekeeping parameters of the satellite. All the transmissions in Discovery Mode occur only in sunlight. During User Mode the satellite will transmit data received from the HUMSAT compatible sensors stored on-board. The telemetry packages that are transmitted periodically use the following structure: Struct DiscoveryReport_0 { unsigned char[6] callsign; // "SERP-B" unsigned uint8[3] header; // uint8 id=0x18; // uint32 timestamp; // uint8 sid=0xA0; // uint16 EPS_ADC1; // Panel +Y1 current uint16 EPS_ADC2; // Panel +Y temperature uint16 EPS_ADC3; // Panel Y1 voltage uint16 EPS_ADC4; // Panel -Y1 current uint16 EPS_ADC5; // Panel -Y temperature uint16 EPS_ADC6; // Panel X voltage uint16 EPS_ADC7; // Panel -X current uint16 EPS_ADC8; // Panel -X temperature uint16 EPS_ADC13; // Panel +X current uint16 EPS_ADC14; // Panel +X temperature uint16 EPS_ADC22; // Panel +Z temperature uint8 SW_MODE; // Current operational mode unisgned uint8[2] crc; // }
Struct DiscoveryReport_1 { unsigned char[6] callsign; // "SERP-B" unsigned uint8[3] header; // uint8 id=0x18; // uint32 timestamp; // uint8 sid=0xA1; // uint16 EPS_ADC9; // Panel Y2 voltage uint16 EPS_ADC10; // Panel +Y2 current uint16 EPS_ADC17; // Unregulated bus current uint16 EPS_ADC23; // Battery temperature uint16 EPS_ADC25; // Battery voltage uint16 EPS_ADC26; // 5V bus current uint16 EPS_ADC27; // 3V3 bus current uint16 EPS_ADC28; // Battery current direction uint16 EPS_ADC29; // Battery current uint16 EPS_ADC31; // Panel -Y2 current uint16 EPS_STATUS; // EPS status uint8 SW_LAST_TC; // Last executed TC (ID) unisgned uint8[2] crc; // }
Struct DiscoveryReport_2 { unsigned char[6] callsign; // "SERP-B" unsigned uint8[3] header; // uint8 id=0x18; // uint32 timestamp; // uint8 sid=0xA2; // uint32 TTC_RX; // Total packets detected uint32 TTC_RX_ERR; // Total packets with error uint32 TTC_TX; // Total packets transmitted int16 TTC_PA_TEMP; // Last PA temperature (temp A) int16 TTC_PCB_TEMP; // Last TTC PCB temperature (temp B) int16 TTC_RSSI; // Last detected RSSI int16 TTC_RFERR; // Last detected RF error uint16 TTC_VOLTAGE; // Last battery voltage (sampled by TTC) unisgned uint8[2] crc; // }
Struct DiscoveryReport_3 { unsigned char[6] callsign; // "SERP-B" unsigned uint8[3] header; // uint8 id=0x18; // uint32 timestamp; // uint8 sid=0xA3; // uint16 TTC_CURRENT; // Last TX current uint32 TTC_BOOTCOUNT; // Total bootcount uint16 OBC_HUMPL_5V0; // HUMPL overcurrent detection uint16 OBC_HUMPL_3V3; // HUMPL overcurrent detection uint16 OBC_TTC_3V3; // TTC overcurrent detection uint16 OBC_ANT; // ANT deployment sensing uint16 OBC_REF_1V5; // OBC 1V5 voltage reference uint16 OBC_REF_3V3; // OBC 3V3 voltage reference uint16 SW_ECLIPSE_CURR; // Result from the last operation of eclipse detection uint24 SW_ERROR_PRG; // OBSW error code unisgned uint8[2] crc; // }
Struct DiscoveryReport_4 { unsigned char[6] callsign; // "SERP-B" unsigned uint8[3] header; // uint8 id=0x18; // uint32 timestamp; // uint8 sid=0xA4; // uint16 EPS_ADC19; // int32 SW_RTC_SKEW; // Difference between RTC and STE int32 SW_RTC_DIFF; // Duration of the last powerdown uint32 SW_NSDU_EXPE; // Number of SDU received by the application (expedited) uint32 SW_NSDU_PROT; // Number of SDU received by the application uint24 SW_ERROR_SUB; // Subsystem error code unisgned uint8[2] crc; // } ADDITIONAL INFO A reception software was developed by the University of Vigo, the main international partner of SERPENS project. The software requires the use Linux and GNU Radio and can be used for receiving telemetry and payload data from the satellite. You can download it here! *Observation: During implementation of the SERPENS software, the development team considered to use the callsigns: SRPNSA and SERP-B (for Sector A and Sector B, respectively), based in previous experiences. Therefore, these callsigns are embedded in the secure default radio configuration of the satellite. After interaction with our colleagues from LABRE and AMSAT-BR, the team received precise instructions on how to proceed in accordance with the regulatory process, ending with the callsign: PY0ESA. The correct callsign (PY0ESA) will be loaded to the radio configuration by command from Ground operation. However, it is possible that radio amateurs will receive some transmissions including one or both the default callsigns (SRPNSA and SERP-B), if such transmission occurs between an automatic default radio configuration reload and a Ground command to correct callsign. |