Merge pull request #384 from alanbjohnston/sim-fail-3

Sim mode failure improvements
pull/395/head
Alan Johnston 4 months ago committed by GitHub
commit facd8bfc99
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

103
config

@ -210,7 +210,8 @@ function transmit_command_beacon {
exit
}
echo "CubeSatSim v2.1 configuration tool"
echo
echo "CubeSatSim v2.2 configuration tool"
echo
# echo $1
# echo $2
@ -222,8 +223,13 @@ sudo modprobe snd-aloop
if [ -z "$2" ] ; then
noreboot=0
else
noreboot=1
if [ "$2" = "n" ] ; then
echo "Reboot disabled"
noreboot=1
else
fail=$2
fi
fi
# echo "No reboot"
@ -278,7 +284,7 @@ if [ "$1" = "" ]; then
FILE=/home/pi/CubeSatSim/failure_mode.txt
if [ -f "$FILE" ]; then
if [[ $(grep '0' $FILE) ]]; then
if [[ $(grep "\-1" $FILE) ]]; then
echo "No simulated failure"
else
fail=$(<$FILE)
@ -314,6 +320,9 @@ if [ "$1" = "" ]; then
9)
echo "Failed MPU Sensor"
;;
# "10")
# echo "Failed FM Audio"
# ;;
*)
echo "Unknown Failure"
;;
@ -1481,8 +1490,60 @@ elif [ "$1" = "-j" ]; then
elif [ "$1" = "-M" ]; then
# echo
echo "Set simulated failure mode"
if [ $fail ]; then
MODE=$fail
else
FILE=/home/pi/CubeSatSim/failure_mode.txt
if [ -f "$FILE" ]; then
if [[ $(grep "\-1" $FILE) ]]; then
echo "Currently, no simulated failure"
else
fail=$(<$FILE)
echo -n "Currently, simulated "
case $fail in
1)
echo "+X Solar Panel Failure"
;;
2)
echo "-X Solar Panel Degredation"
;;
3)
echo "-Y Solar Panel Short Circuit"
;;
4)
echo "Failed I2C Bus 1"
;;
5)
echo "Failed I2C Bus 3"
;;
6)
echo "Failed Camera"
;;
7)
echo "Failed Payload"
;;
8)
echo "Failed BME Sensor"
;;
9)
echo "Failed MPU Sensor"
;;
# "10")
# echo "Failed FM Audio"
# ;;
*)
echo "Unknown Failure"
;;
esac
fi
else
echo "Currently, no simulated failure"
fi
echo
echo "Set simulated failure mode (or Return to turn OFF)"
echo
echo " 0 No Failure (turn OFF)"
@ -1495,48 +1556,54 @@ elif [ "$1" = "-M" ]; then
echo " 7 Failed Payload"
echo " 8 Failed BME Sensor"
echo " 9 Failed MPU Sensor"
# echo "10 Failed FM Audio"
echo
# echo "Enter the failure number to set: 0 - 10" # 10 sometimes gets stuck on carrier
echo "Enter the failure number to set: 0 - 9"
read MODE
echo
fi
if [ "$MODE" = "0" ]; then
echo "Setting No Simulated Failure"
MODE=-1
else
echo -n "Setting Simulated "
case $MODE in
1)
echo "+X Solar Panel Failure"
echo "Setting Simulated +X Solar Panel Failure"
;;
2)
echo "-X Solar Panel Degredation"
echo "Setting Simulated -X Solar Panel Degredation"
;;
3)
echo "-Y Solar Panel Short Circuit"
echo "Setting Simulated -Y Solar Panel Short Circuit"
;;
4)
echo "Failed I2C Bus 1"
echo "Setting Simulated Failed I2C Bus 1"
;;
5)
echo "Failed I2C Bus 3"
echo "Setting Simulated Failed I2C Bus 3"
;;
6)
echo "Failed Camera"
echo "Setting Simulated Failed Camera"
;;
7)
echo "Failed Payload"
echo "Setting Simulated Failed Payload"
;;
8)
echo "Failed BME Sensor"
echo "Setting Simulated Failed BME Sensor"
;;
9)
echo "Failed MPU Sensor"
echo "Setting Simulated Failed MPU Sensor"
;;
# "10")
# echo "Setting Failed FM Audio"
# ;;
*)
echo "Unknown Failure"
echo "Setting No Simulated Failure"
MODE=-1
;;
esac
fi

@ -1,6 +1,6 @@
#!/bin/bash
echo -e "\ninstallation script for CubeSatSim v2.1\n"
echo -e "\ninstallation script for CubeSatSim v2.2\n"
FILE=/home/pi/CubeSatSim/sim.cfg
if [ -f "$FILE" ]; then

147
main.c

@ -25,7 +25,7 @@
int main(int argc, char * argv[]) {
printf("\n\nCubeSatSim v2.1 starting...\n\n");
printf("\n\nCubeSatSim v2.2 starting...\n\n");
wiringPiSetup();
@ -276,7 +276,6 @@ int main(int argc, char * argv[]) {
txLed = 2;
txLedOn = HIGH;
txLedOff = LOW;
vB5 = TRUE;
onLed = 27;
onLedOn = HIGH;
onLedOff = LOW;
@ -295,12 +294,17 @@ int main(int argc, char * argv[]) {
fclose(config_file);
config_file = fopen("sim.cfg", "r");
map[BAT2] = MINUS_Z;
map[BAT] = BAT2;
map[PLUS_Z] = BAT;
map[MINUS_Z] = PLUS_Z;
snprintf(busStr, 10, "%d %d", i2c_bus1, test_i2c_bus(0));
voltageThreshold = 8.0;
map[MINUS_X] = MINUS_Y;
map[PLUS_Z] = MINUS_X;
map[MINUS_Y] = PLUS_Z;
if (access("/dev/i2c-11", W_OK | R_OK) >= 0) { // Test if I2C Bus 11 is present
printf("/dev/i2c-11 is present\n\n");
snprintf(busStr, 10, "%d %d", test_i2c_bus(1), test_i2c_bus(11));
} else {
snprintf(busStr, 10, "%d %d", i2c_bus1, i2c_bus3);
}
// check for camera
// char cmdbuffer1[1000];
@ -551,16 +555,17 @@ int main(int argc, char * argv[]) {
if (sim_mode) {
if (loop % 10 == 0) {
failureMode = (int) rnd_float(1, FAIL_COUNT);
// failureMode = (int) rnd_float(1, FAIL_COUNT);
failureMode = (int) rnd_float(1, 9);
printf("Sim Mode Random Failure Change\n");
FILE * failure_mode_file = fopen("/home/pi/CubeSatSim/failure_mode.txt", "w");
fprintf(failure_mode_file, "%d", failureMode);
fclose(failure_mode_file);
}
}
else
{
failureMode = OFF;
// else
// {
// failureMode = OFF;
FILE * failure_mode_file = fopen("/home/pi/CubeSatSim/failure_mode.txt", "r");
if (failure_mode_file != NULL) {
char failure_string[10];
@ -571,9 +576,9 @@ int main(int argc, char * argv[]) {
}
} else {
failureMode = FAIL_NONE;
printf("No simulated failure.");
}
printf("No simulated failure.\n");
}
// }
{
int count1;
@ -659,7 +664,7 @@ int main(int argc, char * argv[]) {
if ((sensor_payload[0] == 'O') && (sensor_payload[1] == 'K')) // only process if valid payload response
{
printf("Valid Payload!\n");
// printf("Valid Payload!\n");
int count1;
char * token;
@ -748,7 +753,7 @@ int main(int argc, char * argv[]) {
strcpy(sensor_payload, buffer2); // restore sensor_payload after strtok operation
if ((sensor_payload[0] == 'O') && (sensor_payload[1] == 'K')) {
printf("Valid Payload!!\n");
// printf("Valid Payload!!\n");
for (int count1 = 0; count1 < SENSOR_FIELDS; count1++) {
if (sensor[count1] < sensor_min[count1])
sensor_min[count1] = sensor[count1];
@ -825,8 +830,7 @@ int main(int argc, char * argv[]) {
// end of simulated telemetry
}
else {
}
FILE * cpuTempSensor = fopen("/sys/class/thermal/thermal_zone0/temp", "r");
if (cpuTempSensor) {
// double cpuTemp;
@ -1210,6 +1214,7 @@ void get_tlm_fox() {
int i;
long int sync = syncWord;
int cam = ON;
smaller = (int) (S_RATE / (2 * freq_Hz));
@ -1255,8 +1260,8 @@ void get_tlm_fox() {
printf("+X Solar Simulated Failure\n");
}
if (failureMode == FAIL_DEGRADE) {
voltage[map[MINUS_X]] = voltage[MINUS_X] * 0.5;
current[map[MINUS_X]] = current[MINUS_X] * 0.5;
voltage[map[MINUS_X]] = voltage[map[MINUS_X]] * 0.5;
current[map[MINUS_X]] = current[map[MINUS_X]] * 0.5;
printf("-X Solar Deg Simulated Failure\n");
}
if (failureMode == FAIL_SHORT) {
@ -1285,14 +1290,14 @@ void get_tlm_fox() {
current[map[PLUS_Z]] = 0.0;
printf("I2C Bus 3 Simulated Failure!\n");
}
if (failureMode == FAIL_CAMERA) {
camera = OFF;
printf("Camera Simulated Failure!\n");
}
if (failureMode == FAIL_PAYLOAD) {
payload = OFF;
printf("Payload Simulated Failure!\n");
}
if (failureMode == FAIL_CAMERA) {
cam = OFF;
printf("Camera Simulated Failure!\n");
}
if (mode == FSK)
id = 7;
@ -1434,23 +1439,12 @@ void get_tlm_fox() {
// encodeB(b, 1 + head_offset, batt_b_v);
encodeA(b, 3 + head_offset, batt_c_v);
if ((failureMode == FAIL_MPU) || (failureMode == FAIL_PAYLOAD))
{
encodeB(b, 4 + head_offset, 2048); // 0
encodeA(b, 6 + head_offset, 2048); // 0
encodeB(b, 7 + head_offset, 2048); // 0
}
else
{
encodeB(b, 4 + head_offset, (int)(sensor[ACCEL_X] * 100 + 0.5) + 2048); // Xaccel
encodeA(b, 6 + head_offset, (int)(sensor[ACCEL_Y] * 100 + 0.5) + 2048); // Yaccel
encodeB(b, 7 + head_offset, (int)(sensor[ACCEL_Z] * 100 + 0.5) + 2048); // Zaccel
}
encodeA(b, 9 + head_offset, battCurr);
if ((failureMode != FAIL_PAYLOAD) && (failureMode != FAIL_BME))
encodeB(b, 10 + head_offset, (int)(sensor[TEMP] * 10 + 0.5)); // Temp
if (mode == FSK) {
@ -1506,33 +1500,21 @@ void get_tlm_fox() {
encodeA(b_max, 39 + head_offset, (int)(other_max[IHU_TEMP] * 10 + 0.5));
encodeB(b_max, 31 + head_offset, ((int)(other_max[SPIN] * 10)) + 2048);
if (failureMode != FAIL_PAYLOAD) {
if (sensor_min[TEMP] != 1000.0) // make sure values are valid
{
if (failureMode != FAIL_MPU) {
encodeB(b_max, 4 + head_offset, (int)(sensor_max[ACCEL_X] * 100 + 0.5) + 2048); // Xaccel
encodeA(b_max, 6 + head_offset, (int)(sensor_max[ACCEL_Y] * 100 + 0.5) + 2048); // Yaccel
encodeB(b_max, 7 + head_offset, (int)(sensor_max[ACCEL_Z] * 100 + 0.5) + 2048); // Zaccel
encodeB(b_max, 40 + head_offset, (int)(sensor_max[GYRO_X] + 0.5) + 2048);
encodeA(b_max, 42 + head_offset, (int)(sensor_max[GYRO_Y] + 0.5) + 2048);
encodeB(b_max, 43 + head_offset, (int)(sensor_max[GYRO_Z] + 0.5) + 2048);
}
else
{
encodeB(b_max, 4 + head_offset, 2048); // 0
encodeA(b_max, 6 + head_offset, 2048); // 0
encodeB(b_max, 7 + head_offset, 2048); // 0
encodeB(b_max, 40 + head_offset, 2048);
encodeA(b_max, 42 + head_offset, 2048);
encodeB(b_max, 43 + head_offset, 2048);
}
if (failureMode != FAIL_BME) {
encodeA(b_max, 33 + head_offset, (int)(sensor_max[PRES] + 0.5)); // Pressure
encodeB(b_max, 34 + head_offset, (int)(sensor_max[ALT] * 10.0 + 0.5)); // Altitude
// encodeB(b_max, 49 + head_offset, (int)(sensor_max[XS1] * 10 + 0.5) + 2048);
encodeB(b_max, 10 + head_offset, (int)(sensor_max[TEMP] * 10 + 0.5));
encodeA(b_max, 45 + head_offset, (int)(sensor_max[HUMI] * 10 + 0.5));
}
encodeA(b_max, 48 + head_offset, (int)(sensor_max[DTEMP] * 10 + 0.5) + 2048);
encodeB(b_max, 49 + head_offset, (int)(sensor_max[XS1]));
@ -1551,17 +1533,7 @@ void get_tlm_fox() {
encodeA(b_max, 48 + head_offset, 2048);
// encodeB(b_max, 49 + head_offset, 2048);
}
}
else
{
encodeB(b_max, 4 + head_offset, 2048); // 0
encodeA(b_max, 6 + head_offset, 2048); // 0
encodeB(b_max, 7 + head_offset, 2048); // 0
encodeB(b_max, 40 + head_offset, 2048);
encodeA(b_max, 42 + head_offset, 2048);
encodeB(b_max, 43 + head_offset, 2048);
encodeA(b_max, 48 + head_offset, 2048);
}
encodeA(b_min, 12 + head_offset, (int)(voltage_min[map[PLUS_X]] * 100));
encodeB(b_min, 13 + head_offset, (int)(voltage_min[map[PLUS_Y]] * 100));
encodeA(b_min, 15 + head_offset, (int)(voltage_min[map[PLUS_Z]] * 100));
@ -1585,10 +1557,7 @@ void get_tlm_fox() {
encodeB(b_min, 37 + head_offset, (int)(other_min[RSSI] + 0.5) + 2048);
encodeA(b_min, 39 + head_offset, (int)(other_min[IHU_TEMP] * 10 + 0.5));
if (failureMode != FAIL_PAYLOAD) {
if (sensor_min[TEMP] != 1000.0) // make sure values are valid
{
if (failureMode != FAIL_MPU)
{
encodeB(b_min, 4 + head_offset, (int)(sensor_min[ACCEL_X] * 100 + 0.5) + 2048); // Xaccel
encodeA(b_min, 6 + head_offset, (int)(sensor_min[ACCEL_Y] * 100 + 0.5) + 2048); // Yaccel
@ -1596,22 +1565,11 @@ void get_tlm_fox() {
encodeB(b_min, 40 + head_offset, (int)(sensor_min[GYRO_X] + 0.5) + 2048);
encodeA(b_min, 42 + head_offset, (int)(sensor_min[GYRO_Y] + 0.5) + 2048);
encodeB(b_min, 43 + head_offset, (int)(sensor_min[GYRO_Z] + 0.5) + 2048);
}
else
{
encodeB(b_min, 4 + head_offset, 2048); // 0
encodeA(b_min, 6 + head_offset, 2048); // 0
encodeB(b_min, 7 + head_offset, 2048); // 0
encodeB(b_min, 40 + head_offset, 2048);
encodeA(b_min, 42 + head_offset, 2048);
encodeB(b_min, 43 + head_offset, 2048);
}
if (failureMode != FAIL_BME) {
encodeA(b_min, 33 + head_offset, (int)(sensor_min[PRES] + 0.5)); // Pressure
encodeB(b_min, 34 + head_offset, (int)(sensor_min[ALT] * 10.0 + 0.5)); // Altitude
encodeB(b_min, 10 + head_offset, (int)(sensor_min[TEMP] * 10 + 0.5));
encodeA(b_min, 45 + head_offset, (int)(sensor_min[HUMI] * 10 + 0.5));
}
encodeA(b_min, 48 + head_offset, (int)(sensor_min[DTEMP] * 10 + 0.5) + 2048);
// encodeB(b_min, 49 + head_offset, (int)(sensor_min[XS1] * 10 + 0.5) + 2048);
@ -1633,64 +1591,29 @@ void get_tlm_fox() {
encodeA(b_min, 48 + head_offset, 2048);
// encodeB(b_min, 49 + head_offset, 2048);
}
}
else
{
encodeB(b_min, 4 + head_offset, 2048); // 0
encodeA(b_min, 6 + head_offset, 2048); // 0
encodeB(b_min, 7 + head_offset, 2048); // 0
encodeB(b_min, 40 + head_offset, 2048);
encodeA(b_min, 42 + head_offset, 2048);
encodeB(b_min, 43 + head_offset, 2048);
encodeA(b_min, 48 + head_offset, 2048);
}
}
encodeA(b, 30 + head_offset, BAT2Voltage);
encodeB(b, 31 + head_offset, ((int)(other[SPIN] * 10)) + 2048);
if (failureMode != FAIL_PAYLOAD) {
if (failureMode != FAIL_BME) {
encodeA(b, 33 + head_offset, (int)(sensor[PRES] + 0.5)); // Pressure
encodeB(b, 34 + head_offset, (int)(sensor[ALT] * 10.0 + 0.5)); // Altitude
encodeA(b, 45 + head_offset, (int)(sensor[HUMI] * 10 + 0.5)); // in place of sensor1
encodeA(b, 39 + head_offset, (int)(other[TEMP] * 10 + 0.5));
}
encodeA(b, 36 + head_offset, Resets);
encodeB(b, 37 + head_offset, (int)(other[RSSI] + 0.5) + 2048);
if (failureMode != FAIL_MPU) {
encodeB(b, 40 + head_offset, (int)(sensor[GYRO_X] + 0.5) + 2048);
encodeA(b, 42 + head_offset, (int)(sensor[GYRO_Y] + 0.5) + 2048);
encodeB(b, 43 + head_offset, (int)(sensor[GYRO_Z] + 0.5) + 2048);
}
else
{
encodeB(b, 40 + head_offset, 2048);
encodeA(b, 42 + head_offset, 2048);
encodeB(b, 43 + head_offset, 2048);
}
encodeA(b, 48 + head_offset, (int)(sensor[DTEMP] * 10 + 0.5) + 2048);
encodeB(b, 49 + head_offset, (int)(sensor[XS1]));
encodeA(b, 0 + head_offset, (int)(sensor[XS2]));
encodeB(b, 1 + head_offset, (int)(sensor[XS3]));
}
else
{
encodeB(b, 4 + head_offset, 2048); // 0
encodeA(b, 6 + head_offset, 2048); // 0
encodeB(b, 7 + head_offset, 2048); // 0
encodeB(b, 40 + head_offset, 2048);
encodeA(b, 42 + head_offset, 2048);
encodeB(b, 43 + head_offset, 2048);
encodeA(b, 48 + head_offset, 2048);
// encodeB(b_min, 49 + head_offset, 2048);
}
encodeB(b, 46 + head_offset, BAT2Current);
encodeA(b, 39 + head_offset, (int)(other[IHU_TEMP] * 10 + 0.5));
@ -1727,7 +1650,7 @@ void get_tlm_fox() {
// int status = STEMBoardFailure + SafeMode * 2 + sim_mode * 4 + PayloadFailure1 * 8 +
// (i2c_bus0 == OFF) * 16 + (i2c_bus1 == OFF) * 32 + (i2c_bus3 == OFF) * 64 + (camera == OFF) * 128 + groundCommandCount * 256;
int status = STEMBoardFailure + SafeMode * 2 + simulated * 4 + PayloadFailure1 * 8 +
(i2c_bus0 == OFF) * 16 + (i2c_1 == OFF) * 32 + (i2c_3 == OFF) * 64 + (camera == OFF) * 128 + groundCommandCount * 256;
(i2c_bus0 == OFF) * 16 + (i2c_1 == OFF) * 32 + (i2c_3 == OFF) * 64 + (cam == OFF) * 128 + groundCommandCount * 256;
encodeA(b, 51 + head_offset, status);
encodeB(b, 52 + head_offset, rxAntennaDeployed + txAntennaDeployed * 2 + c2cStatus * 4);

@ -122,7 +122,7 @@ FILE *image_file;
#define TXCOMMAND 12
#define FAIL_COUNT 10
#define FAIL_NONE 0
#define FAIL_NONE -1
#define FAIL_SOLAR 1
#define FAIL_DEGRADE 2
#define FAIL_SHORT 3
@ -169,7 +169,7 @@ float sleepTime;
unsigned int sampleTime = 0;
int frames_sent = 0;
int cw_id = ON;
int vB4 = FALSE, vB5 = FALSE, vB3 = FALSE, transmit = FALSE, onLed, onLedOn, onLedOff, txLed, txLedOn, txLedOff, payload = OFF;
int transmit = FALSE, onLed, onLedOn, onLedOff, txLed, txLedOn, txLedOff, payload = OFF;
// float voltageThreshold = 3.6, batteryVoltage = 4.5, batteryCurrent = 0, currentThreshold = 100;
float voltageThreshold = 3.5, batteryVoltage = 4.5, batteryCurrent = 0, currentThreshold = 100;
float latitude = 39.027702f, longitude = -77.078064f;

@ -15,7 +15,7 @@ int main(int argc, char *argv[]) {
}
}
printf("CubeSatSim v2.1 INA219 Voltage and Current Telemetry\n");
printf("CubeSatSim v2.2 INA219 Voltage and Current Telemetry\n");
map[MINUS_X] = MINUS_Y;
map[PLUS_Z] = MINUS_X;
map[MINUS_Y] = PLUS_Z;

@ -12,6 +12,30 @@ from PIL import Image, ImageDraw, ImageFont, ImageColor
import serial
import random
def sim_failure_check():
try:
global card
global cam_fail
cam_fail = False
file = open("/home/pi/CubeSatSim/failure_mode.txt")
fail_mode = int(file.read(2))
# print("Fail_mode: ")
# print(fail_mode)
if (fail_mode == 10):
card = "Device" # Change audio so no FM audio plays
print("Failure mode no FM audio")
elif (fail_mode == 6):
cam_fail = True
print("Failure mode camera fail")
elif (fail_mode == 0):
print("No failure mode")
else:
print("Other failure mode")
card = "Headphones"
except:
print("No failure mode")
card = "Headphones"
def battery_saver_check():
try:
global txc
@ -95,6 +119,8 @@ def increment_mode():
print("can't write to .mode file")
def camera_photo():
global cam_fail
sim_failure_check()
system("sudo rm /home/pi/CubeSatSim/camera_out.jpg")
stored_image = False
try:
@ -102,6 +128,10 @@ def camera_photo():
f = open("/home/pi/CubeSatSim/camera_out.jpg")
f.close()
print("Photo taken")
if (cam_fail == True):
system("cp /home/pi/CubeSatSim/sstv//sstv_image_2_320_x_256.jpeg /home/pi/CubeSatSim/camera_out.jpg")
print("Using stored image")
stored_image = True
except:
system("cp /home/pi/CubeSatSim/sstv//sstv_image_2_320_x_256.jpeg /home/pi/CubeSatSim/camera_out.jpg")
print("Using stored image")
@ -130,7 +160,7 @@ def camera_photo():
draw.text((120, 10), telem_string, font=font2, fill='white')
img.save(file)
print("CubeSatSim v2.1 transmit.py starting...")
print("CubeSatSim v2.2 transmit.py starting...")
pd = 21
ptt = 20
@ -446,6 +476,7 @@ if __name__ == "__main__":
#
# battery_saver_check()
if (txc):
sim_failure_check()
# output(pd, 1)
sleep(0.1) # add delay before transmit
output (ptt, 0)
@ -472,16 +503,7 @@ if __name__ == "__main__":
print("Ready for next packet!")
sleep(0.5)
try:
file = open("/home/pi/CubeSatSim/failure_mode.txt")
fail_mode = file.read(2)
if (fail_mode == "10"):
card = "Device" # Change audio so no FM audio plays
print("Failure mode no FM audio")
else:
print("Other failure mode")
except:
print("No failure mode")
except:
# command_control_check()
sleep(1)
@ -508,6 +530,7 @@ if __name__ == "__main__":
output(txLed, txLedOn)
if (txc):
sim_failure_check()
# output (pd, 1)
sleep(0.3)
output (ptt, 0)
@ -569,6 +592,7 @@ if __name__ == "__main__":
# battery_saver_check()
if (txc):
sim_failure_check()
# output(pd, 1)
output (ptt, 0)
system("aplay -D plughw:CARD=" + card + ",DEV=0 /home/pi/CubeSatSim/sstv_image_2_320_x_256.jpg.wav")
@ -588,34 +612,6 @@ if __name__ == "__main__":
while 1:
# command_control_check()
camera_photo()
## system("raspistill -o /home/pi/CubeSatSim/camera_out.jpg -w 320 -h 256") # > /dev/null 2>&1")
## print("Photo taken")
##
## file='/home/pi/CubeSatSim/camera_out.jpg'
## font1 = ImageFont.truetype('DejaVuSerif.ttf', 20)
## font2 = ImageFont.truetype('DejaVuSerif-Bold.ttf', 16)
##
## try:
## filep = open("/home/pi/CubeSatSim/telem_string.txt")
## telem_string = filep.readline()
## except:
## telem_string = ""
## if (debug_mode == 1):
## print("Can't read telem_string.txt")
## print(telem_string)
##
## img = Image.open(file)
## draw = ImageDraw.Draw(img)
# draw.text((10, 10), callsign, font=font2, fill='white')
# draw.text((120, 10), telem_string, font=font2, fill='white')
## draw.text((12, 12), callsign, font=font1, fill='black')
## draw.text((10, 10), callsign, font=font1, fill='white')
## draw.text((122, 12), telem_string, font=font2, fill='black')
## draw.text((120, 10), telem_string, font=font2, fill='white')
## img.save(file)
# command_control_check()
system("/home/pi/PiSSTVpp/pisstvpp -r 48000 -p s2 /home/pi/CubeSatSim/camera_out.jpg")
system("sudo rm /home/pi/CubeSatSim/camera_out.jpg > /dev/null 2>&1")
@ -629,6 +625,7 @@ if __name__ == "__main__":
# battery_saver_check()
if (txc):
sim_failure_check()
# output(pd, 1)
output (ptt, 0)
system("aplay -D plughw:CARD=" + card + ",DEV=0 /home/pi/CubeSatSim/camera_out.jpg.wav")
@ -666,6 +663,7 @@ if __name__ == "__main__":
# battery_saver_check()
if (txc):
sim_failure_check()
# output(pd, 1)
output (ptt, 0)
system("aplay -D plughw:CARD=" + card + ",DEV=0 /home/pi/CubeSatSim/sstv_image_1_320_x_256.jpg.wav")
@ -702,6 +700,7 @@ if __name__ == "__main__":
# battery_saver_check()
if (txc):
sim_failure_check()
# output(pd, 1)
output (ptt, 0)
system("aplay -D plughw:CARD=" + card + ",DEV=0 /home/pi/CubeSatSim/sstv_image_1_320_x_256.jpg.wav")
@ -733,6 +732,7 @@ if __name__ == "__main__":
# battery_saver_check()
if (txc):
sim_failure_check()
# output(pd, 1)
output (ptt, 0)
system("aplay -D plughw:CARD=" + card + ",DEV=0 /home/pi/CubeSatSim/sstv.wav")

Loading…
Cancel
Save

Powered by TurnKey Linux.