diff --git a/rpitx.py b/rpitx.py index 86a628e7..bbb87c06 100644 --- a/rpitx.py +++ b/rpitx.py @@ -3,79 +3,114 @@ import RPi.GPIO as GPIO import subprocess import time -import os +#import os import sys +from os import system GPIO.setmode(GPIO.BCM) GPIO.setwarnings(False) -GPIO.setup(27, GPIO.IN, pull_up_down=GPIO.PUD_UP) +GPIO.setup(22, GPIO.IN, pull_up_down=GPIO.PUD_UP) GPIO.setup(12, GPIO.IN, pull_up_down=GPIO.PUD_UP) transmit = False if GPIO.input(12) == False: transmit = True -if GPIO.input(27) == False: +if GPIO.input(22) == False: transmit = True - txLed = 22 - txLedOn = False - txLedOff = True + txLed = 27 + txLedOn = 0 + txLedOff = 1 else: txLed = 27 - txLedOn = True - txLedOff = False + txLedOn = 1 + txLedOff = 0 GPIO.setup(txLed, GPIO.OUT) - +print(txLedOn) +print(txLed) +GPIO.setup(27, GPIO.OUT) +GPIO.output(27, 0) + print(transmit) file = open("/home/pi/CubeSatSim/sim.cfg") callsign = file.readline().split(" ")[0] print(callsign) +#GPIO.output(27, 1); GPIO.output(txLed, txLedOn); -os.system("echo 'de " + callsign + "' > id.txt && gen_packets -M 20 id.txt -o morse.wav -r 48000 > /dev/null 2>&1 && cat 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") +system("echo 'de " + callsign + "' > id.txt && gen_packets -M 20 id.txt -o morse.wav -r 48000 > /dev/null 2>&1 && cat 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") +#GPIO.output(27, 0); GPIO.output(txLed, txLedOff); time.sleep(2) if __name__ == "__main__": - if (transmit): + if (transmit): - print 'Length: ', len(sys.argv) +# print 'Length: ', len(sys.argv) - if (len(sys.argv)) > 1: -# print("There are arguments!") - if (('a' == sys.argv[1]) or ('afsk' in sys.argv[1])): - print("AFSK") - while True: - try: - f = open("ready") - os.system("gen_packets -o telem.wav t.txt -r 48000 > /dev/null 2>&1 && cat 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") - os.system("rm ready") - time.sleep(0.5) - except: - time.sleep(0.5) - elif (('s' == sys.argv[1]) or ('sstv' in sys.argv[1])): - print("SSTV") - GPIO.output(txLed, txLedOn); - os.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 True: -# GPIO.output(txLed, txLedOff); -# print("Sleeping") -# time.sleep(10) -# print("Transmitting SSTV") -# GPIO.output(txLed, txLedOn); -# os.system("cat /home/pi/CubeSatSim/wav/sstv.wav | csdr convert_i16_f | csdr gain_ff 7000 | csdr convert_f_samplerf 20833 | sudo rpitx -i- -m RF -f 434.9e3") - elif (('b' == sys.argv[1]) or ('bpsk' in sys.argv[1])): - print("BPSK") - os.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") + if (len(sys.argv)) > 1: +# print("There are arguments!") + if (('a' == sys.argv[1]) or ('afsk' in sys.argv[1])): + print("AFSK") + while True: + try: + f = open("ready") + os.system("gen_packets -o telem.wav t.txt -r 48000 > /dev/null 2>&1 && cat 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") + os.system("rm ready") + time.sleep(0.5) + except: + time.sleep(0.5) + elif (('s' == sys.argv[1]) or ('sstv' in sys.argv[1])): + print("SSTV") + try: + from picamera import PiCamera +# from pysstv.sstv import SSTV + camera = PiCamera() + print("Camera present") + camera_present = 1 + camera.close() + except: + print("No camera") + camera_present = 0 + + while 1: +# 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 &") + GPIO.output(txLed, txLedOff) + if (camera_present == 1): + system("raspistill -o /home/pi/camera_out.jpg -w 320 -h 256") # > /dev/null 2>&1") + print("Photo taken") + GPIO.output(txLed, txLedOn) +# system("sudo python3 -m pysstv --mode PD120 /home/pi/camera_out.jpg /home/pi/sstv_camera.wav") # > /dev/null 2>&1") + system("/home/pi/PiSSTVpp/pisstvpp -r 48000 -p s2 /home/pi/camera_out.jpg") # > /dev/null 2>&1") + GPIO.output(txLed, txLedOff) + print ("Sending SSTV photo") + time.sleep(1) + system("sudo killall -9 rpitx > /dev/null 2>&1") + system("sudo killall -9 csdr > /dev/null 2>&1") + system("sudo killall -9 cat > /dev/null 2>&1") + GPIO.output(txLed, txLedOn); + system("cat /home/pi/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") + else: + 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) + + elif (('b' == sys.argv[1]) or ('bpsk' in sys.argv[1])): + 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") + 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") + 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") + else: - print("FSK") - os.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") - else: - print("FSK") - os.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") - else: - print("No Band Pass Filter so no telemetry transmit. See http://cubesatsim.org/wiki for instructions on how to build the BPF.") - while True: - time.sleep(5) + 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) diff --git a/rpitx.sh b/rpitx.sh index 409f9caf..afc736a2 100755 --- a/rpitx.sh +++ b/rpitx.sh @@ -8,18 +8,18 @@ if [ "$1" = "c" ]; then echo $y if [ $(($y % 4)) = 3 ]; then echo "Mode is continuous AFSK" - python -u /home/pi/CubeSatSim/rpitx.py a + python3 -u /home/pi/CubeSatSim/rpitx.py a elif [ $(($y % 4)) = 1 ]; then echo "Mode is continuous BPSK" - python -u /home/pi/CubeSatSim/rpitx.py b + python3 -u /home/pi/CubeSatSim/rpitx.py b elif [ $(($y % 4)) = 2 ]; then echo "Mode is continuous SSTV" - python -u /home/pi/CubeSatSim/rpitx.py s + python3 -u /home/pi/CubeSatSim/rpitx.py s else echo "Mode is continuous FSK" - python -u /home/pi/CubeSatSim/rpitx.py f + python3 -u /home/pi/CubeSatSim/rpitx.py f fi else - python -u /home/pi/CubeSatSim/rpitx.py $1 + python3 -u /home/pi/CubeSatSim/rpitx.py $1 fi