@ -11,6 +11,17 @@ from os import system
from PIL import Image , ImageDraw , ImageFont , ImageColor
import serial
def battery_saver_check ( ) :
try :
global txc
f = open ( " /home/pi/CubeSatSim/battery_saver " , " r " )
f . close ( )
txc = False
print ( " battery saver activated " )
except :
print ( " not activated " )
# txc = True
def increment_mode ( ) :
print ( " increment mode " )
powerPin = 16
@ -99,21 +110,25 @@ def increment_mode():
sleep ( 2.5 )
try :
file = open ( " /home/pi/CubeSatSim/.mode " , " w " )
# file = open("/home/pi/CubeSatSim/.mode", "w")
# count_string = str(command_count)
file . write ( mode )
file . close ( )
print ( " .mode file written " )
# file.write(mode)
# file.close()
# print(".mode file written")
GPIO . setwarnings ( False )
GPIO . output ( txLed , 0 )
GPIO . output ( powerPin , 0 )
print ( " sudo reboot -h now " )
# print("sudo reboot -h now")
GPIO . setwarnings ( False )
GPIO . setup ( powerPin , GPIO . OUT )
GPIO . output ( powerPin , 0 ) ;
system ( " reboot -h now " )
# system("reboot -h now")
# release = True;
print ( " Changing mode now " )
system ( " /home/pi/CubeSatSim/config - " + mode )
sleep ( 10 ) ;
except :
print ( " can ' t write to .mode file " )
@ -123,7 +138,7 @@ print("CubeSatSim v1.3b rpitx.py starting...")
pd = 21
ptt = 20
txc = 7
txc _pin = 7
squelch = 6
green = 16
@ -134,7 +149,7 @@ GPIO.setwarnings(False)
GPIO . setup ( 13 , GPIO . IN , pull_up_down = GPIO . PUD_UP )
GPIO . setup ( 12 , GPIO . IN , pull_up_down = GPIO . PUD_UP )
GPIO . setup ( 27 , GPIO . IN , pull_up_down = GPIO . PUD_UP )
GPIO . setup ( 7 , GPIO . IN , pull_up_down = GPIO . PUD_UP )
GPIO . setup ( txc_pin , GPIO . IN , pull_up_down = GPIO . PUD_UP )
GPIO . setup ( green , GPIO . OUT )
GPIO . setup ( squelch , GPIO . IN , pull_up_down = GPIO . PUD_UP ) ## pull up in case pin is not connected
@ -185,21 +200,25 @@ GPIO.setup(ptt, GPIO.OUT)
output ( ptt , 1 )
txc = False
if GPIO . input ( 7 ) == False :
if GPIO . input ( txc_pin ) == False :
print ( " TXC is present " )
txc = True ;
else :
print ( " TXC not present " )
# txc = False # forcing it off
output ( txLed , txLedOn )
sleep ( 1 )
output ( txLed , txLedOff )
battery_saver_check ( )
# print(txLedOn)
print ( txLed )
# GPIO.setup(27, GPIO.OUT)
# GPIO.output(27, 0)
debug_mode = 1
debug_mode = 1 #no debugging rpitx
if __name__ == " __main__ " :
@ -311,13 +330,16 @@ if __name__ == "__main__":
# if (mode != 'a') and (command_tx == True):
if ( command_tx == True ) :
# battery_saver_mode
output ( txLed , txLedOn )
if ( txc ) :
output ( pd , 1 )
output ( ptt , 0 )
output ( txLed , txLedOn )
sleep ( 0.1 )
if ( txc ) :
system ( " aplay -D hw:CARD=Headphones,DEV=0 /home/pi/CubeSatSim/morse.wav " )
sleep ( 0.1 )
output ( ptt , 1 )
output ( pd , 0 )
else :
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")
@ -326,10 +348,8 @@ if __name__ == "__main__":
# 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")
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 " + tx + " e3 > /dev/null 2>&1 " )
sleep ( 0.1 )
output ( txLed , txLedOff )
output ( ptt , 1 )
output ( pd , 0 )
sleep ( 1 )
else :
print ( " Don ' t transmit CW ID since command_tx is False or APRS mode " )
@ -341,7 +361,7 @@ if __name__ == "__main__":
# if (len(sys.argv)) > 1:
# print("There are arguments!")
if ( mode == ' a ' ) :
output ( pd , 1 )
# output(pd, 1)
print ( " AFSK " )
# sleep(5)
## try:
@ -352,6 +372,7 @@ if __name__ == "__main__":
while True :
try :
f = open ( " /home/pi/CubeSatSim/ready " )
f . close ( )
if ( debug_mode == 1 ) :
print ( " Packet ready! " )
system ( " gen_packets -o /home/pi/CubeSatSim/telem.wav /home/pi/CubeSatSim/t.txt -r 48000 > /dev/null 2>&1 " )
@ -359,11 +380,18 @@ if __name__ == "__main__":
if ( command_tx == True ) :
output ( txLed , txLedOn )
# output(pd, 1)
output ( ptt , 0 )
sleep ( .1 )
# output (ptt, 0)
# sleep(.1)
#
# battery_saver_check()
if ( txc ) :
output ( pd , 1 )
output ( ptt , 0 )
sleep ( 0.1 )
system ( " aplay -D hw:CARD=Headphones,DEV=0 /home/pi/CubeSatSim/telem.wav " )
sleep ( 0.1 )
output ( ptt , 1 )
output ( pd , 0 )
else :
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 " + tx + " e3 " )
@ -371,11 +399,13 @@ if __name__ == "__main__":
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 " + tx + " e3 > /dev/null 2>&1 " )
sleep ( 0.1 )
output ( ptt , 1 )
# output (ptt, 1)
# output(pd, 0)
output ( txLed , txLedOff )
system ( " sudo rm /home/pi/CubeSatSim/ready " )
f . close ( )
output ( pd , 1 )
output ( ptt , 1 )
sleep ( 1 )
if ( no_command == False and GPIO . input ( squelch ) == False ) :
print ( " carrier received! " )
@ -408,6 +438,7 @@ if __name__ == "__main__":
system ( " echo > command_tx False " )
else :
print ( " No carrier received! " )
output ( pd , 0 )
if ( debug_mode == 1 ) :
print ( " Ready for next packet! " )
@ -428,11 +459,17 @@ if __name__ == "__main__":
if ( command_tx == True ) :
output ( txLed , txLedOn )
# battery_saver_check()
if ( txc ) :
output ( pd , 1 )
output ( ptt , 0 )
sleep ( 0.1 )
if ( txc ) :
system ( " gen_packets -M 20 -o /home/pi/CubeSatSim/morse.wav /home/pi/CubeSatSim/cw.txt -r 48000 > /dev/null 2>&1 && aplay -D hw:CARD=Headphones,DEV=0 /home/pi/CubeSatSim/morse.wav " )
sleep ( 0.1 )
output ( ptt , 1 )
output ( pd , 0 )
else :
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 " + tx + " e3 " )
@ -440,9 +477,12 @@ if __name__ == "__main__":
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 " + tx + " e3 > /dev/null 2>&1 " )
output ( txLed , txLedOff )
output ( ptt , 1 )
# output (ptt, 1)
sleep ( 5 )
while True :
output ( pd , 1 )
output ( ptt , 1 )
sleep ( 1 )
if ( no_command == False and GPIO . input ( squelch ) == False ) :
print ( " carrier received! " )
# command_tx = not command_tx
@ -473,8 +513,11 @@ if __name__ == "__main__":
print ( " Turning off transmit " )
system ( " echo > command_tx False " )
sleep ( 5 )
output ( pd , 0 )
try :
f = open ( " /home/pi/CubeSatSim/cwready " )
f . close ( )
system ( " gen_packets -M 20 -o /home/pi/CubeSatSim/morse.wav /home/pi/CubeSatSim/cw.txt -r 48000 > /dev/null 2>&1 " )
system ( " sudo rm /home/pi/CubeSatSim/cwready " )
@ -482,6 +525,7 @@ if __name__ == "__main__":
output ( txLed , txLedOn )
output ( ptt , 0 )
sleep ( 0.1 )
# battery_saver_check()
if ( txc ) :
system ( " aplay -D hw:CARD=Headphones,DEV=0 /home/pi/CubeSatSim/morse.wav " )
@ -509,6 +553,7 @@ if __name__ == "__main__":
print ( " Testing for camera " )
system ( " raspistill -o /home/pi/CubeSatSim/camera_out.jpg -w 320 -h 256 " )
f = open ( " /home/pi/CubeSatSim/camera_out.jpg " )
f . close ( )
print ( " Camera present " )
camera_present = 1
# camera.close()
@ -519,8 +564,8 @@ if __name__ == "__main__":
# while 1:
output ( txLed , txLedOff )
output ( ptt , 1 )
output ( pd , 0 )
# output (ptt, 1)
# output(pd, 0)
if ( camera_present == 1 ) :
try :
file = open ( " /home/pi/CubeSatSim/sstv_image_2_320_x_256.jpg " )
@ -530,11 +575,14 @@ if __name__ == "__main__":
if ( command_tx == True ) :
print ( " Sending SSTV image " )
output ( txLed , txLedOn )
output ( pd , 1 )
output ( ptt , 0 )
# battery_saver_check()
if ( txc ) :
output ( pd , 1 )
output ( ptt , 0 )
system ( " aplay -D hw:CARD=Headphones,DEV=0 /home/pi/CubeSatSim/sstv_image_2_320_x_256.jpg.wav " )
output ( ptt , 1 )
output ( pd , 0 )
else :
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 " + tx + " e3 " )
@ -542,8 +590,7 @@ if __name__ == "__main__":
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 " + tx + " e3 > /dev/null 2>&1 " )
output ( txLed , txLedOff )
output ( ptt , 1 )
output ( pd , 0 )
# sleep(1)
except :
print ( " image 2 did not load - copy from CubeSatSim/sstv directory " )
@ -578,6 +625,7 @@ if __name__ == "__main__":
system ( " sudo rm /home/pi/CubeSatSim/camera_out.jpg > /dev/null 2>&1 " )
output ( pd , 1 )
output ( ptt , 1 )
sleep ( 1 )
if ( no_command == False and GPIO . input ( squelch ) == False ) :
print ( " carrier received! " )
@ -613,11 +661,14 @@ if __name__ == "__main__":
if ( command_tx == True ) :
print ( " Sending SSTV image " )
output ( txLed , txLedOn )
output ( pd , 1 )
output ( ptt , 0 )
# battery_saver_check()
if ( txc ) :
output ( pd , 1 )
output ( ptt , 0 )
system ( " aplay -D hw:CARD=Headphones,DEV=0 /home/pi/CubeSatSim/camera_out.jpg.wav " )
output ( ptt , 1 )
output ( pd , 0 )
else :
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 " + tx + " e3 " )
@ -625,9 +676,9 @@ if __name__ == "__main__":
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 " + tx + " e3 > /dev/null 2>&1 " )
output ( txLed , txLedOff )
output ( ptt , 1 )
# output (ptt, 1)
output ( pd , 0 )
# output(pd, 0)
system ( " sudo rm /home/pi/CubeSatSim/camera_out.jpg.wav > /dev/null 2>&1 " )
sleep ( 1 )
else :
@ -639,11 +690,15 @@ if __name__ == "__main__":
print ( " Sending SSTV image " )
output ( txLed , txLedOn )
output ( pd , 1 )
output ( ptt , 0 )
# battery_saver_check( )
if ( txc ) :
output ( pd , 1 )
output ( ptt , 0 )
system ( " aplay -D hw:CARD=Headphones,DEV=0 /home/pi/CubeSatSim/sstv_image_1_320_x_256.jpg.wav " )
output ( ptt , 1 )
output ( pd , 0 )
else :
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 " + tx + " e3 " )
@ -651,8 +706,8 @@ if __name__ == "__main__":
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 " + tx + " e3 > /dev/null 2>&1 " )
output ( txLed , txLedOff )
output ( ptt , 1 )
output ( pd , 0 )
# output (ptt, 1)
# output(pd, 0)
sleep ( 1 )
except :
print ( " image 1 did not load - copy from CubeSatSim/sstv directory " )
@ -663,6 +718,7 @@ if __name__ == "__main__":
while 1 :
output ( pd , 1 )
output ( ptt , 1 )
sleep ( 1 )
if ( no_command == False and GPIO . input ( squelch ) == False ) :
print ( " carrier received! " )
@ -697,11 +753,14 @@ if __name__ == "__main__":
if ( command_tx == True ) :
print ( " Sending SSTV image " )
output ( txLed , txLedOn )
output ( pd , 1 )
output ( ptt , 0 )
# battery_saver_check()
if ( txc ) :
output ( pd , 1 )
output ( ptt , 0 )
system ( " aplay -D hw:CARD=Headphones,DEV=0 /home/pi/CubeSatSim/sstv_image_1_320_x_256.jpg.wav " )
output ( ptt , 1 )
output ( pd , 0 )
else :
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 " + tx + " e3 " )
@ -709,8 +768,8 @@ if __name__ == "__main__":
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 " + tx + " e3 > /dev/null 2>&1 " )
output ( txLed , txLedOff )
output ( ptt , 1 )
output ( pd , 0 )
# output (ptt, 1)
# output(pd, 0)
sleep ( 5 )
except :
print ( " image 2 did not load - copy from CubeSatSim/sstv directory " )
@ -721,17 +780,20 @@ if __name__ == "__main__":
if ( command_tx == True ) :
output ( txLed , txLedOn )
output ( pd , 1 )
output ( ptt , 0 )
# battery_saver_check()
if ( txc ) :
output ( pd , 1 )
output ( ptt , 0 )
system ( " aplay -D hw:CARD=Headphones,DEV=0 /home/pi/CubeSatSim/sstv.wav " )
output ( ptt , 1 )
output ( pd , 0 )
else :
sleep ( 60 )
output ( txLed , txLedOff )
output ( ptt , 1 )
output ( pd , 0 )
# output (ptt, 1)
# output(pd, 0)
sleep ( 1 )
elif ( mode == ' b ' ) :
print ( " BPSK " )
@ -749,6 +811,9 @@ if __name__ == "__main__":
# output(txLed, txLedOn)
# sleep(0.03)
# output(txLed, txLedOff)
output ( pd , 1 )
output ( ptt , 1 )
sleep ( 1 )
if ( no_command == False and GPIO . input ( squelch ) == False ) :
print ( " carrier received! " )
# command_tx = not command_tx
@ -779,6 +844,8 @@ if __name__ == "__main__":
system ( " sudo systemctl restart rpitx " )
# system("sudo reboot now")
sleep ( 60 )
output ( pd , 0 )
if ( command_tx == True ) :
output ( txLed , txLedOn )
sleep ( 4.0 )
@ -797,6 +864,9 @@ if __name__ == "__main__":
# output(txLed, txLedOn)
# sleep(0.03)
# output(txLed, txLedOff)
output ( pd , 1 )
output ( ptt , 1 )
sleep ( 1 )
if ( no_command == False and GPIO . input ( squelch ) == False ) :
print ( " carrier received! " )
# command_tx = not command_tx