parent
b4fd46dfec
commit
f998c59bc9
@ -0,0 +1,156 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
# originally based on listen-for-shutdown.py from pi-power-button
|
||||
|
||||
import RPi.GPIO as GPIO
|
||||
import subprocess
|
||||
import time
|
||||
import os
|
||||
from time import sleep
|
||||
|
||||
def blink(times):
|
||||
blink_time = 0.1
|
||||
powerPin = 16
|
||||
for i in range(times): # blink times
|
||||
GPIO.output(powerPin, 0)
|
||||
sleep(blink_time)
|
||||
GPIO.output(powerPin, 1)
|
||||
sleep(blink_time)
|
||||
sleep(0.65)
|
||||
|
||||
def change_mode():
|
||||
push_button = 26
|
||||
powerPin = 16
|
||||
txPin = 27
|
||||
sleep(0.75)
|
||||
if GPIO.input(push_button):
|
||||
print("sudo reboot -h now")
|
||||
os.system("echo 'reboot due to push button!' | wall")
|
||||
GPIO.setwarnings(False)
|
||||
GPIO.setup(powerPin, GPIO.OUT)
|
||||
GPIO.output(powerPin, 0);
|
||||
subprocess.call(['reboot', '-h', 'now'], shell=False)
|
||||
return
|
||||
blink(1)
|
||||
if GPIO.input(push_button):
|
||||
print("switch to AFSK")
|
||||
os.system("echo 'switch to AFSK due to push button!' | wall")
|
||||
os.system("/home/pi/CubeSatSim/config -a")
|
||||
return
|
||||
blink(2)
|
||||
if GPIO.input(push_button):
|
||||
print("switch to FSK")
|
||||
os.system("echo 'switch to FSK due to push button!' | wall")
|
||||
os.system("/home/pi/CubeSatSim/config -f")
|
||||
return
|
||||
blink(3)
|
||||
if GPIO.input(push_button):
|
||||
print("switch to BPSK")
|
||||
os.system("echo 'switch to BPSK due to push button!' | wall")
|
||||
os.system("/home/pi/CubeSatSim/config -b")
|
||||
return
|
||||
blink(4)
|
||||
if GPIO.input(push_button):
|
||||
print("switch to SSTV")
|
||||
os.system("echo 'switch to SSTV due to push button!' | wall")
|
||||
os.system("/home/pi/CubeSatSim/config -s")
|
||||
return
|
||||
blink(5)
|
||||
if GPIO.input(push_button):
|
||||
print("switch to CW")
|
||||
os.system("echo 'switch to CW due to push button!' | wall")
|
||||
os.system("/home/pi/CubeSatSim/config -m")
|
||||
return
|
||||
blink(6)
|
||||
if GPIO.input(push_button):
|
||||
print("switch to Repeater")
|
||||
os.system("echo 'switch to Repeater due to push button!' | wall")
|
||||
os.system("/home/pi/CubeSatSim/config -e")
|
||||
return
|
||||
blink(7)
|
||||
if GPIO.input(push_button):
|
||||
print("switch to FunCube")
|
||||
os.system("echo 'switch to FunCube due to push button!' | wall")
|
||||
os.system("/home/pi/CubeSatSim/config -j")
|
||||
return
|
||||
blink(8)
|
||||
if GPIO.input(push_button):
|
||||
print("switch to PacSat")
|
||||
os.system("echo 'switch to PacSat due to push button!' | wall")
|
||||
os.system("/home/pi/CubeSatSim/config -G")
|
||||
return
|
||||
for i in range(3): # blink 3 times slowly
|
||||
GPIO.output(powerPin, 0)
|
||||
sleep(0.35)
|
||||
GPIO.output(powerPin, 1)
|
||||
sleep(0.35)
|
||||
sleep(0.65)
|
||||
if GPIO.input(push_button):
|
||||
print("sudo nmcli connection up preconfigured")
|
||||
os.system("sudo nmcli connection up preconfigured")
|
||||
print("sudo shutdown -h now")
|
||||
os.system("echo 'shutdown due to push button!' | wall")
|
||||
GPIO.setwarnings(False)
|
||||
GPIO.setup(powerPin, GPIO.OUT)
|
||||
subprocess.call(['shutdown', '-h', 'now'], shell=False)
|
||||
return
|
||||
for i in range(3): # blink two times even more slowly
|
||||
GPIO.output(powerPin, 0)
|
||||
sleep(0.7)
|
||||
GPIO.output(powerPin, 1)
|
||||
sleep(0.7)
|
||||
sleep(0.7)
|
||||
print("toggle command and control mode")
|
||||
try:
|
||||
f = open("/home/pi/CubeSatSim/command_control", "r")
|
||||
f.close()
|
||||
print("command and control will be deactivated")
|
||||
os.system('sudo rm /home/pi/CubeSatSim/command_control')
|
||||
os.system("echo 'command and control deactivated by push button!' | wall")
|
||||
os.system('sudo systemctl restart command')
|
||||
except:
|
||||
print("command and control will be activated")
|
||||
os.system('touch /home/pi/CubeSatSim/command_control')
|
||||
os.system("echo 'command and control activated by push button!' | wall")
|
||||
os.system('sudo systemctl restart command')
|
||||
sleep(1)
|
||||
|
||||
powerPin = 16
|
||||
txPin = 27
|
||||
push_button = 26
|
||||
GPIO.setmode(GPIO.BCM)
|
||||
GPIO.setwarnings(False)
|
||||
GPIO.setup(txPin, GPIO.OUT)
|
||||
GPIO.output(txPin, 0)
|
||||
GPIO.setup(powerPin, GPIO.OUT)
|
||||
GPIO.output(powerPin, 0)
|
||||
# GPIO.output(powerPin, 1)
|
||||
# sleep(0.5)
|
||||
# GPIO.output(powerPin, 0)
|
||||
# sleep(0.5)
|
||||
|
||||
GPIO.setup(push_button, GPIO.IN, pull_up_down=GPIO.PUD_UP)
|
||||
# sleep(1)
|
||||
if not GPIO.input(push_button): # if pushbutton is held down during boot
|
||||
print("Activating WiFi access point!")
|
||||
GPIO.output(powerPin, 1)
|
||||
sleep(0.1)
|
||||
GPIO.output(powerPin, 0)
|
||||
sleep(0.1)
|
||||
GPIO.output(powerPin, 1)
|
||||
sleep(0.3)
|
||||
GPIO.output(powerPin, 0)
|
||||
sleep(0.1)
|
||||
GPIO.output(powerPin, 1)
|
||||
sleep(0.3)
|
||||
GPIO.output(powerPin, 0)
|
||||
print("sudo nmcli device wifi hotspot con-name HotSpot ifname wlan0 ssid CubeSat password amsatao7")
|
||||
os.system("sudo nmcli device wifi hotspot con-name HotSpot ifname wlan0 ssid CubeSat password amsatao7")
|
||||
sleep(2)
|
||||
GPIO.setup(powerPin, GPIO.OUT)
|
||||
GPIO.output(powerPin, 1)
|
||||
while (True):
|
||||
sleep(1)
|
||||
GPIO.wait_for_edge(push_button, GPIO.FALLING)
|
||||
change_mode()
|
||||
sleep(5)
|
||||
Loading…
Reference in new issue