diff --git a/main.c b/main.c index e5bd1e6c..4f5ab606 100644 --- a/main.c +++ b/main.c @@ -22,7 +22,21 @@ #include "main.h" int main(int argc, char * argv[]) { + + FILE * rpitx_stop = popen("sudo systemctl stop rpitx", "r"); + pclose(rpitx_stop); + + printf("Test bus 1\n"); + fflush(stdout); + i2c_bus1 = (test_i2c_bus(1) != -1) ? ON : OFF; + printf("Test bus 3\n"); + fflush(stdout); + i2c_bus3 = (test_i2c_bus(3) != -1) ? ON : OFF; + printf("Finished testing\n"); + fflush(stdout); +// sleep(2); + FILE * rpitx_restart = popen("sudo systemctl restart rpitx", "r"); pclose(rpitx_restart); @@ -222,7 +236,7 @@ int main(int argc, char * argv[]) { if (vB4) { map[BAT] = BUS; map[BUS] = BAT; - snprintf(busStr, 10, "%d %d", test_i2c_bus(1), test_i2c_bus(0)); + snprintf(busStr, 10, "%d %d", i2c_bus1, test_i2c_bus(0)); } else if (vB5) { map[MINUS_X] = MINUS_Y; map[PLUS_Z] = MINUS_X; @@ -232,31 +246,17 @@ int main(int argc, char * argv[]) { 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", test_i2c_bus(1), test_i2c_bus(3)); + snprintf(busStr, 10, "%d %d", i2c_bus1, i2c_bus3); } } else { map[BUS] = MINUS_Z; map[BAT] = BUS; map[PLUS_Z] = BAT; map[MINUS_Z] = PLUS_Z; - snprintf(busStr, 10, "%d %d", test_i2c_bus(1), test_i2c_bus(0)); + snprintf(busStr, 10, "%d %d", i2c_bus1, test_i2c_bus(0)); voltageThreshold = 8.0; } - // test i2c buses - fflush(stdout); - //printf("Test bus 0\n"); - //fflush(stdout); - //i2c_bus0 = (test_i2c_bus(0) != -1) ? ON : OFF; - printf("Test bus 1\n"); - fflush(stdout); - i2c_bus1 = (test_i2c_bus(1) != -1) ? ON : OFF; - printf("Test bus 3\n"); - fflush(stdout); - i2c_bus3 = (test_i2c_bus(3) != -1) ? ON : OFF; - printf("Finished testing\n"); - fflush(stdout); - // check for camera // char cmdbuffer1[1000]; FILE * file4 = popen("vcgencmd get_camera", "r"); @@ -1795,7 +1795,7 @@ int test_i2c_bus(int bus) if (access(busDev, W_OK | R_OK) >= 0) { // Test if I2C Bus is present // printf("bus is present\n\n"); char result[128]; - const char command_start[] = "timeout 5 i2cdetect -y "; // was 10 + const char command_start[] = "timeout 2 i2cdetect -y "; // was 5 10 char command[50]; strcpy (command, command_start); strcat (command, busS); diff --git a/rpitx.py b/rpitx.py index 60743990..8e367608 100644 --- a/rpitx.py +++ b/rpitx.py @@ -1,8 +1,10 @@ #!/usr/bin/env python import RPi.GPIO as GPIO -import subprocess -import time +from RPi.GPIO import output +#import subprocess +#import time +from time import sleep #import os import sys from os import system @@ -40,7 +42,7 @@ else: txLedOff = 0 GPIO.setup(txLed, GPIO.OUT) -GPIO.output(txLed, txLedOff) +output(txLed, txLedOff) # print(txLedOn) print(txLed) @@ -77,16 +79,16 @@ if __name__ == "__main__": print("Can't read callsign from sim.cfg file, defaulting to AMSAT") print(callsign) - GPIO.output(txLed, txLedOn) + output(txLed, txLedOn) if (debug_mode == 1): system("echo 'hi hi de " + callsign + "' > id.txt && gen_packets -M 20 /home/pi/CubeSatSim/id.txt -o /home/pi/CubeSatSim/morse.wav -r 48000 > /dev/null 2>&1 && cat /home/pi/CubeSatSim/morse.wav | csdr convert_i16_f | csdr gain_ff 7000 | csdr convert_f_samplerf 20833 | sudo /home/pi/rpitx/rpitx -i- -m RF -f 434.9e3") else: system("echo 'hi hi de " + callsign + "' > id.txt && gen_packets -M 20 /home/pi/CubeSatSim/id.txt -o /home/pi/CubeSatSim/morse.wav -r 48000 > /dev/null 2>&1 && cat /home/pi/CubeSatSim/morse.wav | csdr convert_i16_f | csdr gain_ff 7000 | csdr convert_f_samplerf 20833 | sudo /home/pi/rpitx/rpitx -i- -m RF -f 434.9e3 > /dev/null 2>&1") - time.sleep(4); # was 8 - GPIO.output(txLed, txLedOff) + sleep(4); # was 8 + output(txLed, txLedOff) - time.sleep(1) + sleep(1) if (transmit): @@ -97,64 +99,64 @@ if __name__ == "__main__": # print("There are arguments!") if (mode == 'a'): print("AFSK") - time.sleep(5) + sleep(5) try: file = open("/home/pi/CubeSatSim/t.txt") file.close() except: system("echo '" + callsign + "-11>APCSS:hi hi 100 199 199 199 298 299 299 278 380 350 300 300 439 400 400 400 500 500 500 500 600 600 600 650' > /home/pi/CubeSatSim/t.txt && echo 'AMSAT>APCSS:010101/hi hi ' >> /home/pi/CubeSatSim/t.txt") for x in range(5): - GPIO.output(txLed, txLedOn) + output(txLed, txLedOn) if (debug_mode == 1): system("gen_packets -o /home/pi/CubeSatSim/telem.wav /home/pi/CubeSatSim/t.txt -r 48000 > /dev/null 2>&1 && cat /home/pi/CubeSatSim/telem.wav | csdr convert_i16_f | csdr gain_ff 7000 | csdr convert_f_samplerf 20833 | sudo /home/pi/rpitx/rpitx -i- -m RF -f 434.9e3") else: system("gen_packets -o /home/pi/CubeSatSim/telem.wav /home/pi/CubeSatSim/t.txt -r 48000 > /dev/null 2>&1 && cat /home/pi/CubeSatSim/telem.wav | csdr convert_i16_f | csdr gain_ff 7000 | csdr convert_f_samplerf 20833 | sudo /home/pi/rpitx/rpitx -i- -m RF -f 434.9e3 > /dev/null 2>&1") - time.sleep(0.2) - GPIO.output(txLed, txLedOff) - time.sleep(3.8) + sleep(0.2) + output(txLed, txLedOff) + sleep(3.8) while True: try: f = open("/home/pi/CubeSatSim/ready") - GPIO.output(txLed, txLedOn) + output(txLed, txLedOn) if (debug_mode == 1): system("gen_packets -o /home/pi/CubeSatSim/telem.wav /home/pi/CubeSatSim/t.txt -r 48000 > /dev/null 2>&1 && cat /home/pi/CubeSatSim/telem.wav | csdr convert_i16_f | csdr gain_ff 7000 | csdr convert_f_samplerf 20833 | sudo /home/pi/rpitx/rpitx -i- -m RF -f 434.9e3") else: system("gen_packets -o /home/pi/CubeSatSim/telem.wav /home/pi/CubeSatSim/t.txt -r 48000 > /dev/null 2>&1 && cat /home/pi/CubeSatSim/telem.wav | csdr convert_i16_f | csdr gain_ff 7000 | csdr convert_f_samplerf 20833 | sudo /home/pi/rpitx/rpitx -i- -m RF -f 434.9e3 > /dev/null 2>&1") - GPIO.output(txLed, txLedOff) + output(txLed, txLedOff) f.close() system("sudo rm ready") - time.sleep(0.5) + sleep(0.5) except: - time.sleep(0.5) + sleep(0.5) elif (mode == 'm'): print("CW") -# time.sleep(4) +# sleep(4) try: file = open("/home/pi/CubeSatSim/cw.txt") file.close() except: system("echo 'hi hi 100 199 199 199 298 299 299 278 380 350 300 300 439 400 400 400 500 500 500 500 600 600 600 650' > /home/pi/CubeSatSim/cw.txt") - GPIO.output(txLed, txLedOn) + output(txLed, txLedOn) if (debug_mode == 1): system("gen_packets -M 20 -o /home/pi/CubeSatSim/morse.wav /home/pi/CubeSatSim/cw.txt -r 48000 > /dev/null 2>&1 && cat /home/pi/CubeSatSim/morse.wav | csdr convert_i16_f | csdr gain_ff 7000 | csdr convert_f_samplerf 20833 | sudo /home/pi/rpitx/rpitx -i- -m RF -f 434.9e3") else: system("gen_packets -M 20 -o /home/pi/CubeSatSim/morse.wav /home/pi/CubeSatSim/cw.txt -r 48000 > /dev/null 2>&1 && cat /home/pi/CubeSatSim/morse.wav | csdr convert_i16_f | csdr gain_ff 7000 | csdr convert_f_samplerf 20833 | sudo /home/pi/rpitx/rpitx -i- -m RF -f 434.9e3 > /dev/null 2>&1") - GPIO.output(txLed, txLedOff) + output(txLed, txLedOff) while True: try: f = open("/home/pi/CubeSatSim/cwready") - GPIO.output(txLed, txLedOn) + output(txLed, txLedOn) if (debug_mode == 1): system("gen_packets -M 20 -o /home/pi/CubeSatSim/morse.wav /home/pi/CubeSatSim/cw.txt -r 48000 > /dev/null 2>&1 && cat /home/pi/CubeSatSim/morse.wav | csdr convert_i16_f | csdr gain_ff 7000 | csdr convert_f_samplerf 20833 | sudo /home/pi/rpitx/rpitx -i- -m RF -f 434.9e3") else: system("gen_packets -M 20 -o /home/pi/CubeSatSim/morse.wav /home/pi/CubeSatSim/cw.txt -r 48000 > /dev/null 2>&1 && cat /home/pi/CubeSatSim/morse.wav | csdr convert_i16_f | csdr gain_ff 7000 | csdr convert_f_samplerf 20833 | sudo /home/pi/rpitx/rpitx -i- -m RF -f 434.9e3 > /dev/null 2>&1") - GPIO.output(txLed, txLedOff) + output(txLed, txLedOff) f.close() system("sudo rm cwready") - time.sleep(1) + sleep(1) except: - time.sleep(1) + sleep(1) elif (mode == 's'): print("SSTV") try: @@ -170,20 +172,20 @@ if __name__ == "__main__": camera_present = 0 # while 1: - GPIO.output(txLed, txLedOff) + output(txLed, txLedOff) if (camera_present == 1): try: file = open("/home/pi/CubeSatSim/sstv_image_2_320_x_256.jpg") print("First SSTV stored image detected") system("/home/pi/PiSSTVpp/pisstvpp -r 48000 -p s2 /home/pi/CubeSatSim/sstv_image_2_320_x_256.jpg") print ("Sending SSTV image") - GPIO.output(txLed, txLedOn) + output(txLed, txLedOn) if (debug_mode == 1): system("cat /home/pi/CubeSatSim/sstv_image_2_320_x_256.jpg.wav | csdr convert_i16_f | csdr gain_ff 14000 | csdr convert_f_samplerf 20833 | sudo rpitx -i- -m RF -f 434.9e3") else: system("cat /home/pi/CubeSatSim/sstv_image_2_320_x_256.jpg.wav | csdr convert_i16_f | csdr gain_ff 14000 | csdr convert_f_samplerf 20833 | sudo rpitx -i- -m RF -f 434.9e3 > /dev/null 2>&1") - GPIO.output(txLed, txLedOff) - # time.sleep(1) + output(txLed, txLedOff) + # sleep(1) except: print("image 2 did not load - copy from CubeSatSim/sstv directory") while 1: @@ -191,26 +193,26 @@ if __name__ == "__main__": print("Photo taken") system("/home/pi/PiSSTVpp/pisstvpp -r 48000 -p s2 /home/pi/CubeSatSim/camera_out.jpg") print ("Sending SSTV image") - GPIO.output(txLed, txLedOn) + output(txLed, txLedOn) if (debug_mode == 1): system("cat /home/pi/CubeSatSim/camera_out.jpg.wav | csdr convert_i16_f | csdr gain_ff 14000 | csdr convert_f_samplerf 20833 | sudo rpitx -i- -m RF -f 434.9e3") else: system("cat /home/pi/CubeSatSim/camera_out.jpg.wav | csdr convert_i16_f | csdr gain_ff 14000 | csdr convert_f_samplerf 20833 | sudo rpitx -i- -m RF -f 434.9e3 > /dev/null 2>&1") - GPIO.output(txLed, txLedOff) - time.sleep(1) + output(txLed, txLedOff) + sleep(1) else: try: file = open("/home/pi/CubeSatSim/sstv_image_1_320_x_256.jpg") print("First SSTV stored image detected") system("/home/pi/PiSSTVpp/pisstvpp -r 48000 -p s2 /home/pi/CubeSatSim/sstv_image_1_320_x_256.jpg") print ("Sending SSTV image") - GPIO.output(txLed, txLedOn) + output(txLed, txLedOn) if (debug_mode == 1): system("cat /home/pi/CubeSatSim/sstv_image_1_320_x_256.jpg.wav | csdr convert_i16_f | csdr gain_ff 14000 | csdr convert_f_samplerf 20833 | sudo rpitx -i- -m RF -f 434.9e3") else: system("cat /home/pi/CubeSatSim/sstv_image_1_320_x_256.jpg.wav | csdr convert_i16_f | csdr gain_ff 14000 | csdr convert_f_samplerf 20833 | sudo rpitx -i- -m RF -f 434.9e3 > /dev/null 2>&1") - GPIO.output(txLed, txLedOff) - time.sleep(1) + output(txLed, txLedOff) + sleep(1) except: print("image 1 did not load - copy from CubeSatSim/sstv directory") try: @@ -219,40 +221,40 @@ if __name__ == "__main__": system("/home/pi/PiSSTVpp/pisstvpp -r 48000 -p s2 /home/pi/CubeSatSim/sstv_image_2_320_x_256.jpg") while 1: print ("Sending SSTV image") - GPIO.output(txLed, txLedOn) + output(txLed, txLedOn) if (debug_mode == 1): system("cat /home/pi/CubeSatSim/sstv_image_2_320_x_256.jpg.wav | csdr convert_i16_f | csdr gain_ff 14000 | csdr convert_f_samplerf 20833 | sudo rpitx -i- -m RF -f 434.9e3") else: system("cat /home/pi/CubeSatSim/sstv_image_2_320_x_256.jpg.wav | csdr convert_i16_f | csdr gain_ff 14000 | csdr convert_f_samplerf 20833 | sudo rpitx -i- -m RF -f 434.9e3 > /dev/null 2>&1") - GPIO.output(txLed, txLedOff) - time.sleep(5) + output(txLed, txLedOff) + sleep(5) except: print("image 2 did not load - copy from CubeSatSim/sstv directory") system("(while true; do (sleep 5 && cat /home/pi/CubeSatSim/wav/sstv.wav); done) | csdr convert_i16_f | csdr gain_ff 7000 | csdr convert_f_samplerf 20833 | sudo rpitx -i- -m RF -f 434.9e3 &") while 1: - GPIO.output(txLed, txLedOn) - time.sleep(60) - GPIO.output(txLed, txLedOff) - time.sleep(1) + output(txLed, txLedOn) + sleep(60) + output(txLed, txLedOff) + sleep(1) elif (mode == 'b'): print("BPSK") system("sudo nc -l 8080 | csdr convert_i16_f | csdr fir_interpolate_cc 2 | csdr dsb_fc | csdr bandpass_fir_fft_cc 0.002 0.06 0.01 | csdr fastagc_ff | sudo /home/pi/rpitx/sendiq -i /dev/stdin -s 96000 -f 434.9e6 -t float &") print("Turning LED on/off") while 1: - GPIO.output(txLed, txLedOff) - time.sleep(0.5) - GPIO.output(txLed, txLedOn) - time.sleep(4.0) + output(txLed, txLedOff) + sleep(0.5) + output(txLed, txLedOn) + sleep(4.0) else: print("FSK") system("sudo nc -l 8080 | csdr convert_i16_f | csdr gain_ff 7000 | csdr convert_f_samplerf 20833 | sudo /home/pi/rpitx/rpitx -i- -m RF -f 434.9e3 &") print("Turning LED on/off") while 1: - GPIO.output(txLed, txLedOff) - time.sleep(0.5) - GPIO.output(txLed, txLedOn) - time.sleep(4.0) + output(txLed, txLedOff) + sleep(0.5) + output(txLed, txLedOn) + sleep(4.0) # else: # print("FSK") # system("sudo nc -l 8080 | csdr convert_i16_f | csdr gain_ff 7000 | csdr convert_f_samplerf 20833 | sudo /home/pi/rpitx/rpitx -i- -m RF -f 434.9e3") @@ -260,4 +262,4 @@ if __name__ == "__main__": else: print("No Band Pass Filter so no telemetry transmit. See http://cubesatsim.org/wiki for instructions on how to build the BPF.") while 1: - time.sleep(5) + sleep(5)