diff --git a/dtmf_aprs_cc.py b/dtmf_aprs_cc.py index a77a65b0..c1b67831 100644 --- a/dtmf_aprs_cc.py +++ b/dtmf_aprs_cc.py @@ -12,6 +12,7 @@ if __name__ == "__main__": txLed = 27 change_mode = False debug_mode = False + counter = 1 if (len(sys.argv)) > 1: # print("There are arguments!") if ('d' == sys.argv[1]): @@ -25,43 +26,58 @@ if __name__ == "__main__": # if '^c' == line.rstrip(): # break - if ((line.find("MODE=a")) > 0) or ((line.find("DTMF>APDW15:t1#")) > 0): + if ((line.find("MODE=a")) > 0): system("echo '\nAPRS Mode!!\n'") mode = 'a' change_mode = True - if ((line.find("MODE=f")) > 0) or ((line.find("DTMF>APDW15:t2#")) > 0): + counter = (counter + 1) % 2 + if ((line.find("DTMF>APDW15:t1#")) > 0): + system("echo '\nAPRS Mode!!\n'") + mode = 'a' + change_mode = True + if ((line.find("MODE=f")) > 0): + system("echo '\nFSK Mode!!\n'") + mode = 'f' + change_mode = True + counter = (counter + 1) % 2 + if ((line.find("DTMF>APDW15:t2#")) > 0): system("echo '\nFSK Mode!!\n'") mode = 'f' change_mode = True - if ((line.find("MODE=b")) > 0) or ((line.find("DTMF>APDW15:t3#")) > 0): + if ((line.find("MODE=b")) > 0): system("echo '\nBPSK Mode!!\n'") mode = 'b' change_mode = True - if ((line.find("MODE=s")) > 0) or ((line.find("DTMF>APDW15:t4#")) > 0): + counter = (counter + 1) % 2 + if ((line.find("DTMF>APDW15:t3#")) > 0): + system("echo '\nBPSK Mode!!\n'") + mode = 'b' + change_mode = True + if ((line.find("MODE=s")) > 0): + system("echo '\nSSTV Mode!!\n'") + mode = 's' + change_mode = True + counter = (counter + 1) % 2 + if ((line.find("DTMF>APDW15:t4#")) > 0): system("echo '\nSSTV Mode!!\n'") mode = 's' change_mode = True - if ((line.find("MODE=m")) > 0) or ((line.find("DTMF>APDW15:t5#")) > 0): + if ((line.find("MODE=m")) > 0): system("echo '\nCW Mode!!\n'") mode = 'm' change_mode = True - if ((line.find("MODE=o")) > 0) or ((line.find("DTMF>APDW15:t10#")) > 0): + counter = (counter + 1) % 2 + if ((line.find("MODE=o")) > 0): system("echo '\nBeacon Mode toggle!!\n'") - try: - fm = open("/home/pi/CubeSatSim/beacon_off") - fm.close() - system("echo 'Beacon is off, turning it ON'") - system("sudo rm /home/pi/CubeSatSim/beacon_off > /dev/null 2>&1") - except: - system("echo 'Beacon is on, turning it OFF'") - system("touch /home/pi/CubeSatSim/beacon_off") - - system("echo 'Restarting rpitx'") - system("sudo systemctl restart rpitx") -# system("echo 'Resuming rpitx'") -# system("sudo python3 -u /home/pi/CubeSatSim/rpitx.py s & > /dev/null 2>&1") - change_mode = False - if (debug_mode == False) and (change_mode == True): + mode = 'o' + change_mode = True + counter = (counter + 1) % 2 + if ((line.find("DTMF>APDW15:t10#")) > 0): + system("echo '\nBeacon Mode toggle!!\n'") + mode = 'o' + change_mode = True + + if (debug_mode == False) and (change_mode == True) and (counter == 1): # skip every other APRS command since Direwolf prints them twice GPIO.setmode(GPIO.BCM) GPIO.setwarnings(False) GPIO.setup(powerPin, GPIO.OUT) @@ -130,7 +146,7 @@ if __name__ == "__main__": sleep(0.1) GPIO.output(powerPin, 1) sleep(1) - else: + elif (mode == 'a'): mode = 'a' GPIO.output(powerPin, 0) # blink one time sleep(0.1) @@ -156,7 +172,7 @@ if __name__ == "__main__": GPIO.output(txLed, 0) GPIO.output(powerPin, 0) system("sudo systemctl stop rpitx") - system("sudo systemctl stop cubesatsim") +# system("sudo systemctl stop cubesatsim") print("\n/home/pi/CubeSatSim/config -" + mode) system("/home/pi/CubeSatSim/config -" + mode) diff --git a/main.c b/main.c index 3d40f63e..15a31e6d 100644 --- a/main.c +++ b/main.c @@ -26,7 +26,8 @@ int main(int argc, char * argv[]) { char resbuffer[1000]; - const char testStr[] = "cat /proc/cpuinfo | grep 'Revision' | awk '{print $3}' | sed 's/^1000//' | grep '902120'"; +// const char testStr[] = "cat /proc/cpuinfo | grep 'Revision' | awk '{print $3}' | sed 's/^1000//' | grep '9000'"; + const char testStr[] = "cat /proc/cpuinfo | grep 'Revision' | awk '{print $3}' | sed 's/^1000//'"; FILE *file_test = sopen(testStr); // see if Pi Zero 2 fgets(resbuffer, 1000, file_test); fprintf(stderr, "Pi test result: %s\n", resbuffer); @@ -39,10 +40,10 @@ int main(int argc, char * argv[]) { fprintf(stderr, " %x ", resbuffer[0]); fprintf(stderr, " %x \n", resbuffer[1]); - if ((resbuffer[0] == '9') && (resbuffer[1] == '0')) + if ((resbuffer[0] != '9') || (resbuffer[1] != '0') || (resbuffer[2] != '0') || (resbuffer[3] != '0')) { // voltageThreshold = 3.7; - fprintf(stderr, "Pi Zero 2 detected\n"); + fprintf(stderr, "Pi Zero not detected (could be Pi Zero 2)\n"); pi_zero_2_offset = 500; if (uptime_sec < 30.0) { FILE * rpitx_stop = popen("sudo systemctl start rpitx", "r"); @@ -278,9 +279,23 @@ int main(int argc, char * argv[]) { pclose(file); } - txLed = 0; // defaults for vB3 board without TFB - txLedOn = LOW; - txLedOff = HIGH; + txLed = 2; + txLedOn = HIGH; + txLedOff = LOW; + vB5 = TRUE; + onLed = 27; + onLedOn = HIGH; + onLedOff = LOW; + + + pinMode(26, INPUT); + pullUpDnControl(26, PUD_UP); + + if (digitalRead(26) != HIGH) { + printf("v1 Present with UHF BPF\n"); + transmit = TRUE; + } +/* if (!ax5043) { pinMode(2, INPUT); pullUpDnControl(2, PUD_UP); @@ -344,6 +359,7 @@ int main(int argc, char * argv[]) { } } } + */ // pinMode(txLed, OUTPUT); // digitalWrite(txLed, txLedOff); #ifdef DEBUG_LOGGING @@ -399,7 +415,7 @@ int main(int argc, char * argv[]) { char camera_present[] = "supported=1 detected=1"; // printf("strstr: %s \n", strstr( & cmdbuffer1, camera_present)); camera = (strstr( (const char *)& cmdbuffer, camera_present) != NULL) ? ON : OFF; - // printf("Camera result:%s camera: %d \n", & cmdbuffer1, camera); + printf("Camera result:%s camera: %d \n", & cmdbuffer, camera); pclose(file4); #ifdef DEBUG_LOGGING @@ -407,7 +423,7 @@ int main(int argc, char * argv[]) { #endif FILE * file5 = popen("sudo rm /home/pi/CubeSatSim/camera_out.jpg > /dev/null 2>&1", "r"); - file5 = popen("sudo rm /home/pi/CubeSatSim/camera_out.jpg.wav > /dev/null 2>&1", "r"); + //file5 = popen("sudo rm /home/pi/CubeSatSim/camera_out.jpg.wav > /dev/null 2>&1", "r"); pclose(file5); if (!ax5043) // don't test for payload if AX5043 is present @@ -478,7 +494,7 @@ int main(int argc, char * argv[]) { if (transmit == FALSE) { - fprintf(stderr, "\nNo CubeSatSim Band Pass Filter detected. No transmissions after the CW ID.\n"); + fprintf(stderr, "\nNo CubeSatSim Low Pass Filter detected. No transmissions after the CW ID.\n"); fprintf(stderr, " See http://cubesatsim.org/wiki for info about building a CubeSatSim\n\n"); } diff --git a/rpitx.py b/rpitx.py index 9f6acaf6..704d6eb9 100644 --- a/rpitx.py +++ b/rpitx.py @@ -157,30 +157,15 @@ GPIO.setup(green, GPIO.OUT) GPIO.output(powerPin, 1) transmit = False +txLed = 27 +txLedOn = 1 +txLedOff = 0 if GPIO.input(12) == False: - print("Version is v1 with UHF BPF") + print("Version is v1 with UHF LPF") transmit = True - txLed = 27 - txLedOn = 1 - txLedOff = 0 -elif GPIO.input(27) == False: - print("Version is TFB") - transmit = True - txLed = 22 - txLedOn = 0 - txLedOff = 1 -elif GPIO.input(13) == False: - print("Version is v1 with VHF BPF") - print("VHF transmit not imemented yet") -# transmit = True - txLed = 27 - txLedOn = 1 - txLedOff = 0 else: - print("No BPF") - txLed = 27 - txLedOn = 1 - txLedOff = 0 + print("No LPF") + # GPIO.setup(txLed, GPIO.OUT) # output(txLed, txLedOff) @@ -832,6 +817,6 @@ if __name__ == "__main__": # print(txLedOn) sleep(4.2) else: - print("No Low Pass Filter so no telemetry transmit. See http://cubesatsim.org/wiki for instructions on how to build the BPF.") + print("No Low Pass Filter so no telemetry transmit. See http://cubesatsim.org/wiki for instructions on how to build the LPF.") while 1: sleep(5)