Merge pull request #426 from alanbjohnston/master-b

PacSat into FIABv4
pull/428/head
Alan Johnston 1 week ago committed by GitHub
commit 1b309f0e53
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

5
.gitignore vendored

@ -45,3 +45,8 @@ pi_zero2
image_file.bin
logt.txt
telem.txt.bk
failure_mode.txt
sim_mode_auto
direwolf-pacsatsim-tmp.conf
groundstation/direwolf-pacsat-tmp.conf
tlm.bin

@ -41,9 +41,10 @@ cubesatsim: libax5043.a
cubesatsim: afsk/ax25.o
cubesatsim: afsk/ax5043.o
cubesatsim: TelemEncoding.o
cubesatsim: sensor_extension.o
cubesatsim: main.o
cubesatsim: codecAO40.o
gcc -std=gnu99 $(DEBUG_BEHAVIOR) -o cubesatsim -Wall -Wextra -L./ afsk/ax25.o afsk/ax5043.o TelemEncoding.o codecAO40.o main.o -lwiringPi -lax5043 -lm
gcc -std=gnu99 $(DEBUG_BEHAVIOR) -o cubesatsim -Wall -Wextra -L./ afsk/ax25.o afsk/ax5043.o TelemEncoding.o sensor_extension.o codecAO40.o main.o -lwiringPi -lax5043 -lm
telem: telem.o
gcc -std=gnu99 $(DEBUG_BEHAVIOR) -o telem -Wall -Wextra -L./ telem.o -lwiringPi
@ -52,6 +53,9 @@ TelemEncoding.o: TelemEncoding.c
TelemEncoding.o: TelemEncoding.h
gcc -std=gnu99 $(DEBUG_BEHAVIOR) -Wall -Wextra -c TelemEncoding.c
sensor_extension.o: sensor_extension.c
gcc -std=gnu99 $(DEBUG_BEHAVIOR) -Wall -Wextra -c sensor_extension.c
codecAO40.o: codecAO40.c
codecAO40.o: codecAO40.h
gcc -std=gnu99 $(DEBUG_BEHAVIOR) -Wall -Wextra -c codecAO40.c

@ -6,7 +6,7 @@ The CubeSat Simulator https://github.com/alanbjohnston/CubeSatSim/wiki is a low
The three custom PCBs are the Main, Battery and Solar boards. Information including schematics and gerbers is in https://CubeSatSim.org/hardware
<img width="200" alt="cubesatsim-main-v2 0 1_top" src="https://github.com/alanbjohnston/CubeSatSim/blob/b3178fc979a88031f06365590ba47a358158fd73/hardware/v2.0/cubesatsim-main-v2.0_top.png"> <img width="200" alt="cubesatsim-battery-v2 0_top" src="https://github.com/alanbjohnston/CubeSatSim/blob/b3178fc979a88031f06365590ba47a358158fd73/hardware/v2.0/cubesatsim-battery-v2.0.1_top.png"> <img width="200" alt="cubesatsim-solar-v2 0_top" src="https://github.com/alanbjohnston/CubeSatSim/blob/b3178fc979a88031f06365590ba47a358158fd73/hardware/v2.0/cubesatsim-solar-v2.0.1_top.png">
<img width="200" alt="cubesatsim-main-v2 0 1_top" src="https://github.com/alanbjohnston/CubeSatSim/blob/628fd65edbb01fb772a9f223605d969a0aad14bd/hardware/v2.1/cubesatsim-main-v2.1.0_top.png"> <img width="200" alt="cubesatsim-battery-v2 0_top" src="https://github.com/alanbjohnston/CubeSatSim/blob/4d079b486116180071c4dbf64ae2464518a63bdd/hardware/v2.1/cubesatsim-battery-v2.1.0_top.png"> <img width="200" alt="cubesatsim-solar-v2 0_top" src="https://github.com/alanbjohnston/CubeSatSim/blob/c904c66d7c8fb44a3d088d0cbebf24903cf3572c/hardware/v2.1/cubesatsim-solar-v2.1.0_top.png">
For information about the AMSAT STEM education program based on the CubeSatSim, see https://CubeSatSim.org/EducatorsGuide
@ -18,9 +18,9 @@ See the Wiki Software Install page for more details: https://github.com/alanbjoh
There are two ways to get the CubeSatSim(TM) software for your Pi.
One option is to download the disk image file and write it to a 16GB micro SD card or larger. The image is based on Raspberry Pi OS (Rasbian) Lite, dated December 2020. All software is installed, you just need to login to change your password and set your amateur radio callsign if you have one. You can run the ./update.sh script to update all packages and update and compile the latest CubeSatSim software.
One option is to download the disk image file and write it to a 16GB micro SD card or larger. The image is based on Raspberry Pi OS (Bulleye) Lite. All software is installed, you just need to login to change your password and set your amateur radio callsign if you have one. You can run the ./update.sh script to update all packages and update and compile the latest CubeSatSim software.
The other option is to start with a Raspberry Pi OS (Rasbian) image (Bullseye or Buster works) and run the installation script ./install.sh which will install and compile all the related software. This includes the following packages:
The other option is to start with a Raspberry Pi OS (Rasbian) image (only Bullseye works, Bookworm or Trixie are not compatible) and run the installation script ./install.sh which will install and compile all the related software. This includes the following packages:
- wiringpi
- git
- libasound2-dev
@ -36,11 +36,23 @@ See the Wiki Software Install page for details: [https://github.com/alanbjohnsto
## Installation Script Option Steps
CubeSatSim runs on the Bullseye or Buster version of Raspberry Pi OS (Desktop or Lite), although a Pi Zero or Pi Zero W should only run Lite. Your Pi will need to have internet access to update settings and install packages.
CubeSatSim runs on the Bullseye version of Raspberry Pi OS (Desktop or Lite), although a Pi Zero or Pi Zero W should only run Lite. Your Pi will need to have internet access to update settings and install packages.
For the status of our efforts to get the code running on Bookworm, see https://github.com/alanbjohnston/CubeSatSim/discussions/389
Here is a Bullseye Pi OS image that works: https://downloads.raspberrypi.org/raspios_full_armhf/images/raspios_full_armhf-2023-05-03/ Here is the file download link: https://downloads.raspberrypi.org/raspios_full_armhf/images/raspios_full_armhf-2023-05-03/2023-05-03-raspios-bullseye-armhf-full.img.xz
You can use this with the Raspberry Pi Imager, but under `OS` you need to choose the `Use Custom` option at the very bottom of the list, then select the downloaded image `2023-05-03-raspios-bullseye-armhf-full.img.xz`
Unfortunately, Customization is not supported with a Custom image, so you can't preset your username, password, localization, and WiFi settings.
So after you write this image to your microSD card, you will need to connect a monitor and keyboard to your Pi Zero 2 to set these things (make sure you set `pi` as the username). After that, you can connect it to your WiFi and turn on ssh and vnc for remote access.
You can then follow the software installation steps and it work work. The only hiccup is that if you run the installer script while running the Desktop, the Direwolf installation will freeze. But you can just cycle the power to the Pi Zero 2, then run the installer script again and it will complete successfully. Alternatively, if you use `sudo raspi-config` to change to Boot to Console (System/ Boot Auto Login/ Console or Console Auto Login) then the installer script will complete without any issues.
*Note:* CubeSatSim expects to be installed as the `pi` user and references many paths in `/home/pi/*`. Installing as a different user will result in configuration files not saving along with many other issues.
To get the software follow these steps:
To install the software follow these steps:
`sudo apt-get update`

@ -6,7 +6,7 @@ pcm.!default {
ctl.!default {
type hw
card 2
card "Device"
}
# Playback with software volume and mixing
@ -15,15 +15,16 @@ pcm.softvol {
slave.pcm "shared_speaker"
control {
name "Master"
card 2
card "Device"
}
}
pcm.shared_speaker {
type dmix
ipc_key 1024
ipc_perm 0666
slave {
pcm "hw:2,0"
pcm "hw:CARD=Device,DEV=0"
rate 48000
period_time 0
period_size 1024
@ -35,8 +36,9 @@ pcm.shared_speaker {
pcm.shared_mic {
type dsnoop
ipc_key 2048
ipc_perm 0666
slave {
pcm "hw:2,0"
pcm "hw:CARD=Device,DEV=0"
# channels 1
rate 48000
period_time 0

@ -1,9 +1,17 @@
#!/bin/bash
echo -e "\nCommand and Control script for CubeSatSim v2.1\n"
echo -e "\nCommand and Control script for CubeSatSim v2.2\n"
sudo modprobe snd-aloop
sudo modprobe snd-aloop
value=`cat /home/pi/CubeSatSim/.mode`
echo "$value" > /dev/null
set -- $value
MODE=$1
FILE=/home/pi/CubeSatSim/command_control
if [ -f "$FILE" ]; then
echo "Radio command and control is ON"
@ -58,11 +66,11 @@ if [[ $(arecord -l | grep "USB Audio Device") ]] && [ -f "$FILE" ]; then
echo "debug mode"
direwolf -c /home/pi/CubeSatSim/direwolf-cc.conf -t 0l | python3 /home/pi/CubeSatSim/dtmf_aprs_cc.py d
direwolf -P+ -D1 -r 48000 -c /home/pi/CubeSatSim/direwolf-cc.conf -t 0l | /home/pi/venv/bin/python3 /home/pi/CubeSatSim/dtmf_aprs_cc.py d
else
direwolf -c /home/pi/CubeSatSim/direwolf-cc.conf -t 0l | python3 /home/pi/CubeSatSim/dtmf_aprs_cc.py
direwolf -P+ -D1 -r 48000 -c /home/pi/CubeSatSim/direwolf-cc.conf -t 0l | /home/pi/venv/bin/python3 /home/pi/CubeSatSim/dtmf_aprs_cc.py
fi
else
@ -107,11 +115,11 @@ else
# echo "debug mode"
# direwolf -r 48000 -c /home/pi/CubeSatSim/direwolf/direwolf.conf -t 0l | python3 /home/pi/CubeSatSim/dtmf_aprs_cc.py d
# direwolf -r 48000 -c /home/pi/CubeSatSim/direwolf/direwolf.conf -t 0l | /home/pi/venv/bin/python3 /home/pi/CubeSatSim/dtmf_aprs_cc.py d
# else
# direwolf -r 48000 -c /home/pi/CubeSatSim/direwolf/direwolf.conf -t 0l | python3 /home/pi/CubeSatSim/dtmf_aprs_cc.py
# direwolf -r 48000 -c /home/pi/CubeSatSim/direwolf/direwolf.conf -t 0l | /home/pi/venv/bin/python3 /home/pi/CubeSatSim/dtmf_aprs_cc.py
# fi
@ -124,17 +132,32 @@ else
fi
if [ "$1" = "d" ]; then
echo "debug mode"
python3 /home/pi/CubeSatSim/squelch_cc.py d
value=`cat /home/pi/CubeSatSim/.mode`
echo "$value" > /dev/null
set -- $value
MODE=$1
if [ ! "$MODE" = "P" ] && [ ! "$MODE" = "P" ] ; then
if [ "$1" = "d" ]; then
echo "debug mode"
/home/pi/venv/bin/python3 /home/pi/CubeSatSim/squelch_cc.py d
else
/home/pi/venv/bin/python3 /home/pi/CubeSatSim/squelch_cc.py
fi
else
python3 /home/pi/CubeSatSim/squelch_cc.py
fi
echo "Not running Carrier (squelch) Command and Control since PacSat or PacSat Ground Station mode!"
sleep 60
fi
fi
sudo killall -9 direwolf &>/dev/null

1199
config

File diff suppressed because it is too large Load Diff

@ -1,2 +1,9 @@
ADEVICE shared_mic hw:CARD=Loopback,DEV=1
DTMF
MYCALL AMSAT
CHANNEL 0
MODEM 1200
FULLDUP OFF
TXDELAY 0
AGWPORT 8200
KISSPORT 8201

@ -0,0 +1,9 @@
CHANNEL 0
MODEM 1200
DWAIT 0
SLOTTIME 10
PERSIST 63
TXDELAY 1000
TXTAIL 10
FULLDUP OFF
DIGIPEAT 0 0 ^WIDE[3-7]-[1-7]$|^TEST$ ^WIDE[12]-[12]$ TRACE

@ -1,5 +0,0 @@
ADEVICE hw:CARD=Loopback,DEV=0 hw:CARD=Headphones,DEV=0
MYCALL AMSAT
CHANNEL 0
MODEM 1200
CBEACON dest="DTMF-3" info="10 #" delay=0

@ -1,5 +0,0 @@
ADEVICE hw:CARD=Loopback,DEV=0 hw:CARD=Headphones,DEV=0
MYCALL AMSAT
CHANNEL 0
MODEM 1200
CBEACON dest="DTMF-3" info="3 #" delay=0

@ -1,5 +0,0 @@
ADEVICE hw:CARD=Loopback,DEV=0 hw:CARD=Headphones,DEV=0
MYCALL AMSAT
CHANNEL 0
MODEM 1200
CBEACON dest="DTMF-3" info="5 #" delay=0

@ -1,5 +0,0 @@
ADEVICE hw:CARD=Loopback,DEV=0 hw:CARD=Headphones,DEV=0
MYCALL AMSAT
CHANNEL 0
MODEM 1200
CBEACON dest="DTMF-3" info="2 #" delay=0

@ -1,5 +0,0 @@
ADEVICE hw:CARD=Loopback,DEV=0 hw:CARD=Headphones,DEV=0
MYCALL AMSAT
CHANNEL 0
MODEM 1200
CBEACON dest="DTMF-3" info="4 #" delay=0

@ -1,5 +1,7 @@
ADEVICE hw:CARD=Loopback,DEV=0 hw:CARD=Headphones,DEV=0
PTT GPIO 20
MYCALL AMSAT
CHANNEL 0
MODEM 1200
CBEACON dest="DTMF-3" info="1 #" delay=0
KISSPORT 8003
AGWPORT 8004

@ -1 +0,0 @@
ADEVICE plughw:CARD=Loopback,DEV=1 plughw:CARD=Loopback,DEV=0

@ -1,15 +1,20 @@
import sys
from os import system
import RPi.GPIO as GPIO
from RPi.GPIO import output
from time import sleep
import logging
logging.basicConfig(format='%(message)s')
# logging.warning('CC-Warning!')
def blink(times):
for i in range(times):
system("gpio write 27 0")
sleep(0.1)
system("gpio write 27 1")
sleep(0.1)
if __name__ == "__main__":
powerPin = 16
txLed = 27
txLed = 17
change_mode = False
debug_mode = False
counter = 1
@ -17,259 +22,167 @@ if __name__ == "__main__":
# print("There are arguments!")
if ('d' == sys.argv[1]):
debug_mode = True
for line in sys.stdin:
# if (debug_mode):
print(line, end =" ")
logging.warning(line)
# if '^c' == line.rstrip():
# break
if ((line.find("MODE=a")) > 0):
system("echo '\nAPRS Mode!!\n'")
mode = 'a'
change_mode = True
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):
system("echo '\nBPSK Mode!!\n'")
mode = 'b'
change_mode = True
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):
system("echo '\nCW Mode!!\n'")
mode = 'm'
change_mode = True
counter = (counter + 1) % 2
if ((line.find("DTMF>APDW15:t5#")) > 0):
system("echo '\nCW Mode!!\n'")
mode = 'm'
change_mode = True
if ((line.find("MODE=e")) > 0):
system("echo '\nRepeater Mode!!\n'")
mode = 'e'
change_mode = True
counter = (counter + 1) % 2
if ((line.find("DTMF>APDW15:t6#")) > 0):
system("echo '\nRepeater Mode!!\n'")
mode = 'e'
change_mode = True
if ((line.find("MODE=j")) > 0):
system("echo '\nFUNcube Mode!!\n'")
mode = 'j'
change_mode = True
counter = (counter + 1) % 2
if ((line.find("DTMF>APDW15:t7#")) > 0):
system("echo '\nFUNcube Mode!!\n'")
mode = 'j'
change_mode = True
if ((line.find("MODE=n")) > 0):
system("echo '\nTransmit Commands Mode!!\n'")
mode = 'n'
change_mode = True
counter = (counter + 1) % 2
if ((line.find("DTMF>APDW15:t11#")) > 0):
system("echo '\nTransmit Commands Mode!!\n'")
mode = 'n'
change_mode = True
if ((line.find("MODE=o")) > 0):
system("echo '\nBeacon Mode toggle!!\n'")
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
if (debug_mode == False) and (change_mode == True): # skip every other APRS command since Direwolf prints them twice
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(powerPin, GPIO.OUT)
GPIO.setup(txLed, GPIO.OUT)
if (mode == 'f'):
GPIO.output(powerPin, 0) # blink two times
sleep(0.1)
GPIO.output(powerPin, 1)
sleep(0.1)
GPIO.output(powerPin, 0)
sleep(0.1)
GPIO.output(powerPin, 1)
sleep(1)
elif (mode == 'b'):
GPIO.output(powerPin, 0) # blink three times
sleep(0.1)
GPIO.output(powerPin, 1)
sleep(0.1)
GPIO.output(powerPin, 0)
sleep(0.1)
GPIO.output(powerPin, 1)
sleep(0.1)
GPIO.output(powerPin, 0)
sleep(0.1)
GPIO.output(powerPin, 1)
sleep(1)
elif (mode == 's'):
GPIO.output(powerPin, 0) # blink four times
sleep(0.1)
GPIO.output(powerPin, 1)
sleep(0.1)
GPIO.output(powerPin, 0)
sleep(0.1)
GPIO.output(powerPin, 1)
sleep(0.1)
GPIO.output(powerPin, 0)
sleep(0.1)
GPIO.output(powerPin, 1)
sleep(0.1)
GPIO.output(powerPin, 0)
sleep(0.1)
GPIO.output(powerPin, 1)
sleep(1)
while True:
try:
for line in sys.stdin:
# if (debug_mode):
print(line, end =" ")
logging.warning(line)
# if '^c' == line.rstrip():
# break
elif (mode == 'm'):
GPIO.output(powerPin, 0) # blink five times
sleep(0.1)
GPIO.output(powerPin, 1)
sleep(0.1)
GPIO.output(powerPin, 0)
sleep(0.1)
GPIO.output(powerPin, 1)
sleep(0.1)
GPIO.output(powerPin, 0)
sleep(0.1);
GPIO.output(powerPin, 1)
sleep(0.1)
GPIO.output(powerPin, 0)
sleep(0.1)
GPIO.output(powerPin, 1)
sleep(0.1)
GPIO.output(powerPin, 0)
sleep(0.1)
GPIO.output(powerPin, 1)
sleep(1)
if ((line.find("MODE=a")) > 0):
system("echo '\nAPRS Mode!!\n'")
mode = 'a'
change_mode = True
elif ((line.find(":t1#")) > 0):
system("echo '\nAPRS Mode!!\n'")
mode = 'a'
change_mode = True
elif ((line.find("MODE=f")) > 0):
system("echo '\nFSK Mode!!\n'")
mode = 'f'
change_mode = True
elif ((line.find(":t2#")) > 0):
system("echo '\nFSK Mode!!\n'")
mode = 'f'
change_mode = True
elif ((line.find("MODE=b")) > 0):
system("echo '\nBPSK Mode!!\n'")
mode = 'b'
change_mode = True
elif ((line.find(":t3#")) > 0):
system("echo '\nBPSK Mode!!\n'")
mode = 'b'
change_mode = True
elif ((line.find("MODE=s")) > 0):
system("echo '\nSSTV Mode!!\n'")
mode = 's'
change_mode = True
elif ((line.find(":t4#")) > 0):
system("echo '\nSSTV Mode!!\n'")
mode = 's'
change_mode = True
elif ((line.find("MODE=m")) > 0):
system("echo '\nCW Mode!!\n'")
mode = 'm'
change_mode = True
elif ((line.find(":t5#")) > 0):
system("echo '\nCW Mode!!\n'")
mode = 'm'
change_mode = True
elif ((line.find("MODE=e")) > 0):
system("echo '\nRepeater Mode!!\n'")
mode = 'e'
change_mode = True
elif ((line.find(":t6#")) > 0):
system("echo '\nFUNcube Mode!!\n'")
mode = 'j'
change_mode = True
elif ((line.find("MODE=G")) > 0):
system("echo '\nPacSatSim Mode!!\n'")
mode = 'p'
change_mode = True
elif ((line.find(":t8#")) > 0):
system("echo '\nPacSatSim Mode!!\n'")
mode = 'p'
change_mode = True
elif ((line.find("MODE=n")) > 0):
system("echo '\nTransmit Commands Mode!!\n'")
mode = 'n'
change_mode = True
elif ((line.find(":t11#")) > 0):
system("echo '\nTransmit Commands Mode!!\n'")
mode = 'n'
change_mode = True
elif (mode == 'e'):
GPIO.output(powerPin, 0) # blink six times
sleep(0.1)
GPIO.output(powerPin, 1)
sleep(0.1)
GPIO.output(powerPin, 0)
sleep(0.1)
GPIO.output(powerPin, 1)
sleep(0.1)
GPIO.output(powerPin, 0)
sleep(0.1);
GPIO.output(powerPin, 1)
sleep(0.1)
GPIO.output(powerPin, 0)
sleep(0.1)
GPIO.output(powerPin, 1)
sleep(0.1)
GPIO.output(powerPin, 0)
sleep(0.1)
GPIO.output(powerPin, 1)
sleep(0.1)
GPIO.output(powerPin, 0)
sleep(0.1)
GPIO.output(powerPin, 1)
sleep(1)
elif (mode == 'j'):
GPIO.output(powerPin, 0) # blink seven times
sleep(0.1)
GPIO.output(powerPin, 1)
sleep(0.1)
GPIO.output(powerPin, 0)
sleep(0.1)
GPIO.output(powerPin, 1)
sleep(0.1)
GPIO.output(powerPin, 0)
sleep(0.1);
GPIO.output(powerPin, 1)
sleep(0.1)
GPIO.output(powerPin, 0)
sleep(0.1)
GPIO.output(powerPin, 1)
sleep(0.1)
GPIO.output(powerPin, 0)
sleep(0.1)
GPIO.output(powerPin, 1)
sleep(0.1)
GPIO.output(powerPin, 0)
sleep(0.1)
GPIO.output(powerPin, 1)
sleep(0.1)
GPIO.output(powerPin, 0)
sleep(0.1)
GPIO.output(powerPin, 1)
sleep(1)
elif (mode == 'a'):
mode = 'a'
GPIO.output(powerPin, 0) # blink one time
sleep(0.1)
GPIO.output(powerPin, 1)
sleep(1)
try:
file = open("/home/pi/CubeSatSim/command_count.txt", "r")
string = file.read()
file.close()
command_count = int(string)
command_count += 1
filec = open("/home/pi/CubeSatSim/command_count.txt", "w")
command_count_string = str(command_count)
print(command_count_string)
string = filec.write(command_count_string)
filec.close()
except:
print("Can't write command_count file!")
print("Command_count: ")
print(command_count)
GPIO.output(txLed, 0)
GPIO.output(powerPin, 0)
system("sudo systemctl stop rpitx")
# system("sudo systemctl stop cubesatsim")
print("\n/home/pi/CubeSatSim/config -" + mode)
system("/home/pi/CubeSatSim/config -" + mode)
elif ((line.find("MODE=o")) > 0):
system("echo '\nBeacon Mode toggle!!\n'")
mode = 'o'
change_mode = True
# counter = (counter + 1) % 2
elif ((line.find(":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
if (mode == 'f'):
blink(2)
sleep(1)
elif (mode == 'b'):
blink(3)
sleep(1)
elif (mode == 's'):
blink(4)
sleep(1)
elif (mode == 'm'):
blink(5)
sleep(1)
elif (mode == 'e'):
blink(6)
sleep(1)
elif (mode == 'j'):
blink(7)
sleep(1)
elif (mode == 'p'):
blink(8)
sleep(1)
elif (mode == 'a'):
blink(1)
sleep(1)
try:
file = open("/home/pi/CubeSatSim/command_count.txt", "r")
string = file.read()
file.close()
command_count = int(string)
command_count += 1
filec = open("/home/pi/CubeSatSim/command_count.txt", "w")
command_count_string = str(command_count)
print(command_count_string)
string = filec.write(command_count_string)
filec.close()
except:
print("Can't write command_count file!")
print("Command_count: ")
print(command_count)
system("gpio write " + str(txLed) + " 0")
system("gpio write " + str(powerPin) + " 0")
system("sudo systemctl stop transmit")
# system("sudo systemctl stop cubesatsim")
print("\n/home/pi/CubeSatSim/config -" + mode)
system("/home/pi/CubeSatSim/config -" + mode)
change_mode = False
except:
print("Error reading line (probably due to UTF-8 issue)")
change_mode = False
print("Waiting 5 seconds to allow unplug and plug of soundcard")
sleep(5)
print("Done")

@ -0,0 +1,72 @@
#! /usr/bin/env python3
"""
example Python gpsd client
run this way: python3 example1.py.txt
"""
# from https://gpsd.gitlab.io/gpsd/gpsd-client-example-code.html
# this client is for the CubeSatSim Lite which does not have a Pico microcontroller
try:
import gps # the gpsd interface module
import time
mode = -1
lat = 0
lon = 0
alt = 0
session = gps.gps(mode=gps.WATCH_ENABLE)
start = time.perf_counter()
try:
# while (session.read() == 0) and ((time.perf_counter() - start) < 2) and (mode < 2):
while ((time.perf_counter() - start) < 2) and (mode < 2):
if session.waiting(2.0):
session.read()
# print(gps.MODE_SET)
# print(session.valid)
if (session.valid):
# not useful, probably not a TPV message
# continue
# print('Mode: %s(%d) Time: ' %
# (("Invalid", "NO_FIX", "2D", "3D")[session.fix.mode],
# session.fix.mode), end="")
# print time, if we have it
# print("%d " % session.fix.mode, end="")
if (session.fix.mode > mode):
mode = session.fix.mode
# if gps.TIME_SET & session.valid:
# print(session.fix.time, end="")
# else:
# print('n/a', end="")
if gps.isfinite(session.fix.latitude):
lat = session.fix.latitude
if gps.isfinite(session.fix.longitude):
lon = session.fix.longitude
if gps.isfinite(session.fix.altitude):
alt = session.fix.altitude
# print("%.6f %.6f %.6f" % (session.fix.latitude, session.fix.longitude, session.fix.altitude))
# else:
# print(" 0 0 0")
except KeyboardInterrupt:
# got a ^C. Say bye, bye
print('')
# Got ^C, or fell out of the loop. Cleanup, and leave.
session.close()
print("%d %.6f %.6f %.1f" % (mode, lat, lon, alt))
# exit(0)
except:
print("-1 0 0 0")
exit(0)

@ -0,0 +1,10 @@
[Desktop Entry]
Type=Application
Exec=/home/pi/CubeSatSim/groundstation/sdrpp.sh
Name=SDRpp
Comment=SDRpp
Icon=/home/pi/Icons/sdrpp.png
Path=/home/pi
Terminal=true
Categories=HamRadio
Keywords=Ham Radio;SDR

@ -2,7 +2,7 @@
Name=APRS Decode using Direwolf
GenericName=Decodes APRS using rtl_fm and Direwolf
Comment=APRS signals
Exec=/home/pi/CubeSatSim/groundstation/aprs.sh
Exec=/usr/bin/x-terminal-emulator --geometry=120x40 -e "/home/pi/CubeSatSim/groundstation/packet.sh"
Icon=/home/pi/Icons/aprs.png
Terminal=true
Type=Application

@ -3,12 +3,14 @@
sudo modprobe snd-aloop
sudo systemctl stop openwebrx
sudo systemctl stop openwebrx &>/dev/null
sudo systemctl stop rtl_tcp
sudo systemctl stop rtl_tcp &>/dev/null
pkill -o chromium &>/dev/null
sudo killall -9 sdrpp &>/dev/null
sudo killall -9 rtl_fm &>/dev/null
sudo killall -9 direwolf &>/dev/null
@ -78,7 +80,7 @@ echo -e "Auto decoding APRS packets on $frequency Hz"
#sudo rtl_fm -f 144.39M -s 22050 -g 48 - | multimon-ng -a AFSK1200 -A -t raw -
direwolf -r 48000 -t 0 &
direwolf -c /home/pi/CubeSatSim/groundstation/direwolf.conf -r 48000 -t 0 &
sleep 5
@ -87,6 +89,7 @@ echo "$value" > /dev/null
set -- $value
#rtl_fm -M fm -f 144.39M -s 48k | aplay -D hw:${2:0:1},0,0 -r 48000 -t raw -f S16_LE -c 1
rtl_fm -M fm -f $frequency -s 48k | tee >(aplay -D hw:${2:0:1},0,0 -r 48000 -t raw -f S16_LE -c 1) | aplay -D hw:0,0 -r 48000 -t raw -f S16_LE -c 1
#rtl_fm -M fm -f $frequency -s 48k | tee >(aplay -D hw:${2:0:1},0,0 -r 48000 -t raw -f S16_LE -c 1) | aplay -D hw:0,0 -r 48000 -t raw -f S16_LE -c 1
rtl_fm -M fm -f $frequency -s 48k | aplay -D hw:${2:0:1},0,0 -r 48000 -t raw -f S16_LE -c 1
sleep 5

@ -2,4 +2,4 @@
[Desktop Entry]
Type=Application
Name=Chromium with WebSDR
Exec=chromium-browser --check-for-update-interval=1 --simulate-critical-update --noerrdialogs --disable-infobars http://127.0.0.1:8073
Exec=chromium-browser --check-for-update-interval=1 --simulate-critical-update --noerrdialogs --disable-infobars --app=http://localhost:8073

@ -1,137 +1,57 @@
[
{
"name": "ISS APRS",
"frequency": 145825000,
"modulation": "nfm"
},
{
"name": "ISS SSTV/Voice",
"frequency": 145800000,
"modulation": "nfm"
},
{
"name": "ARISS Repeater Downlink",
"frequency": 437800000,
"modulation": "nfm"
},
{
"name": "AO-27",
"frequency": 436795000,
"modulation": "nfm"
},
{
"name": "AO-73",
"frequency": 145815000,
"modulation": "usb"
},
{
"name": "Fox-1B AO-91",
"frequency": 145960000,
"modulation": "nfm"
},
{
"name": "Fox-1D AO-92",
"frequency": 145880000,
"modulation": "nfm"
},
{
"name": "HuskySat-1 HO-107",
"frequency": 435800000,
"modulation": "usb"
},
{
"name": "Fox-1E",
"frequency": 435750000,
"modulation": "usb"
},
{
"name": "MAX VALIER",
"frequency": 145860000,
"modulation": "usb"
},
{
"name": "NOAA WX Radio 1",
"frequency": 162400000,
"modulation": "nfm"
},
{
"name": "NOAA WX Radio 2",
"frequency": 162425000,
"modulation": "nfm"
},
{
"name": "NOAA WX Radio 3",
"frequency": 162450000,
"modulation": "nfm"
},
{
"name": "NOAA WX Radio 4",
"frequency": 162475000,
"modulation": "nfm"
},
{
"name": "NOAA WX Radio 5",
"frequency": 162500000,
"modulation": "nfm"
},
{
"name": "NOAA WX Radio 6",
"frequency": 162525000,
"modulation": "nfm"
},
{
"name": "NOAA WX Radio 7",
"frequency": 162550000,
"modulation": "nfm"
},
{
"name": "CAS-4A",
"frequency": 145855000,
"modulation": "usb"
},
{
"name": "CAS-4B",
"frequency": 145910000,
"modulation": "usb"
},
{
"name": "XW-2A",
"frequency": 145660000,
"modulation": "usb"
},
{
"name": "XW-2B",
"frequency": 145725000,
"modulation": "usb"
},
{
"name": "XW-2C",
"frequency": 145790000,
"modulation": "usb"
},
{
"name": "XW-2F",
"frequency": 145975000,
"modulation": "usb"
},
{
"name": "NOAA-19",
"frequency": 137100000,
"modulation": "nfm"
},
{
"name": "NOAA-18",
"frequency": 137912500,
"modulation": "nfm"
},
{
"name": "NOAA-15",
"frequency": 137620000,
"modulation": "nfm"
},
{
"name": "CubeSatSim",
"frequency": 434900000,
"modulation": "packet"
}
{
"name": "NOAA WX Radio 1",
"frequency": 162400000,
"modulation": "nfm"
},
{
"name": "NOAA WX Radio 2",
"frequency": 162425000,
"modulation": "nfm"
},
{
"name": "NOAA WX Radio 3",
"frequency": 162450000,
"modulation": "nfm"
},
{
"name": "NOAA WX Radio 4",
"frequency": 162475000,
"modulation": "nfm"
},
{
"name": "NOAA WX Radio 5",
"frequency": 162500000,
"modulation": "nfm"
},
{
"name": "NOAA WX Radio 6",
"frequency": 162525000,
"modulation": "nfm"
},
{
"name": "NOAA WX Radio 7",
"frequency": 162550000,
"modulation": "nfm"
},
{
"name": "CubeSatSim",
"frequency": 434900000,
"modulation": "packet"
},
{
"name": "ISS SSTV/Voice",
"frequency": 145800000,
"modulation": "nfm"
},
{
"name": "ISS APRS",
"frequency": 145825000,
"modulation": "packet"
},
{
"name": "ISS Voice Repeater",
"frequency": 437800000,
"modulation": "nfm"
}
]

@ -3,7 +3,7 @@ Type=Application
Exec=/home/pi/CubeSatSim/groundstation/cubicsdr.sh
Name=SDR FM Broadcast
Comment=CubicSDR FM Broadcast
Icon=/home/pi/Downloads/cubicsdr.png
Icon=/home/pi/Icons/cubicsdr.png
Path=/home/pi
Terminal=true
Categories=HamRadio

@ -9,19 +9,21 @@ echo "Note: Select Generic RTL2832 device then click Start to begin"
echo
sudo systemctl stop openwebrx
sudo systemctl stop openwebrx &>/dev/null
sudo killall -9 java &>/dev/null
sudo systemctl stop rtl_tcp
sudo systemctl stop rtl_tcp &>/dev/null
pkill -o chromium &>/dev/null
sudo killall -9 sdrpp &>/dev/null
sudo killall -9 rtl_fm &>/dev/null
sudo killall -9 direwolf &>/dev/null
sudo killall -9 aplay &>/dev/null
#sudo killall -9 aplay &>/dev/null
sudo killall -9 qsstv &>/dev/null
@ -39,11 +41,28 @@ sudo killall -9 sdrpp &>/dev/null
sudo killall -9 zenity &>/dev/null
sudo /etc/init.d/alsa-utils stop
sudo /etc/init.d/alsa-utils start
sudo killall -9 rtl_fm &>/dev/null
zenity --info --width=650 --height=140 --title="Instructions" --text="When CubicSDR opens, select <i>Generic RTL2832U</i> device then click <b>Start</b> to begin.\n\nThen click on a signal in the watefall to listen." &
sleep 5
setsid CubicSDR
sleep 10
#$SHELL
#sudo kill `ps -aux | grep sstv_decode_prompt| grep -v grep | awk '{ print $2 }'` &>/dev/null && killall inotifywait &>/dev/null
sudo killall -9 zenity &>/dev/null
sudo /etc/init.d/alsa-utils stop
sudo /etc/init.d/alsa-utils start
zenity --info --width=650 --height=140 --title="Instructions" --text="When CubicSDR opens, select <i>Generic RTL2832U</i> device then click <b>Start</b> to begin.\n\nThen click on a signal in the watefall to listen." &
sleep 5

@ -1 +1 @@
ADEVICE plughw:CARD=Loopback,DEV=1 plughw:CARD=b1,DEV=0
ADEVICE plughw:CARD=Loopback,DEV=1 default

@ -0,0 +1,9 @@
CHANNEL 0
MODEM 1200
KISSPORT 8100
AGWPORT 8002
DWAIT 20
SLOTTIME 300
PERSIST 63
TXDELAY 1000
FULLDUP OFF

@ -2,7 +2,7 @@
Type=Application
Exec=/home/pi/CubeSatSim/groundstation/fox-download.sh
Name=FoxTelem Download
Comment=FIAB-v3
Comment=FIAB-v4
Icon=/home/pi/Icons/FoxTelemDownload.png
Path=/home/pi
Terminal=true

@ -2,8 +2,8 @@
Type=Application
Exec=/home/pi/CubeSatSim/groundstation/fox-profile.sh
Name=Change FoxTelem Profile
Comment=FIAB-v3
Icon=/home/pi/Downloads/foxtelem.png
Comment=FIAB-v4
Icon=/home/pi/Icons/foxtelem.png
Path=/home/pi
Terminal=true
Categories=HamRadio

@ -5,6 +5,8 @@ echo "Startup script to run FoxTelem for FIAB v4"
echo
source /home/pi/venv/bin/activate
sudo killall -9 FoxTelem &>/dev/null
sudo killall -9 zenity &>/dev/null
@ -12,7 +14,7 @@ sudo killall -9 zenity &>/dev/null
FILE=/home/pi/FoxTelemetryData/.foxprofile
if [ ! -f "$FILE" ]; then
profile=$(zenity --text="Choose your default FoxTelem profile:" --list 2>/dev/null --width=410 --height=120 --title="Set FoxTelem Profile" --column="Profile" --column="Receive and decode telemetry from" Fox-in-a-Box "AMSAT Fox satellites" "CubeSatSim" "AMSAT CubeSat Simulator")
profile=$(zenity --text="Choose your default FoxTelem profile:" --list 2>/dev/null --width=410 --height=120 --title="Set FoxTelem Profile" --column="Profile" --column="Receive and decode telemetry from" Fox-in-a-Box "AMSAT Satellites" "CubeSatSim" "AMSAT CubeSat Simulator")
echo $profile

@ -5,12 +5,14 @@ echo "Script to run FoxTelem for ARISS Radio Pi"
echo
sudo systemctl stop openwebrx
sudo systemctl stop openwebrx &>/dev/null
sudo systemctl stop rtl_tcp
sudo systemctl stop rtl_tcp &>/dev/null
pkill -o chromium &>/dev/null
sudo killall -9 sdrpp &>/dev/null
sudo killall -9 rtl_tcp &>/dev/null
sudo killall -9 rtl_fm &>/dev/null
@ -23,12 +25,15 @@ sudo killall -9 sdrpp &>/dev/null
sudo killall -9 direwolf &>/dev/null
sudo killall -9 aplay &>/dev/null
#sudo killall -9 aplay &>/dev/null
sudo killall -9 qsstv &>/dev/null
sudo killall -9 zenity &>/dev/null
sudo /etc/init.d/alsa-utils stop
sudo /etc/init.d/alsa-utils start
sudo killall -9 rtl_fm &>/dev/null
sleep 5

@ -2,8 +2,8 @@
Type=Application
Exec=/home/pi/CubeSatSim/groundstation/fox-run.sh
Name=FoxTelem
Comment=FIAB-v3
Icon=/home/pi/Downloads/foxtelem.png
Comment=FIAB-v4
Icon=/home/pi/Icons/foxtelem.png
Path=/home/pi
Terminal=true
Categories=HamRadio

@ -3,7 +3,7 @@ Type=Application
Exec=/usr/bin/gpredict
Name=Gpredict
Comment=ISS and Satellite Tracking for ARISS Radio Pi
Icon=/home/pi/Downloads/gpredict.png
Icon=/home/pi/Icons/gpredict.png
Path=/home/pi
Terminal=false
Categories=HamRadio

@ -118,6 +118,16 @@ if (latitude != 0) and (longitude != 0):
system(longSedStr)
print("\nKLAtracker configuration updated with your latitude and longitude")
latSedStr = 'sed -i "s/latitude=.*/latitude=' + str(latitude) + '/g" /home/pi/PacSatGround/PacSatGround.properties'
#print (latSedStr)
system(latSedStr)
longSedStr = 'sed -i "s/longitude=.*/longitude=' + str(longitude) + '/g" /home/pi/PacSatGround/PacSatGround.properties'
#print (longSedStr)
system(longSedStr)
print("\nPacsat configuration updated with your latitude and longitude")
receiver_gpsSedStr = 'sudo sed -i "s/ ' + dquote + 'lat' + dquote + ': .*/ ' + dquote + 'lat' + dquote + ': ' + str(latitude) + ',/g" /var/lib/openwebrx/settings.json'
#print (receiver_gpsSedStr)

@ -12,4 +12,3 @@ python3 /home/pi/CubeSatSim/groundstation/loc-foxtelem.py
#/usr/bin/gpredict
nohup /usr/bin/gpredict </dev/null >/dev/null 2>&1 &

@ -14,6 +14,8 @@ pkill -o chromium &>/dev/null
sudo killall -9 rtl_fm &>/dev/null
sudo killall -9 sdrpp &>/dev/null
sudo killall -9 direwolf &>/dev/null
sudo killall -9 aplay &>/dev/null
@ -207,5 +209,4 @@ rtl_fm -M fm -f $frequency -s 48k | tee >(aplay -D hw:${2:0:1},0,0 -r 48000 -t r
rtl_fm -M fm -f $frequency -s 48k | aplay -D hw:${2:0:1},0,0 -r 48000 -t raw -f S16_LE -c 1
sleep 5

@ -0,0 +1,206 @@
#!/bin/bash
# script to run FoxTelem
echo "Script to configure the PacSat Ground Station for FIAB v4"
echo
#source /home/pi/venv/bin/activate
sudo killall -9 java &>/dev/null
sudo killall -9 zenity &>/dev/null
sudo killall -9 direwolf &>/dev/null
#FILE=/home/pi/.pacsatprofile
#if [ ! -f "$FILE" ]; then
# profile=$(zenity --text="Choice:" --list 2>/dev/null --width=410 --height=120 --title="PacSat Ground Station Choice" --column="Choice" --column="Result" "PacSat" "Receive from CubeSatSim PacSatSim" "Configure" "Configure PacSat Ground Station" "Loopback" "Run a Locally Simulated PacSat")
# echo $profile
echo "Here are the PacSat configuration choices:"
echo
echo " 1. PacSat Ground Station Configuration"
echo
echo " 2. PacSat Ground Station Simulation Configuration"
echo
echo " 3. Set Frequencies"
echo
echo " 4. Reset PacSat Satellite"
echo
echo "Which do you choose? Enter 1 - 4"
echo
read -r ANS
if [ -z "$ANS" ]; then
echo "No choice made. Exiting."
sleep 3
exit
fi
if [ "$ANS" = "1" ] || [ "$ANS" = "2" ] ; then
if [ "$ANS" = "1" ] ; then
echo "Here are your PacSat Ground Station Configuration choices:"
else
echo "Here are your PacSat Ground Station Simulation Configuration choices:"
fi
echo
echo " 1. PacSat Ground Station Callsign"
echo
echo " 2. Set Remote PacSat Satellite Callsign in Ground Station configuration"
echo
echo " 3. Reset PacSat Ground Station Configuration"
echo
read -r CH
if [ -z "$CH" ]; then
echo "No choice made. Exiting."
sleep 3
exit
fi
if [ "$CH" = "1" ] ; then
echo
if [ "$ANS" = "1" ] ; then
oldcallsign=$(grep -oP '(?<=callsign=).*$' /home/pi/PacSatGround/PacSatGround.properties)
else
oldcallsign=$(grep -oP '(?<=callsign=).*$' /home/pi/PacSatGroundLoop/PacSatGround.properties)
fi
echo "Callsign in PacSatGround.properties is "
echo $oldcallsign
echo "Enter new callsign in all capitals: "
echo
read callsign
if [ -z $callsign ] ; then
callsign="$1"
echo "Keeping value of" $oldcallsign
else
echo "Configured callsign is "
echo $callsign
if [ ! "$callsign" = "$oldcallsign" ] ; then
if [ "$ANS" = "1" ] ; then
sudo sed -i "s/callsign=$oldcallsign/callsign=$callsign/g" /home/pi/PacSatGround/PacSatGround.properties
cat /home/pi/PacSatGround/PacSatGround.properties
else
sudo sed -i "s/callsign=$oldcallsign/callsign=$callsign/g" /home/pi/PacSatGroundLoop/PacSatGround.properties
cat /home/pi/PacSatGroundLoop/PacSatGround.properties
fi
fi
fi
elif [ "$CH" = "2" ] ; then
echo "You have chosen to set the remote CubeSatSim PacSat Satellite callsign in ground station configuration"
echo
PROPERTIES=/home/pi/PacSatGround/spacecraft/PacSatSim.properties
PROPERTIES_L=/home/pi/PacSatGroundLoop/spacecraft/PacSatSim.properties
if [ "$ANS" = "1" ] ; then
oldcallsign=$(grep -oP '(?<=bbsCallsign=).*(?=-)' $PROPERTIES )
else
oldcallsign=$(grep -oP '(?<=bbsCallsign=).*(?=-)' $PROPERTIES_L )
fi
echo "Current value of remote PacSat callsign is"
echo $oldcallsign
echo
echo "Enter new callsign in all capitals: "
echo
read callsign
if [ -z $callsign ] ; then
callsign="$1"
echo "Keeping value of" $oldcallsign
else
if [ "$ANS" = "1" ] ; then
sudo sed -i "s/$oldcallsign/$callsign/g" $PROPERTIES
else
sudo sed -i "s/$oldcallsign/$callsign/g" $PROPERTIES_L
fi
echo
echo "Changing callsign to "
echo $callsign
echo
echo "You will see the change next time you run the PacSat Ground Station"
echo "You can close this window"
fi
elif [ "$CH" = "3" ] ; then
echo "You have chosen to reset the PacSat Ground Station Configuration"
echo
# echo "Next time you run the Ground Station you will need to Add the PacSatSim spacecraft"
# echo
if [ "$ANS" = "1" ] ; then
sudo rm -r /home/pi/PacSatGround
# cd
# sudo rm PacSatGround.zip
# wget https://github.com/alanbjohnston/CubeSatSim/raw/refs/heads/master-b-p-s/spacecraft/PacSatGround_0.46o/PacSatGround.zip
# unzip PacSatGround.zip -d PacSatGround
# sudo rm PacSatGround.zip
else
sudo rm -r /home/pi/PacSatGroundLoop
# cd
# sudo rm PacSatGround.zip
# wget https://github.com/alanbjohnston/CubeSatSim/raw/refs/heads/master-b-p-s/spacecraft/PacSatGround_0.46o/PacSatGround.zip
# unzip PacSatGround.zip -d PacSatGroundLoop
# sudo rm PacSatGround.zip
fi
echo "You can close this window now"
else
echo "Please choose an option 1-3"
echo
fi
elif [ "$ANS" = "3" ] ; then
echo "You have chosen to set the Frequency of the PacSat Ground Station"
echo
/home/pi/CubeSatSim/config -F n
elif [ "$ANS" = "4" ] ; then
echo "You have chosen to reset the PacSat Satellite"
echo
/home/pi/CubeSatSim/config -k n
else
echo "Please enter only 1 to 4"
fi
# sleep 10
#$SHELL

@ -0,0 +1,85 @@
#!/bin/bash
# script to run FoxTelem
echo "Startup script to run the PacSat Ground Station for FIAB v4"
echo
# source /home/pi/venv/bin/activate
sudo killall -9 java &>/dev/null
sudo killall -9 zenity &>/dev/null
sudo killall -9 direwolf &>/dev/null
#FILE=/home/pi/.pacsatprofile
#if [ ! -f "$FILE" ]; then
profile=$(zenity --text="Choose what you want to do:" --list 2>/dev/null --width=410 --height=220 --title="PacSat Ground Station" --column="Choice" --column="Result" "PacSat" "Run PacSat Ground Station" "Configure" "Configure the Pacsat Ground Station" "Simulate" "Run a Locally Simulated PacSat")
echo $profile
if [ -z "$profile" ]; then
echo "No choice made. Exiting."
sleep 3
exit
#echo "You need to choose your default FoxTelem profile."
#echo
#echo "The choices are:"
#echo
#echo "1. Fox-in-a-Box. Use this profile if you want to receive and decode telemetry from the AMSAT Fox satellites. If you enter a callsign and a grid square, you can upload to the AMSAT telemetry server."
#echo
#echo "2. CubeSatSim Ground Station. Use this profile if you want to receive and decode telemetry from an AMSAT CubeSatSim or CubeSatSim Lite."
#echo
#echo "Which profile do you choose? Enter 1 or 2"
#read -r ANS
fi
if [ "$ANS" = "1" ] || [ "$profile" = "PacSat" ] ; then
echo "You have chosen to run the PacSat Ground Station"
# echo "p" > /home/pi/.pacsatprofile
echo
/home/pi/CubeSatSim/groundstation/pacsat.sh
elif [ "$ANS" = "2" ] || [ "$profile" = "Configure" ] ; then
echo "You have chosen to configure the PacSat Ground Station"
echo
/home/pi/CubeSatSim/groundstation/pacsat-config.sh
elif [ "$ANS" = "3" ] || [ "$profile" = "Simulate" ] ; then
sudo systemctl stop transmit
echo "You have chosen the PacSat Ground Station with Local Simulated Satellite"
sleep 1
/usr/bin/x-terminal-emulator --geometry=120x40 -e "bash /home/pi/CubeSatSim/pacsatsim.sh l"
sleep 1
/home/pi/CubeSatSim/groundstation/pacsat.sh l
else
echo "Please enter only 1 or 2 or 3"
fi
sudo killall -9 direwolf &>/dev/null
sleep 10
#$SHELL

@ -0,0 +1,10 @@
[Desktop Entry]
Name=Pacsat
GenericName=Pacsat Loopback
Comment=Pacsat
Exec=/usr/bin/x-terminal-emulator --geometry=120x40 -e "/home/pi/CubeSatSim/groundstation/pacsat-run.sh"
Icon=/home/pi/Icons/pacsat.png
Terminal=true
Type=Application
Categories=HamRadio;
Keywords=APRS;

@ -0,0 +1,317 @@
#!/bin/bash
# script to auto decode packets using Direwolf and FM TXC and run Pacsat Ground Station
sudo pkill -f "/home/pi/CubeSatSim/groundstation/direwolf-pacsat-tmp.conf"
loopback=0
vox=0
safe=0
card=0
pwm=0
if [ "$1" = "l" ] ; then
loopback=1
elif [ "$1" = "v" ] ; then
vox=1
elif [ "$1" = "c" ] ; then
card=1
else
pwm=1
fi
if [[ $(arecord -l | grep "USB Audio Device") ]] ; then
echo "USB Sound Card detected"
soundcard=1
else
echo "No USB Sound Card detected"
soundcard=0
fi
gpio -g mode 7 up
if [[ $(gpio -g read 7 | grep 0) ]] ; then
echo "TXC is present"
txc=1
else
echo "TXC not present"
txc=0
fi
timeout 1 rtl_test &> out.txt
if [[ $(grep "No supported" out.txt) ]] ; then
echo "No RTL-SDR detected"
rtl=0
else
echo "RTL-SDR detected."
rtl=1
fi
FILE=/home/pi/CubeSatSim/battery_saver
if [ -f "$FILE" ]; then
safe=1
fi
value=`cat /home/pi/CubeSatSim/.mode`
echo "$value" > /dev/null
set -- $value
MODE=$1
if [ ! "$MODE" = "P" ] && [ ! "$loopback" = "1" ] ; then
echo
echo "Mode is not PacSat Ground Station"
echo
echo "Would you like to change to PacSat Ground Station mode and reboot? (y/n)?"
read -r ANS
if [ "$ANS" = "y" ]; then
/home/pi/CubeSatSim/config -I
exit
else
echo
echo "You can run the PacSat Ground Station after you change mode and reboot."
sleep 10
exit
fi
elif [ "$loopback" = "1" ] ; then
# if [ ! "$MODE" = "p" ] ; then
echo
echo "Switching to PacSat mode for the Simulated PacSat Satellite"
echo
/home/pi/CubeSatSim/config -G n
# fi
if [ ! -d "/home/pi/PacSatGroundLoop" ] ; then
# if [ ! "$loopback" = "1" ] ; then # don't do this for now.
cd
sudo rm PacSatGroundLoop.zip &>/dev/null
wget https://github.com/alanbjohnston/CubeSatSim/raw/refs/heads/master-b/spacecraft/PacSatGround_0.46o/PacSatGround.zip
unzip PacSatGround.zip -d PacSatGroundLoop
sudo rm PacSatGround.zip
sudo sed -i 's/logfile_dir=\/home\/pi\/PacSatGround/logfile_dir=\/home\/pi\/PacSatGroundLoop/g' /home/pi/PacSatGroundLoop/PacSatGround.properties
FILE=/home/pi/Desktop/PacsatGround/spacecraft/PacSatSim.properties
if [ -f "$FILE" ]; then
FILE2=/home/pi/PacSatGroundLoop/spacecraft/PacSatSim.properties
sudo rm $FILE2
cp $FILE $FILE2
else
echo
echo "The first time you run the Ground Station, you will need to select Yes to override files, then put in your callsign"
sleep 10
fi
fi
else
echo
echo "Mode is PacSat Ground Station"
echo
if [ ! -d "/home/pi/PacSatGround" ] ; then
cd
sudo rm PacSatGround.zip &>/dev/null
wget https://github.com/alanbjohnston/CubeSatSim/raw/refs/heads/master-b/spacecraft/PacSatGround_0.46o/PacSatGround.zip
unzip PacSatGround.zip -d PacSatGround
sudo rm PacSatGround.zip
FILE=/home/pi/Desktop/PacsatGround/spacecraft/PacSatSim.properties
if [ -f "$FILE" ]; then
FILE2=/home/pi/PacSatGround/spacecraft/PacSatSim.properties
sudo rm $FILE2
cp $FILE $FILE2
else
echo
echo "The first time you run the Ground Station, you will need to select Yes to override files, then put in your callsign"
sleep 10
fi
fi
fi
value=`cat /home/pi/CubeSatSim/sim.cfg`
echo "$value" > /dev/null
set -- $value
callsign="$1"
txfrequency="$7e3"
rxfrequency="$8e3"
echo -n "Callsign is "
echo $callsign
echo -n "Transmit Frequency is "
echo $txfrequency
echo -n "Receive Frequency is "
echo $rxfrequency
echo
sleep 2
sudo sed -i "s/TNC_TX_DELAY=.*$/TNC_TX_DELAY=750/g" /home/pi/PacSatGround/PacSatGround.properties
sudo sed -i "s/TNC_TX_DELAY=.*$/TNC_TX_DELAY=750/g" /home/pi/PacSatGroundLoop/PacSatGround.properties
sudo modprobe snd-aloop
#sudo systemctl stop cubesatsim >/dev/null 2>&1
#sudo systemctl stop transmit >/dev/null 2>&1
sudo systemctl stop command >/dev/null 2>&1
#/home/pi/CubeSatSim/config -I
sudo systemctl stop command >/dev/null 2>&1
sudo systemctl stop openwebrx >/dev/null 2>&1
sudo systemctl stop rtl_tcp >/dev/null 2>&1
pkill -o chromium &>/dev/null
sudo killall -9 rtl_fm &>/dev/null
#sudo killall -9 direwolf &>/dev/null
sudo killall -9 sdrpp &>/dev/null
#sudo killall -9 aplay &>/dev/null
sudo killall -9 qsstv &>/dev/null
sudo killall -9 rtl_tcp &>/dev/null
sudo killall -9 java &>/dev/null
sudo killall -9 CubicSDR &>/dev/null
sudo killall -9 zenity &>/dev/null
#sudo systemctl restart pacsatsim
#sudo /etc/init.d/alsa-utils stop
#sudo /etc/init.d/alsa-utils start
sudo usermod -a -G gpio pi
if [ "$loopback" = "1" ] ; then
echo "Using Audio Loopback"
ADEVICE="ADEVICE plughw:CARD=Loopback,DEV=1"
PTT="PTT GPIOD gpiochip0 17"
elif [ "$safe" = "1" ] ; then
ADEVICE="ADEVICE shared_mic plughw:CARD=Loopback,DEV=0"
PTT="PTT GPIOD gpiochip0 17"
if [ ! "$txc" = "1" ] ; then
echo "Safe mode - battery saver won't work since no TXC present"
sleep 5
elif [ ! "$soundcard" = "1" ] ; then
echo "Safe mode - battery saver won't work since no sound card present"
sleep 5
else
echo "Safe mode - battery saver"
fi
elif [ "$vox" = "1" ] ; then
ADEVICE="ADEVICE plughw:CARD=Device,DEV=0"
PTT="PTT GPIOD gpiochip0 17"
if [ "$soundcard" = "1" ] ; then
echo "Using Soundcard Audio TX and RX (VOX, no PTT)"
else
echo "Soundcard Audio TX and RX (VOX, no PTT) will not work since no sound card present"
sleep 5
fi
elif [ "$pwm" = "1" ] ; then
ADEVICE="ADEVICE shared_mic plughw:CARD=Headphones,DEV=0"
PTT="PTT GPIOD gpiochip0 -20"
if [ ! "$txc" = "1" ] ; then
echo "FM TXC using Soundcard input (JP13), PWM output won't work since no TXC present"
sleep 5
elif [ ! "$soundcard" = "1" ] ; then
echo "FM TXC using Soundcard input (JP13), PWM output won't work since no sound card present"
sleep 5
else
echo "FM TXC using Soundcard input (JP13), PWM output"
fi
else
echo "FM TXC using Soundcard input (JP13) and output (JP14)"
ADEVICE="ADEVICE shared_mic plughw:CARD=Device,DEV=0"
PTT="PTT GPIOD gpiochip0 -20"
if [ ! "$txc" = "1" ] ; then
echo "FM TXC using Soundcard input (JP13) and output (JP14) won't work since no TXC present"
sleep 5
elif [ ! "$soundcard" = "1" ] ; then
echo "FM TXC using Soundcard input (JP13), output (JP14) won't work since no sound card present"
sleep 5
else
echo "FM TXC using Soundcard input (JP13), output JP14"
fi
fi
DIREWOLF_CONF="/home/pi/CubeSatSim/groundstation/direwolf-pacsat-tmp.conf"
echo "$ADEVICE" > $DIREWOLF_CONF
echo "MYCALL $callsign-1" >> $DIREWOLF_CONF
echo "$PTT" >> $DIREWOLF_CONF
cat /home/pi/CubeSatSim/groundstation/direwolf/direwolf-pacsat.conf >> $DIREWOLF_CONF
echo
echo "$DIREWOLF_CONF"
echo
cat $DIREWOLF_CONF
echo
direwolf -r 48000 -c $DIREWOLF_CONF -t 0 &
cd /home/pi/Desktop/PacsatGround/
if [ "$loopback" = "1" ] ; then
setsid java -Xmx512M -jar PacSatGround.jar "/home/pi/PacSatGroundLoop" # removed &
else
setsid java -Xmx512M -jar PacSatGround.jar "/home/pi/PacSatGround" # removed &
fi
sleep 10
#echo "Stopping Pacsatsim"
#$SHELL

@ -3,7 +3,7 @@ Type=Application
Exec=/home/pi/CubeSatSim/groundstation/rtl-tcp.sh
Name=RTL-TCP
Comment=RTL-TCP for SDR#
Icon=/home/pi/Downloads/SDRSharp.png
Icon=/home/pi/Icons/SDRSharp.png
Path=/home/pi
Terminal=true
Categories=HamRadio

@ -23,13 +23,15 @@ echo "Note: you need to be on the Wifi network: $ssid"
echo
sudo systemctl stop openwebrx
sudo systemctl stop openwebrx &>/dev/null
sleep 2
pkill -o chromium &>/dev/null
sudo systemctl stop rtl_tcp
sudo systemctl stop rtl_tcp &>/dev/null
sudo killall -9 sdrpp &>/dev/null
sudo killall -9 java &>/dev/null
@ -45,10 +47,13 @@ sudo killall -9 qsstv &>/dev/null
sudo killall -9 direwolf &>/dev/null
sudo killall -9 aplay &>/dev/null
#sudo killall -9 aplay &>/dev/null
sudo killall -9 zenity &>/dev/null
sudo /etc/init.d/alsa-utils stop
sudo /etc/init.d/alsa-utils start
sudo killall -9 rtl_fm &>/dev/null
sudo /bin/sh -c 'rtl_tcp -a $(hostname -I|cut -f1 -d " ")'

@ -3,7 +3,7 @@ Description=RTL-TCP
[Service]
TimeoutStopSec = 5
ExecStart=/bin/sh -c '/usr/local/bin/rtl_tcp -a $(hostname -I)'
ExecStart=/bin/sh -c 'rtl_tcp -a $(hostname -I|cut -f1 -d " ")'
WorkingDirectory=/home/pi
StandardOutput=inherit
StandardError=inherit

@ -0,0 +1,9 @@
[Unit]
Description=RTL TCP Socket
PartOf=rtltcp.service
[Socket]
ListenStream=[::]:1234
[Install]
WantedBy=sockets.target

@ -24,6 +24,8 @@ echo "Note: you need to be on the Wifi network: $ssid"
echo
sudo killall -9 sdrpp &>/dev/null
sudo killall -9 java &>/dev/null
sudo killall -9 rtl_fm &>/dev/null
@ -38,13 +40,18 @@ sudo killall -9 sdrpp &>/dev/null
sudo killall -9 qsstv &>/dev/null
sudo killall -9 aplay &>/dev/null
#sudo killall -9 aplay &>/dev/null
sudo killall -9 direwolf &>/dev/null
sudo killall -9 zenity &>/dev/null
sudo systemctl stop rtl_tcp
sudo systemctl stop rtl_tcp &>/dev/null
sudo /etc/init.d/alsa-utils stop
sudo /etc/init.d/alsa-utils start
sudo killall -9 rtl_fm &>/dev/null
sudo killall -9 rtl_fm &>/dev/null
@ -52,7 +59,7 @@ sudo systemctl restart openwebrx
sleep 10
setsid chromium-browser --check-for-update-interval=1 --simulate-critical-update --noerrdialogs --disable-infobars http://127.0.0.1:8073 &>/dev/null &
setsid chromium-browser --check-for-update-interval=1 --simulate-critical-update --noerrdialogs --disable-infobars --app=http://localhost:8073 &>/dev/null &
sleep 10

@ -0,0 +1,47 @@
#!/bin/bash
# script to run sdrpp
echo "Script to run SDRpp for ARISS Radio Pi"
echo
sudo systemctl stop openwebrx
sudo killall -9 java &>/dev/null
sudo killall -9 sdrpp &>/dev/null
sudo systemctl stop rtl_tcp
pkill -o chromium &>/dev/null
sudo killall -9 rtl_fm &>/dev/null
sudo killall -9 direwolf &>/dev/null
#sudo killall -9 aplay &>/dev/null
sudo killall -9 qsstv &>/dev/null
sudo killall -9 rtl_tcp &>/dev/null
sudo killall -9 CubicSDR &>/dev/null
#sudo kill `ps -aux | grep cubicsdr-packet | grep -v grep | awk '{ print $2 }'` &>/dev/null && killall inotifywait &>/dev/null
#sudo kill `ps -aux | grep packet | grep -v grep | awk '{ print $2 }'` &>/dev/null && killall inotifywait &>/dev/null
#sudo kill `ps -aux | grep sstv_decode_prompt| grep -v grep | awk '{ print $2 }'` &>/dev/null && killall inotifywait &>/dev/null
sudo killall -9 zenity &>/dev/null
sudo /etc/init.d/alsa-utils stop
sudo /etc/init.d/alsa-utils start
sleep 5
setsid sdrpp &
sleep 10
#$SHELL

@ -3,7 +3,7 @@ Type=Application
Exec=/home/pi/CubeSatSim/groundstation/loc.sh
Name=Set My Location
Comment=Set Location for Gpredict
Icon=/home/pi/Downloads/gpredict.png
Icon=/home/pi/Icons/gpredict.png
Path=/home/pi
Terminal=true
Categories=HamRadio

@ -0,0 +1,808 @@
{
"version": 8,
"sdrs": {
"rtlsdr": {
"name": "RTL-SDR",
"type": "rtl_sdr",
"profiles": {
"70cm": {
"name": "70cm Ham Band 435 MHz (CubeSatSim)",
"center_freq": 435000000,
"rf_gain": 10.0,
"samp_rate": 2400000,
"start_freq": 434900000,
"start_mod": "nfm",
"tuning_step": 1000,
"direct_sampling": 0
},
"2m": {
"name": "WX Band 161 MHz",
"center_freq": 162400000,
"rf_gain": 29,
"samp_rate": 2048000,
"start_freq": 157000000,
"start_mod": "nfm"
},
"e59a4765-4139-4ab8-89c5-d8ac3343ba70": {
"name": "2m Ham Band 146 MHz (ISS)",
"center_freq": 145000000,
"samp_rate": 2400000,
"start_freq": 145000000,
"start_mod": "nfm",
"rf_gain": 42.0,
"direct_sampling": 0
},
"faf80b0b-1a96-4a9b-96fa-ce40b109c7e0": {
"name": "70cm Ham Band 438 MHz (ISS)",
"rf_gain": 29.0,
"center_freq": 438000000,
"samp_rate": 2400000,
"start_freq": 437800000,
"start_mod": "nfm"
},
"a4fd4a5d-d2d0-4949-87e2-bda83cd83a37": {
"name": "FM Band 95 MHz",
"rf_gain": 29.0,
"center_freq": 95000000,
"samp_rate": 2400000,
"start_freq": 94000000,
"start_mod": "wfm"
},
"ce2bca29-78cb-45d8-ab46-8dea3135981c": {
"name": "10m Ham Band 28 MHz",
"rf_gain": 29.0,
"center_freq": 28000000,
"samp_rate": 2400000,
"start_freq": 28000000,
"start_mod": "usb",
"direct_sampling": 0
},
"d6cdbf2d-74e4-4cac-aaa8-e793103a8e89": {
"name": "6m Ham Band 51 MHz",
"rf_gain": 29.0,
"center_freq": 51000000,
"samp_rate": 2400000,
"start_freq": 51000000,
"start_mod": "nfm",
"direct_sampling": 0
},
"e2aba387-1d3b-4ca8-b280-e119282b8812": {
"name": "90 MHz FM Band",
"rf_gain": 29.0,
"center_freq": 90000000,
"samp_rate": 2400000,
"start_freq": 90000000,
"start_mod": "wfm"
},
"f700b99d-3c51-4524-b151-a0809b868ecc": {
"name": "92 MHz FM Band",
"rf_gain": 29.0,
"center_freq": 92000000,
"samp_rate": 2400000,
"start_freq": 92000000,
"start_mod": "wfm"
},
"dc6af94f-d607-4fee-a522-7f375f66a62c": {
"name": "94 MHz FM Band",
"rf_gain": 29.0,
"center_freq": 94000000,
"samp_rate": 2400000,
"start_freq": 94000000,
"start_mod": "wfm"
},
"6887e85a-a4dc-4245-810f-99801fc5e824": {
"name": "96 MHz FM Band",
"rf_gain": 29.0,
"center_freq": 96000000,
"samp_rate": 2400000,
"start_freq": 96000000,
"start_mod": "wfm"
},
"a2182ed6-70a8-4377-b233-ac6f8ccc91d7": {
"name": "98 MHz FM Band",
"rf_gain": 29.0,
"center_freq": 96000000,
"samp_rate": 2400000,
"start_freq": 96000000,
"start_mod": "wfm"
},
"57e38353-fb86-4935-899b-e365228b8ae5": {
"name": "100 MHz FM Band",
"center_freq": 100000000,
"samp_rate": 2400000,
"start_freq": 100000000,
"start_mod": "wfm"
},
"5e9ec6dd-905d-4781-bd13-9cb702f58e84": {
"name": "102 MHz FM Band",
"rf_gain": 29.0,
"center_freq": 102000000,
"samp_rate": 2400000,
"start_freq": 102000000,
"start_mod": "wfm"
},
"ef2c703c-2e22-4e87-82b5-581420d704bd": {
"name": "104 MHz FM Band",
"rf_gain": 29.0,
"center_freq": 104000000,
"samp_rate": 2400000,
"start_freq": 104000000,
"start_mod": "wfm"
},
"34cc3ddf-8018-4288-acb9-29e6940bc37e": {
"name": "106 MHz FM Band",
"rf_gain": 29.0,
"center_freq": 106000000,
"samp_rate": 2400000,
"start_freq": 106000000,
"start_mod": "wfm"
},
"b4693683-ccf5-474d-a2d9-9a47b0a18ee2": {
"name": "108 MHz FM Band",
"rf_gain": 29.0,
"center_freq": 108000000,
"samp_rate": 2400000,
"start_freq": 108000000,
"start_mod": "wfm"
},
"34224d77-7b61-467c-b78f-18c7f3af1a0c": {
"name": "110 MHz FM Band",
"rf_gain": 29.0,
"center_freq": 110000000,
"samp_rate": 2400000,
"start_freq": 110000000,
"start_mod": "wfm"
},
"8dd82d97-73db-4fa7-ac41-263c3026ea1d": {
"name": "112 MHz",
"rf_gain": 29.0,
"center_freq": 112000000,
"samp_rate": 2400000,
"start_freq": 112000000,
"start_mod": "nfm"
},
"79304b30-f10d-469e-9617-50a19bfdb435": {
"name": "114 MHz",
"rf_gain": 29.0,
"center_freq": 114000000,
"samp_rate": 2400000,
"start_freq": 114000000,
"start_mod": "nfm"
},
"c00bf096-27b8-4262-832c-df1a308d7eb9": {
"name": "116 MHz",
"rf_gain": 29.0,
"center_freq": 116000000,
"samp_rate": 2400000,
"start_freq": 116000000,
"start_mod": "nfm"
},
"669d25a6-6c15-4131-a330-3c33dd2147f0": {
"name": "118 Mhz Air Band",
"rf_gain": 29.0,
"center_freq": 118000000,
"samp_rate": 2400000,
"start_freq": 118000000,
"start_mod": "am"
},
"948248fa-43d9-4e7d-bf86-afaadd391779": {
"name": "120 MHz Air Band",
"rf_gain": 29.0,
"center_freq": 120000000,
"samp_rate": 2400000,
"start_freq": 120000000,
"start_mod": "am"
},
"b634273b-8fc8-4e87-b5c4-e6226d4be0ac": {
"name": "122 MHz Air Band",
"rf_gain": 42.0,
"center_freq": 122000000,
"samp_rate": 2400000,
"start_freq": 121000000,
"start_mod": "nfm"
},
"c55289a2-8286-4a3d-a505-37ba2867571a": {
"name": "124 Mhz Air Band",
"rf_gain": 42.0,
"center_freq": 124000000,
"samp_rate": 2400000,
"start_freq": 124000000,
"start_mod": "am"
},
"4fe488b7-f369-43ba-bb49-91e1a185be7a": {
"name": "126 MHz Air Band",
"rf_gain": 29.0,
"center_freq": 126000000,
"samp_rate": 2400000,
"start_freq": 126000000,
"start_mod": "am"
},
"e79639a2-1384-4e92-8e46-f6e5670ec9fd": {
"name": "128 MHz Air Band",
"rf_gain": 42.0,
"center_freq": 128000000,
"samp_rate": 2400000,
"start_freq": 128000000,
"start_mod": "am"
},
"319f3fb2-b98a-4620-85a7-a99d5a722bd5": {
"name": "130 MHz Air Band",
"rf_gain": 42.0,
"center_freq": 130000000,
"samp_rate": 2400000,
"start_freq": 130000000,
"start_mod": "am"
},
"63c5c2ce-07de-496c-81f6-b188a7adbf39": {
"name": "132 MHz Air Band",
"rf_gain": 42.0,
"center_freq": 132000000,
"samp_rate": 2400000,
"start_freq": 132000000,
"start_mod": "am"
},
"386bdc7b-eb10-4e05-972a-69d730a23cd8": {
"name": "134 MHz Air Band",
"rf_gain": 29.0,
"center_freq": 134000000,
"samp_rate": 2400000,
"start_freq": 134000000,
"start_mod": "am"
},
"ae8ea8b1-23de-45ef-b8c4-3b83a188e65d": {
"name": "136 MHz Air Band",
"rf_gain": 42.0,
"center_freq": 136000000,
"samp_rate": 2400000,
"start_freq": 136000000,
"start_mod": "am"
},
"c0b1a28c-5e07-400a-a5f3-07c62db27587": {
"name": "138 MHz NOAA Weather Satellite Band",
"rf_gain": 42.0,
"center_freq": 138000000,
"samp_rate": 2400000,
"start_freq": 138000000,
"start_mod": "nfm"
},
"20f7ce56-fd85-4b3e-8fac-94cbe9ba0e1d": {
"name": "140 MHz ",
"rf_gain": 42.0,
"center_freq": 140000000,
"samp_rate": 2400000,
"start_freq": 140000000,
"start_mod": "nfm"
},
"882079f8-5697-428a-ae9d-bcc091269c7f": {
"name": "142 MHz ",
"rf_gain": 42.0,
"center_freq": 142000000,
"samp_rate": 2400000,
"start_freq": 142000000,
"start_mod": "nfm"
},
"da1b3f12-2eba-40e9-8c62-33493adf74b3": {
"name": "144 MHz 2m Ham Band",
"rf_gain": 42.0,
"center_freq": 144000000,
"samp_rate": 2400000,
"start_freq": 144000000,
"start_mod": "nfm"
},
"8d9cf1e1-44c5-41c4-bcea-7b1c69446e62": {
"name": "146 MHz 2m Ham Band",
"rf_gain": 42.0,
"center_freq": 146000000,
"samp_rate": 2400000,
"start_freq": 146000000,
"start_mod": "nfm"
},
"eec8aa0d-3485-43d2-baa4-82f7d9e14df6": {
"name": "148 MHz 2m Ham Band",
"rf_gain": 42.0,
"center_freq": 148000000,
"samp_rate": 2400000,
"start_freq": 148000000,
"start_mod": "nfm"
},
"bf66a908-1988-4aec-b998-06e2bc7d0a84": {
"name": "150 MHz",
"rf_gain": 42.0,
"center_freq": 150000000,
"samp_rate": 2400000,
"start_freq": 150000000,
"start_mod": "nfm"
},
"0389f270-b919-4aae-a313-f73697059f70": {
"name": "152 MHz",
"rf_gain": 42.0,
"center_freq": 152000000,
"samp_rate": 2400000,
"start_freq": 152000000,
"start_mod": "nfm"
},
"6ef9d955-76aa-46c0-8463-2c23def5e37b": {
"name": "154 MHz",
"rf_gain": 42.0,
"center_freq": 154000000,
"samp_rate": 2400000,
"start_freq": 154000000,
"start_mod": "nfm"
},
"5d0a64c7-3bce-408e-94d9-c8315bef7540": {
"name": "156 MHz",
"rf_gain": 42.0,
"center_freq": 156000000,
"samp_rate": 2400000,
"start_freq": 156000000,
"start_mod": "nfm"
},
"5b869cae-ffa7-4554-96af-7acd497bbaf3": {
"name": "158 MHz",
"rf_gain": 42.0,
"center_freq": 158000000,
"samp_rate": 2400000,
"start_freq": 158000000,
"start_mod": "nfm"
},
"0de7c5d4-14fc-4655-9a81-2bcebb2f4147": {
"name": "160 MHz",
"rf_gain": 42.0,
"center_freq": 160000000,
"samp_rate": 2400000,
"start_freq": 160000000,
"start_mod": "nfm"
},
"8ca54821-8b80-4938-a35c-9fe25e2320d1": {
"name": "162 MHz",
"rf_gain": 42.0,
"center_freq": 162000000,
"samp_rate": 2400000,
"start_freq": 162000000,
"start_mod": "nfm"
},
"f74d262d-9e98-4030-86b2-45676121ff1e": {
"name": "164 MHz",
"rf_gain": 42.0,
"center_freq": 164000000,
"samp_rate": 2400000,
"start_freq": 164000000,
"start_mod": "nfm"
},
"bfc9c686-6c06-4de2-b1d5-c8f012131042": {
"name": "168 MHz",
"rf_gain": 42.0,
"center_freq": 168000000,
"samp_rate": 2400000,
"start_freq": 167000000,
"start_mod": "nfm"
},
"5468e597-d529-42fe-9fcf-0ff4fa9e2d06": {
"name": "170 MHz",
"rf_gain": 42.0,
"center_freq": 170000000,
"samp_rate": 2400000,
"start_freq": 170000000,
"start_mod": "nfm"
},
"e124cc6e-7177-4d5f-ae5b-2ec6a6fa2956": {
"name": "172 MHz",
"rf_gain": 42.0,
"center_freq": 172000000,
"samp_rate": 2400000,
"start_freq": 172000000,
"start_mod": "nfm"
},
"1ce0f3ed-4763-4f00-916a-4f72d29ba410": {
"name": "174 MHz ",
"rf_gain": 42.0,
"center_freq": 174000000,
"samp_rate": 2400000,
"start_freq": 174000000,
"start_mod": "nfm"
},
"639b1496-a2b9-4a42-ad28-3cda89fbe2fb": {
"name": "420 MHz 70cm Ham Band",
"rf_gain": 42.0,
"center_freq": 420000000,
"samp_rate": 2400000,
"start_freq": 420000000,
"start_mod": "nfm"
},
"bbc9b57e-ea86-43ef-be65-cb2337615ae5": {
"name": "422 MHz 70cm Ham Band",
"rf_gain": 42.0,
"center_freq": 422000000,
"samp_rate": 2400000,
"start_freq": 422000000,
"start_mod": "nfm",
"direct_sampling": 0
},
"3aed286d-7d13-4338-8621-d1c0dfdf3ac6": {
"name": "424 MHz 70cm Ham Band",
"rf_gain": 42.0,
"center_freq": 424000000,
"samp_rate": 2400000,
"start_freq": 424000000,
"start_mod": "nfm",
"direct_sampling": 0
},
"9ae664b4-48f3-410a-8995-edc60127d746": {
"name": "426 MHz 70cm Ham Band",
"rf_gain": 42.0,
"center_freq": 426000000,
"samp_rate": 2400000,
"start_freq": 426000000,
"start_mod": "nfm",
"direct_sampling": 0
},
"24d2467b-6740-42b5-8d3f-8f389fc0860b": {
"name": "428 MHz 70cm Ham Band",
"rf_gain": 42.0,
"center_freq": 428000000,
"samp_rate": 2400000,
"start_freq": 428000000,
"start_mod": "nfm",
"direct_sampling": 0
},
"debbc3ab-081d-41e7-80fe-7d564838154e": {
"name": "430 MHz 70cm Ham Band",
"rf_gain": 42.0,
"center_freq": 430000000,
"samp_rate": 2400000,
"start_freq": 430000000,
"start_mod": "nfm",
"direct_sampling": 0
},
"649233e0-fc85-415d-b88e-94750f49ca4b": {
"name": "432 MHz 70cm Ham Band",
"rf_gain": 42.0,
"center_freq": 432000000,
"samp_rate": 2400000,
"start_freq": 432000000,
"start_mod": "nfm",
"direct_sampling": 0
},
"bed3b482-fd3b-45ee-b924-200aa4223ace": {
"name": "434 MHz 70cm Ham Band",
"rf_gain": 42.0,
"center_freq": 434000000,
"samp_rate": 2400000,
"start_freq": 434000000,
"start_mod": "nfm",
"direct_sampling": 0
},
"58dfac9e-6030-4bb3-ba28-465285baa25e": {
"name": "436 MHz 70cm Ham Band",
"rf_gain": 42.0,
"center_freq": 436000000,
"samp_rate": 2400000,
"start_freq": 436000000,
"start_mod": "nfm",
"direct_sampling": 0
},
"4c293b84-cd43-495f-95a5-1fcabfe4e4c7": {
"name": "438 MHz 70cm Ham Band",
"rf_gain": 42.0,
"center_freq": 438000000,
"samp_rate": 2400000,
"start_freq": 438000000,
"start_mod": "nfm",
"direct_sampling": 0
},
"0e763161-a0e8-411a-abe6-c1af13045f27": {
"name": "440 MHz 70cm Ham Band",
"rf_gain": 42.0,
"center_freq": 440000000,
"samp_rate": 2400000,
"start_freq": 440000000,
"start_mod": "nfm",
"direct_sampling": 0
},
"6dda77d3-e859-41b7-9b0b-22c2dee47472": {
"name": "442 MHz 70cm Ham Band",
"rf_gain": 42.0,
"center_freq": 442000000,
"samp_rate": 2400000,
"start_freq": 442000000,
"start_mod": "nfm",
"direct_sampling": 0
},
"285813ef-aa6d-433f-a316-074f47e02073": {
"name": "444 MHz 70cm Ham Band",
"rf_gain": 42.0,
"center_freq": 444000000,
"samp_rate": 2400000,
"start_freq": 444000000,
"start_mod": "nfm",
"direct_sampling": 0
},
"e0842b63-6857-4554-874b-fad99e4db03a": {
"name": "446 MHz 70cm Ham Band",
"rf_gain": 42.0,
"center_freq": 446000000,
"samp_rate": 2400000,
"start_freq": 446000000,
"start_mod": "nfm",
"direct_sampling": 0
},
"c7b21c80-cfef-42e8-a6fe-c5eea4556c7e": {
"name": "448 MHz 70cm Ham Band",
"rf_gain": 42.0,
"center_freq": 448000000,
"samp_rate": 2400000,
"start_freq": 448000000,
"start_mod": "nfm",
"direct_sampling": 0
},
"d98b4d4a-8247-4a99-9fc7-89780e5e1fef": {
"name": "450 MHz 70cm Ham Band",
"rf_gain": 42.0,
"center_freq": 450000000,
"samp_rate": 2400000,
"start_freq": 450000000,
"start_mod": "nfm",
"direct_sampling": 0
},
"a09a546f-c56f-41b5-ae34-c5511afbcef5": {
"name": "460 MHz",
"rf_gain": 42.0,
"center_freq": 460000000,
"samp_rate": 2400000,
"start_freq": 460000000,
"start_mod": "nfm",
"direct_sampling": 0
},
"232b2ae6-88dd-4e58-b489-37f310e5e204": {
"name": "462 MHz FRS/GMRS",
"rf_gain": 42.0,
"center_freq": 462000000,
"samp_rate": 2400000,
"start_freq": 462000000,
"start_mod": "nfm",
"direct_sampling": 0
},
"41db9b38-87d7-40a0-9f90-1f0c77c054d9": {
"name": "464 MHz FRS/GMRS",
"rf_gain": 42.0,
"center_freq": 464000000,
"samp_rate": 2400000,
"start_freq": 464000000,
"start_mod": "nfm",
"direct_sampling": 0
},
"e9bb7781-eb9b-4314-b399-2d96c52716f0": {
"name": "466 MHz FRS/GMRS",
"rf_gain": 42.0,
"center_freq": 466000000,
"samp_rate": 2400000,
"start_freq": 466000000,
"start_mod": "nfm",
"direct_sampling": 0
},
"5d9e07e8-eb42-4832-82c9-016f05d89027": {
"name": "468 MHz FRS/GMRS",
"rf_gain": 42.0,
"center_freq": 468000000,
"samp_rate": 2400000,
"start_freq": 468000000,
"start_mod": "nfm",
"direct_sampling": 0
},
"20m": {
"name": "20m",
"center_freq": 14150000,
"samp_rate": 384000,
"start_freq": 14070000,
"start_mod": "usb",
"tuning_step": "500",
"rf_gain": 42.0,
"direct_sampling": 1
},
"30m": {
"name": "30m",
"center_freq": 10125000,
"samp_rate": 192000,
"start_freq": 10142000,
"start_mod": "usb",
"tuning_step": "500",
"rf_gain": 42.0,
"direct_sampling": 1
},
"40m": {
"name": "40m",
"center_freq": 7100000,
"samp_rate": 256000,
"start_freq": 7070000,
"start_mod": "lsb",
"tuning_step": "500",
"rf_gain": 42.0,
"direct_sampling": 1
},
"80m": {
"name": "80m",
"center_freq": 3650000,
"samp_rate": 384000,
"start_freq": 3570000,
"start_mod": "lsb",
"tuning_step": "500",
"rf_gain": 42.0,
"direct_sampling": 1
},
"49m": {
"name": "49m Broadcast",
"center_freq": 6050000,
"samp_rate": 384000,
"start_freq": 6070000,
"start_mod": "am",
"tuning_step": "1000",
"rf_gain": 42.0,
"direct_sampling": 1
},
"c1982ce1-7504-455e-908c-dc097fa031a8": {
"name": "1090 MHz ADS-B Band",
"rf_gain": 42.0,
"center_freq": 1090000000,
"samp_rate": 2400000,
"start_freq": 1090000000,
"start_mod": "adsb",
"tuning_step": 1,
"direct_sampling": 0
},
"cb7f2f8e-e317-4a5e-9504-826dd3781791": {
"name": "978 MHz ADS-B Band",
"rf_gain": 42.0,
"center_freq": 978000000,
"samp_rate": 2400000,
"start_freq": 978000000,
"start_mod": "adsb",
"tuning_step": 1
}
}
},
"airspy": {
"name": "Airspy HF+",
"type": "airspyhf",
"rf_gain": "auto",
"profiles": {
"20m": {
"name": "20m",
"center_freq": 14150000,
"samp_rate": 384000,
"start_freq": 14070000,
"start_mod": "usb",
"tuning_step": "500"
},
"30m": {
"name": "30m",
"center_freq": 10125000,
"samp_rate": 192000,
"start_freq": 10142000,
"start_mod": "usb",
"tuning_step": "500"
},
"40m": {
"name": "40m",
"center_freq": 7100000,
"samp_rate": 256000,
"start_freq": 7070000,
"start_mod": "lsb",
"tuning_step": "500"
},
"80m": {
"name": "80m",
"center_freq": 3650000,
"samp_rate": 384000,
"start_freq": 3570000,
"start_mod": "lsb",
"tuning_step": "500"
},
"49m": {
"name": "49m Broadcast",
"center_freq": 6050000,
"samp_rate": 384000,
"start_freq": 6070000,
"start_mod": "am",
"tuning_step": "1000"
}
}
},
"sdrplay": {
"name": "SDRPlay device",
"type": "sdrplay",
"antenna": "Antenna A",
"rf_gain": "auto",
"profiles": {
"20m": {
"name": "20m",
"center_freq": 14150000,
"samp_rate": 500000,
"start_freq": 14070000,
"start_mod": "usb",
"tuning_step": "500"
},
"30m": {
"name": "30m",
"center_freq": 10125000,
"samp_rate": 250000,
"start_freq": 10142000,
"start_mod": "usb",
"tuning_step": "500"
},
"40m": {
"name": "40m",
"center_freq": 7100000,
"samp_rate": 500000,
"start_freq": 7070000,
"start_mod": "lsb",
"tuning_step": "500"
},
"80m": {
"name": "80m",
"center_freq": 3650000,
"samp_rate": 500000,
"start_freq": 3570000,
"start_mod": "lsb",
"tuning_step": "500"
},
"49m": {
"name": "49m Broadcast",
"center_freq": 6000000,
"samp_rate": 500000,
"start_freq": 6070000,
"start_mod": "am",
"tuning_step": "1000"
}
}
}
},
"receiver_name": "ARISS Radio Pi",
"receiver_location": "Budapest, Hungary",
"receiver_asl": 200,
"receiver_admin": "example@example.com",
"receiver_gps": {
"lat": 39.95233,
"lon": -75.16379
},
"photo_title": "Panorama of Budapest from Sch\u00f6nherz Zolt\u00e1n Dormitory",
"photo_desc": "",
"max_clients": 20,
"keep_files": 20,
"session_timeout": 0,
"usage_policy_url": "policy",
"allow_chat": true,
"allow_audio_recording": true,
"allow_center_freq_changes": false,
"magic_key": "memagic",
"receiver_keys": [],
"waterfall_scheme": "GoogleTurboWaterfall",
"fft_fps": 9,
"fft_size": 4096,
"fft_voverlap_factor": 0.3,
"waterfall_levels": {
"min": -88.0,
"max": -20.0
},
"waterfall_auto_levels": {
"min": 3.0,
"max": 10.0
},
"waterfall_auto_level_default_mode": false,
"waterfall_auto_min_range": 50,
"audio_compression": "adpcm",
"fft_compression": "adpcm",
"tuning_precision": 2,
"eibi_bookmarks_range": 0,
"repeater_range": 0,
"map_type": "google",
"google_maps_api_key": "",
"openweathermap_api_key": "",
"map_position_retention_time": 7200,
"map_ignore_indirect_reports": false,
"map_prefer_recent_reports": true,
"callsign_url": "https://www.qrzcq.com/call/{}",
"vessel_url": "https://www.vesselfinder.com/vessels/details/{}",
"flight_url": "https://flightaware.com/live/flight/{}",
"modes_url": "https://flightaware.com/live/modes/{}/redirect"
}

@ -4,10 +4,12 @@ echo "Script to decode SSTV using QSSTV with rtl_fm"
echo
sudo systemctl stop openwebrx
sudo systemctl stop openwebrx &>/dev/null
sudo modprobe snd-aloop
sudo killall -9 sdrpp &>/dev/null
sudo killall -9 qsstv &>/dev/null
sudo killall -9 rtl_fm &>/dev/null
@ -16,7 +18,7 @@ sudo killall -9 aplay &>/dev/null
sudo killall -9 direwolf &>/dev/null
sudo systemctl stop rtl_tcp
sudo systemctl stop rtl_tcp &>/dev/null
pkill -o chromium &>/dev/null
@ -30,6 +32,9 @@ sudo killall -9 sdrpp &>/dev/null
sudo killall -9 zenity &>/dev/null
sudo /etc/init.d/alsa-utils stop
sudo /etc/init.d/alsa-utils start
sudo killall -9 rtl_fm &>/dev/null
#echo "s" >> .mode

@ -3,7 +3,7 @@ Type=Application
Exec=/home/pi/CubeSatSim/groundstation/sdr.sh
Name=Web SDR
Comment=openwebrx for Web SDR
Icon=/home/pi/Downloads/openwebrx.png
Icon=/home/pi/Icons/openwebrx.png
Path=/home/pi
Terminal=true
Categories=HamRadio

@ -0,0 +1,13 @@
Here is information about the CubeSatSim Lite v2 hardware
cubesatsim-Lite_2.0.1_gerbers.zip -- All gerber files used to fabricate PCBs
cubesatsim-Lite_2.0.1_schematic.pdf -- Schematic
cubesatsim-Lite_2.0.1.mnt -- SMD file
cubesatsim-lLite_2.0.1_pcb.png -- image of board
cubesatsim-Lite_2.0.1_bom.csv.txt -- Bill of Materials (BOM)
For more information see https://github.com/alanbjohnston/CubeSatSim/wiki/CubeSatSim-Lite

@ -0,0 +1,5 @@
JP1 44.68 53.87 0 JUMPER-SMT_2_NC_TRACE_SILK SMT-JUMPER_2_NC_TRACE_SILK
JP2 23.14 59.97 0 JUMPER-SMT_2_NO_SILK SMT-JUMPER_2_NO_SILK
JP3 21.74 56.03 270 JUMPER-SMT_2_NC_TRACE_SILK SMT-JUMPER_2_NC_TRACE_SILK
JP6 33.99 59.61 0 JUMPER-SMT_2_NC_TRACE_SILK SMT-JUMPER_2_NC_TRACE_SILK
JP7 16.00 63.09 90 JUMPER-SMT_2_NO_SILK SMT-JUMPER_2_NO_SILK

@ -0,0 +1,26 @@
C1 8.36 61.93 0 18pF C0603
C2 10.03 61.90 0 16pF C0603
C3 56.06 58.32 90 18pF C0603
C4 55.47 62.84 270 16pF C0603
C7 49.23 56.57 0 DNI/47uF C0603
C8 50.47 47.68 270 DNI/100nF C0603
E1 3.63 53.23 270 ANT-916-CHP-T XDCR_ANT-916-CHP-T
E2 61.39 53.21 270 ANT-916-CHP-T XDCR_ANT-916-CHP-T
J1 32.55 66.61 0 CONN_20X2 2X20
J13 9.25 45.02 180 SJ1-2503A CONN_SJ1-2503A
J14 55.07 45.08 180 SJ1-2503A CONN_SJ1-2503A
L1 9.22 59.44 180 13nH L0603
L2 56.24 60.55 270 13nH L0603
LED5 19.08 42.09 270 GREEN LED-0603
LED6 43.94 41.91 270 BLUE LED-0603
R2 46.63 62.48 180 DNI/1k R0603
R4 51.18 62.51 180 DNI/1k R0603
R10 12.70 41.91 90 DNI/1k 0603-RES
R11 51.66 41.91 90 DNI/100 0603-RES
R16 13.79 60.22 0 DNI/68 R0805
R17 18.44 60.33 270 DNI/180 R0603
R18 26.67 60.22 180 DNI/68 R0805
R21 48.90 51.23 0 DNI/100 R0603
R22 55.14 51.99 0 DNI/220 R0603
S2 7.80 51.82 90 DTSM-6 DTSM-6
U6 32.94 51.75 270 SR105U SR_FRS_0W5

@ -0,0 +1,53 @@
"Part";"Value";"Device";"Package";"Description";"";
"C1";"18pF";"CERAMIC-10PF-50V-5%-NPO(0603)";"C0603";"302010097";"";
"C2";"16pF";"CERAMIC-10PF-50V-5%-NPO(0603)";"C0603";"302010097";"";
"C3";"18pF";"CERAMIC-10PF-50V-5%-NPO(0603)";"C0603";"302010097";"";
"C4";"16pF";"CERAMIC-10PF-50V-5%-NPO(0603)";"C0603";"302010097";"";
"C5";"47uF";"CAPPTH";"CAP-PTH-SMALL";"Capacitor";"";
"C6";"100nF";"CAPPTH";"CAP-PTH-SMALL";"Capacitor";"";
"C7";"DNI/47uF";"CERAMIC-10PF-50V-5%-NPO(0603)";"C0603";"302010097";"";
"C8";"DNI/100nF";"CERAMIC-10PF-50V-5%-NPO(0603)";"C0603";"302010097";"";
"E1";"ANT-916-CHP-T";"ANT-916-CHP-T";"XDCR_ANT-916-CHP-T";"868MHz ISM, LoRa, Sensor Networks, SigFox Chip RF Antenna 863MHz ~ 873MHz 0.5dBi Solder Surface Mount Check prices";"";
"E2";"ANT-916-CHP-T";"ANT-916-CHP-T";"XDCR_ANT-916-CHP-T";"868MHz ISM, LoRa, Sensor Networks, SigFox Chip RF Antenna 863MHz ~ 873MHz 0.5dBi Solder Surface Mount Check prices";"";
"J1";"CONN_20X2";"CONN_20X2";"2X20";"Multi connection point. Often used as Generic Header-pin footprint for 0.1 inch spaced/style header connections";"";
"J2";"";"CONN_021X02_NO_SILK";"1X02_NO_SILK";"Multi connection point. Often used as Generic Header-pin footprint for 0.1 inch spaced/style header connections";"";
"J6";"Micro JST";"M02JST-PTH-VERT";"JST-2-PTH-VERT";"Standard 2-pin 0.1" header. Use with";"";
"J10";"DNI/Sparkfun QWIIC Breakout";"CONN_041X04_NO_SILK";"1X04_NO_SILK";"Multi connection point. Often used as Generic Header-pin footprint for 0.1 inch spaced/style header connections";"";
"J12";"DNI/1x4 pin header";"CONN_041X04_NO_SILK";"1X04_NO_SILK";"Multi connection point. Often used as Generic Header-pin footprint for 0.1 inch spaced/style header connections";"";
"J13";"SJ1-2503A";"SJ1-2503A";"CONN_SJ1-2503A";"";"";
"J14";"SJ1-2503A";"SJ1-2503A";"CONN_SJ1-2503A";"";"";
"J15";"";"CONN_06NO_SILK_NO_POP";"1X06_NO_SILK";"Multi connection point. Often used as Generic Header-pin footprint for 0.1 inch spaced/style header connections";"";
"JP1";"JUMPER-SMT_2_NC_TRACE_SILK";"JUMPER-SMT_2_NC_TRACE_SILK";"SMT-JUMPER_2_NC_TRACE_SILK";"Normally closed trace jumper";"";
"JP2";"JUMPER-SMT_2_NO_SILK";"JUMPER-SMT_2_NO_SILK";"SMT-JUMPER_2_NO_SILK";"Normally open jumper";"";
"JP3";"JUMPER-SMT_2_NC_TRACE_SILK";"JUMPER-SMT_2_NC_TRACE_SILK";"SMT-JUMPER_2_NC_TRACE_SILK";"Normally closed trace jumper";"";
"JP6";"JUMPER-SMT_2_NC_TRACE_SILK";"JUMPER-SMT_2_NC_TRACE_SILK";"SMT-JUMPER_2_NC_TRACE_SILK";"Normally closed trace jumper";"";
"JP7";"JUMPER-SMT_2_NO_SILK";"JUMPER-SMT_2_NO_SILK";"SMT-JUMPER_2_NO_SILK";"Normally open jumper";"";
"L1";"13nH";"SMD-FERRITE-CHIP-120-OHM-500MA(0603)";"L0603";"303030001";"";
"L2";"13nH";"SMD-FERRITE-CHIP-120-OHM-500MA(0603)";"L0603";"303030001";"";
"LED3";"Green 5mm";"LED3MM";"LED3MM";"LED";"";
"LED4";"Blue 5mm";"LED3MM";"LED3MM";"LED";"";
"LED5";"GREEN";"LED-GREEN0603";"LED-0603";"Green SMD LED";"";
"LED6";"BLUE";"LED-BLUE0603";"LED-0603";"Blue SMD LED";"";
"R1";"1K";"RESISTORPTH-1/4W-VERT";"AXIAL-0.1";"Resistor";"";
"R2";"DNI/1k";"R-EU_R0603";"R0603";"RESISTOR, European symbol";"";
"R3";"1K";"RESISTORPTH-1/4W-VERT";"AXIAL-0.1";"Resistor";"";
"R4";"DNI/1k";"R-EU_R0603";"R0603";"RESISTOR, European symbol";"";
"R7";"1k";"RESISTORPTH-1/4W-VERT";"AXIAL-0.1";"Resistor";"";
"R8";"DNI/100";"RESISTOR0603";"0603-RES";"Resistor";"";
"R10";"DNI/1k";"RESISTOR0603-RES";"0603-RES";"Resistor";"";
"R11";"100";"RESISTORPTH-1/4W-VERT";"AXIAL-0.1";"Resistor";"";
"R13";"68";"RESISTORPTH-1/4W-VERT";"AXIAL-0.1";"Resistor";"";
"R14";"180";"RESISTORPTH-1/4W-VERT";"AXIAL-0.1";"Resistor";"";
"R15";"68";"RESISTORPTH-1/4W-VERT";"AXIAL-0.1";"Resistor";"";
"R16";"DNI/68";"R-US_R0805";"R0805";"RESISTOR, American symbol";"";
"R17";"DNI/180";"SMD-RES-1.2K-1%-1/10W(0603)";"R0603";"301010206";"";
"R18";"DNI/68";"R-US_R0805";"R0805";"RESISTOR, American symbol";"";
"R19";"100";"RESISTORPTH-1/4W-VERT-KIT";"AXIAL-0.1EZ";"Resistor";"";
"R20";"220";"RESISTORPTH-1/4W-VERT-KIT";"AXIAL-0.1EZ";"Resistor";"";
"R21";"DNI/100";"SMD-RES-1.2K-1%-1/10W(0603)";"R0603";"301010206";"";
"R22";"DNI/220";"SMD-RES-1.2K-1%-1/10W(0603)";"R0603";"301010206";"";
"S1";"RA-SPST";"RA-SPST";"RA-SPST";"";"";
"S2";"DTSM-6";"DTSM-6";"DTSM-6";"";"";
"U1";"SR105U";"SR_FRS_0W5";"SR_FRS_0W5";"";"";
"X2";"SMA-VERT";"SMA-VERT";"SMA-VERT";"";"";
"X3";"SMA-VERT";"SMA-VERT";"SMA-VERT";"";"";

Binary file not shown.

After

Width:  |  Height:  |  Size: 1005 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

@ -10,4 +10,4 @@ cubesatsim-lite-0.5_pcb.png -- image of board
cubesatsim-lite-0.5.csv.txt -- Bill of Materials (BOM)
For more information see https://github.com/alanbjohnston/CubeSatSim/wiki/CubeSatSim-Lite
For more information see https://github.com/alanbjohnston/CubeSatSim/wiki/CubeSatSim-Lite-Beta-vB5

@ -0,0 +1,23 @@
"Part";"Value";"Device";"Package";"Description";"";
"BT1";"1024";"1024";"BAT_1024";"Check availability";"";
"BT2";"1012";"1012";"BAT_1012";"Check availability";"";
"C1";"DNI/0.1µF";"CAP_CERAMIC0603";"0603";"Ceramic Capacitors";"";
"F1";"PTC";"PTCPTH";"PTC";"Resettable Fuse PTC";"";
"J1";"CONN_20X2";"CONN_20X2";"2X20";"Multi connection point. Often used as Generic Header-pin footprint for 0.1 inch spaced/style header connections";"";
"JP1";"Micro JST";"M02JST-PTH-VERT";"JST-2-PTH-VERT";"Standard 2-pin 0.1" header. Use with";"";
"JP2";"";"CONN_01";"1X01";"Single connection point. Often used as Generic Header-pin footprint for 0.1 inch spaced/style header connections";"";
"JP3";"";"CONN_01";"1X01";"Single connection point. Often used as Generic Header-pin footprint for 0.1 inch spaced/style header connections";"";
"JP4";"JUMPER-SMT_2_NO_SILK";"JUMPER-SMT_2_NO_SILK";"SMT-JUMPER_2_NO_SILK";"Normally open jumper";"";
"JP5";"JUMPER-SMT_2_NC_TRACE_SILK";"JUMPER-SMT_2_NC_TRACE_SILK";"SMT-JUMPER_2_NC_TRACE_SILK";"Normally closed trace jumper";"";
"JP6";"JUMPER-SMT_2_NO_SILK";"JUMPER-SMT_2_NO_SILK";"SMT-JUMPER_2_NO_SILK";"Normally open jumper";"";
"JP7";"";"CONN_01";"1X01";"Single connection point. Often used as Generic Header-pin footprint for 0.1 inch spaced/style header connections";"";
"JP8";"Micro JST";"M02JST-PTH-VERT";"JST-2-PTH-VERT";"Standard 2-pin 0.1" header. Use with";"";
"JP10";"JUMPER-SMT_2_NC_TRACE_SILK";"JUMPER-SMT_2_NC_TRACE_SILK";"SMT-JUMPER_2_NC_TRACE_SILK";"Normally closed trace jumper";"";
"JP11";"JUMPER-SMT_2_NO_SILK";"JUMPER-SMT_2_NO_SILK";"SMT-JUMPER_2_NO_SILK";"Normally open jumper";"";
"JP13";"";"CONN_01";"1X01";"Single connection point. Often used as Generic Header-pin footprint for 0.1 inch spaced/style header connections";"";
"JP14";"";"CONN_01";"1X01";"Single connection point. Often used as Generic Header-pin footprint for 0.1 inch spaced/style header connections";"";
"R1";"DNI/R100";"R-US_R0805";"R0805";"RESISTOR, American symbol";"";
"R2";"10k";"R-EU_R0603";"R0603";"RESISTOR, European symbol";"";
"R3";"10k";"R-EU_R0603";"R0603";"RESISTOR, European symbol";"";
"U1";"INA219 purple board";"INA219";"INA219";"";"";
"U2";"INA219AIDR";"INA219AIDR";"D0008A_N";"";"";

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1022 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 917 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

@ -0,0 +1,18 @@
D1 63.55 60.58 0 BYW27-400 D-2.5
D2 72.01 10.49 0 1N5817 D-2.5
D3 66.45 10.62 180 1N4148 D-2.5
D8 59.31 7.52 270 DNI/5V1 Zener 1W ZDIO-2.5
D10 77.50 10.46 0 1N5817 D-2.5
JP1 72.17 8.66 180 JUMPER-SMT_2_NO_SILK SMT-JUMPER_2_NO_SILK
JP2 24.73 60.99 0 JUMPER-SMT_2_NO_SILK SMT-JUMPER_2_NO_SILK
JP3 16.08 58.12 270 JUMPER-SMT_2_NC_TRACE_SILK SMT-JUMPER_2_NC_TRACE_SILK
JP4 59.36 56.39 180 JUMPER-SMT_2_NC_TRACE_SILK SMT-JUMPER_2_NC_TRACE_SILK
JP5 75.08 56.48 270 JUMPER-SMT_2_NO_SILK SMT-JUMPER_2_NO_SILK
JP6 26.21 35.94 180 JUMPER-SMT_2_NC_TRACE_SILK SMT-JUMPER_2_NC_TRACE_SILK
JP7 15.95 62.24 90 JUMPER-SMT_2_NO_SILK SMT-JUMPER_2_NO_SILK
JP8 47.28 30.91 180 JUMPER-SMT_2_NO_SILK SMT-JUMPER_2_NO_SILK
JP9 44.21 61.82 180 JUMPER-SMT_2_NO_SILK SMT-JUMPER_2_NO_SILK
JP10 63.61 56.54 0 JUMPER-SMT_2_NO_SILK SMT-JUMPER_2_NO_SILK
JP11 14.63 52.17 180 JUMPER-SMT_2_NC_TRACE_SILK SMT-JUMPER_2_NC_TRACE_SILK
U7 36.42 49.89 0 DRA818V DORJI_DRA818V
X1 71.86 61.21 270 SC1464-ND PG203J

@ -0,0 +1,39 @@
C1 18.75 76.02 270 18pF C0603
C2 18.69 71.88 270 16pF C0603
C3 16.38 10.11 180 18pF C0603
C4 20.68 10.16 180 16pF C0603
C7 55.60 56.62 0 DNI/47uF C0603
C8 59.00 47.55 270 DNI/100nF C0603
C10 66.83 3.91 270 DNI/100nF C0603
D5 63.42 62.53 0 DNI/1N4007FL SOD-123FL
D6 72.16 8.69 180 DNI/B5817WS SOD-323F
D7 66.47 8.84 0 DNI/4148WS SOD-323F
E1 6.80 76.35 180 ANT-916-CHP-T XDCR_ANT-916-CHP-T
E2 19.18 3.81 0 ANT-916-CHP-T XDCR_ANT-916-CHP-T
F2 63.68 57.18 180 DNI/MF-FSML100/8-2 0603
J1 32.55 66.61 0 CONN_20X2 2X20
J8 36.17 72.01 0 Sparkfun USB-C Breakout 1X06_NO_SILK
J9 36.35 74.15 180 DNI/USB4105-GF-A or GT-USB-7010B USB-C-16P-2LAYER-PADS
J13 8.92 31.68 0 SJ1-2503A CONN_SJ1-2503A
J14 15.95 31.76 0 SJ1-2503A CONN_SJ1-2503A
L1 16.76 73.94 90 13nH L0603
L2 18.49 12.17 180 13nH L0603
R2 54.00 62.26 0 DNI/1k R0603
R4 58.39 62.26 180 DNI/1k R0603
R5 29.46 76.45 180 DNI/5.1k R0603
R6 43.18 76.48 0 DNI/5.1k R0603
R10 64.26 72.06 0 DNI/1k R0603
R11 24.16 72.06 0 DNI/100 R0603
R12 47.55 72.42 0 DNI/220 R0603
R16 20.07 60.05 0 DNI/68 R0805
R17 24.71 60.15 270 DNI/180 R0603
R18 32.94 60.20 180 DNI/68 R0805
R21 55.42 51.26 0 DNI/100 R0603
R22 59.33 44.63 0 DNI/220 R0603
R25 67.59 40.77 90 DNI/4.7k R0603
R26 76.53 40.79 90 DNI/4.7k R0603
R28 61.98 8.81 0 DNI/10k R0603
R31 3.86 44.37 0 DNI/220 R0603
R32 3.40 60.55 180 DNI/1k R0603
U1 54.36 27.48 270 Raspberry Pi Pico PICO-PKG-NO_DEBUG
U6 39.24 51.22 270 SR105U SR_FRS_0W5

@ -0,0 +1,94 @@
"Part";"Value";"Device";"Package";"Description";"";
"C1";"18pF";"CERAMIC-10PF-50V-5%-NPO(0603)";"C0603";"302010097";"";
"C2";"16pF";"CERAMIC-10PF-50V-5%-NPO(0603)";"C0603";"302010097";"";
"C3";"18pF";"CERAMIC-10PF-50V-5%-NPO(0603)";"C0603";"302010097";"";
"C4";"16pF";"CERAMIC-10PF-50V-5%-NPO(0603)";"C0603";"302010097";"";
"C5";"47uF";"CAPPTH";"CAP-PTH-SMALL";"Capacitor";"";
"C6";"100nF";"CAPPTH";"CAP-PTH-SMALL";"Capacitor";"";
"C7";"DNI/47uF";"CERAMIC-10PF-50V-5%-NPO(0603)";"C0603";"302010097";"";
"C8";"DNI/100nF";"CERAMIC-10PF-50V-5%-NPO(0603)";"C0603";"302010097";"";
"C9";"100nF";"CAPPTH";"CAP-PTH-SMALL";"Capacitor";"";
"C10";"DNI/100nF";"CERAMIC-10PF-50V-5%-NPO(0603)";"C0603";"302010097";"";
"D1";"BYW27-400";"DIODE-D-2.5";"D-2.5";"DIODE";"";
"D2";"1N5817";"DIODE-D-2.5";"D-2.5";"DIODE";"";
"D3";"1N4148";"DIODE-D-2.5";"D-2.5";"DIODE";"";
"D5";"DNI/1N4007FL";"DIODE_SOD-123FL";"SOD-123FL";"Diode";"";
"D6";"DNI/B5817WS";"DIODESOD-323F";"SOD-323F";"Diode";"";
"D7";"DNI/4148WS";"DIODESOD-323F";"SOD-323F";"Diode";"";
"D8";"DNI/5V1 Zener 1W";"ZENER-DIODEZD-2.5";"ZDIO-2.5";"Z-Diode";"";
"D10";"1N5817";"DIODE-D-2.5";"D-2.5";"DIODE";"";
"E1";"ANT-916-CHP-T";"ANT-916-CHP-T";"XDCR_ANT-916-CHP-T";"868MHz ISM, LoRa, Sensor Networks, SigFox Chip RF Antenna 863MHz ~ 873MHz 0.5dBi Solder Surface Mount Check prices";"";
"E2";"ANT-916-CHP-T";"ANT-916-CHP-T";"XDCR_ANT-916-CHP-T";"868MHz ISM, LoRa, Sensor Networks, SigFox Chip RF Antenna 863MHz ~ 873MHz 0.5dBi Solder Surface Mount Check prices";"";
"F1";"RHEF100-2";"PTCPTH";"PTC";"Resettable Fuse PTC";"";
"F2";"DNI/MF-FSML100/8-2";"PTC0603";"0603";"Resettable Fuse PTC";"";
"J1";"CONN_20X2";"CONN_20X2";"2X20";"Multi connection point. Often used as Generic Header-pin footprint for 0.1 inch spaced/style header connections";"";
"J4";"MPU6050";"M08NO_SILK_FEMALE_PTH";"1X08_NO_SILK@1";"Header 8";"";
"J5";"BME280";"M04NO_SILK_ALL_ROUND";"1X04_NO_SILK_ALL_ROUND";"Header 4";"";
"J6";"Micro JST";"M02JST-PTH-VERT";"JST-2-PTH-VERT";"Standard 2-pin 0.1" header. Use with";"";
"J7";"Micro JST";"M02JST-PTH-VERT";"JST-2-PTH-VERT";"Standard 2-pin 0.1" header. Use with";"";
"J8";"Sparkfun USB-C Breakout";"CONN_06NO_SILK_FEMALE_PTH";"1X06_NO_SILK";"Multi connection point. Often used as Generic Header-pin footprint for 0.1 inch spaced/style header connections";"";
"J9";"DNI/USB4105-GF-A or GT-USB-7010B";"USB_C_2-LAYER_PADS";"USB-C-16P-2LAYER-PADS";"USB Type C 16Pin Connector";"";
"J10";"DNI/Sparkfun QWIIC Breakout";"CONN_041X04_NO_SILK";"1X04_NO_SILK";"Multi connection point. Often used as Generic Header-pin footprint for 0.1 inch spaced/style header connections";"";
"J12";"DNI/1x4 pin header";"CONN_041X04_NO_SILK";"1X04_NO_SILK";"Multi connection point. Often used as Generic Header-pin footprint for 0.1 inch spaced/style header connections";"";
"J13";"SJ1-2503A";"SJ1-2503A";"CONN_SJ1-2503A";"";"";
"J14";"SJ1-2503A";"SJ1-2503A";"CONN_SJ1-2503A";"";"";
"J15";"";"CONN_06NO_SILK_NO_POP";"1X06_NO_SILK";"Multi connection point. Often used as Generic Header-pin footprint for 0.1 inch spaced/style header connections";"";
"JP1";"JUMPER-SMT_2_NO_SILK";"JUMPER-SMT_2_NO_SILK";"SMT-JUMPER_2_NO_SILK";"Normally open jumper";"";
"JP2";"JUMPER-SMT_2_NO_SILK";"JUMPER-SMT_2_NO_SILK";"SMT-JUMPER_2_NO_SILK";"Normally open jumper";"";
"JP3";"JUMPER-SMT_2_NC_TRACE_SILK";"JUMPER-SMT_2_NC_TRACE_SILK";"SMT-JUMPER_2_NC_TRACE_SILK";"Normally closed trace jumper";"";
"JP4";"JUMPER-SMT_2_NC_TRACE_SILK";"JUMPER-SMT_2_NC_TRACE_SILK";"SMT-JUMPER_2_NC_TRACE_SILK";"Normally closed trace jumper";"";
"JP5";"JUMPER-SMT_2_NO_SILK";"JUMPER-SMT_2_NO_SILK";"SMT-JUMPER_2_NO_SILK";"Normally open jumper";"";
"JP6";"JUMPER-SMT_2_NC_TRACE_SILK";"JUMPER-SMT_2_NC_TRACE_SILK";"SMT-JUMPER_2_NC_TRACE_SILK";"Normally closed trace jumper";"";
"JP7";"JUMPER-SMT_2_NO_SILK";"JUMPER-SMT_2_NO_SILK";"SMT-JUMPER_2_NO_SILK";"Normally open jumper";"";
"JP8";"JUMPER-SMT_2_NO_SILK";"JUMPER-SMT_2_NO_SILK";"SMT-JUMPER_2_NO_SILK";"Normally open jumper";"";
"JP9";"JUMPER-SMT_2_NO_SILK";"JUMPER-SMT_2_NO_SILK";"SMT-JUMPER_2_NO_SILK";"Normally open jumper";"";
"JP10";"JUMPER-SMT_2_NO_SILK";"JUMPER-SMT_2_NO_SILK";"SMT-JUMPER_2_NO_SILK";"Normally open jumper";"";
"JP11";"JUMPER-SMT_2_NC_TRACE_SILK";"JUMPER-SMT_2_NC_TRACE_SILK";"SMT-JUMPER_2_NC_TRACE_SILK";"Normally closed trace jumper";"";
"L1";"13nH";"SMD-FERRITE-CHIP-120-OHM-500MA(0603)";"L0603";"303030001";"";
"L2";"13nH";"SMD-FERRITE-CHIP-120-OHM-500MA(0603)";"L0603";"303030001";"";
"LED1";"White 5mm";"LED3MM";"LED3MM";"LED";"";
"LED2";"Yellow 5mm";"LED3MM";"LED3MM";"LED";"";
"LED3";"Green 5mm";"LED3MM";"LED3MM";"LED";"";
"LED4";"Blue 5mm";"LED3MM";"LED3MM";"LED";"";
"LED5";"Red 5mm";"LED3MM";"LED3MM";"LED";"";
"R1";"1K";"RESISTORPTH-1/4W-VERT";"AXIAL-0.1";"Resistor";"";
"R2";"DNI/1k";"R-EU_R0603";"R0603";"RESISTOR, European symbol";"";
"R3";"1K";"RESISTORPTH-1/4W-VERT";"AXIAL-0.1";"Resistor";"";
"R4";"DNI/1k";"R-EU_R0603";"R0603";"RESISTOR, European symbol";"";
"R5";"DNI/5.1k";"R-EU_R0603";"R0603";"RESISTOR, European symbol";"";
"R6";"DNI/5.1k";"R-EU_R0603";"R0603";"RESISTOR, European symbol";"";
"R7";"1k";"RESISTORPTH-1/4W-VERT";"AXIAL-0.1";"Resistor";"";
"R8";"100";"RESISTORPTH-1/4W-VERT";"AXIAL-0.1";"Resistor";"";
"R9";"220";"RESISTORPTH-1/4W-VERT";"AXIAL-0.1";"Resistor";"";
"R10";"DNI/1k";"SMD-RES-1.2K-1%-1/10W(0603)";"R0603";"301010206";"";
"R11";"DNI/100";"SMD-RES-1.2K-1%-1/10W(0603)";"R0603";"301010206";"";
"R12";"DNI/220";"SMD-RES-1.2K-1%-1/10W(0603)";"R0603";"301010206";"";
"R13";"68";"RESISTORPTH-1/4W-VERT";"AXIAL-0.1";"Resistor";"";
"R14";"180";"RESISTORPTH-1/4W-VERT";"AXIAL-0.1";"Resistor";"";
"R15";"68";"RESISTORPTH-1/4W-VERT";"AXIAL-0.1";"Resistor";"";
"R16";"DNI/68";"R-US_R0805";"R0805";"RESISTOR, American symbol";"";
"R17";"DNI/180";"SMD-RES-1.2K-1%-1/10W(0603)";"R0603";"301010206";"";
"R18";"DNI/68";"R-US_R0805";"R0805";"RESISTOR, American symbol";"";
"R19";"100";"RESISTORPTH-1/4W-VERT-KIT";"AXIAL-0.1EZ";"Resistor";"";
"R20";"220";"RESISTORPTH-1/4W-VERT-KIT";"AXIAL-0.1EZ";"Resistor";"";
"R21";"DNI/100";"SMD-RES-1.2K-1%-1/10W(0603)";"R0603";"301010206";"";
"R22";"DNI/220";"SMD-RES-1.2K-1%-1/10W(0603)";"R0603";"301010206";"";
"R23";"4.7k";"RESISTORPTH-1/4W-VERT";"AXIAL-0.1";"Resistor";"";
"R24";"4.7k";"RESISTORPTH-1/4W-VERT";"AXIAL-0.1";"Resistor";"";
"R25";"DNI/4.7k";"SMD-RES-1.2K-1%-1/10W(0603)";"R0603";"301010206";"";
"R26";"DNI/4.7k";"SMD-RES-1.2K-1%-1/10W(0603)";"R0603";"301010206";"";
"R27";"10K";"RESISTORPTH-1/4W-VERT";"AXIAL-0.1";"Resistor";"";
"R28";"DNI/10k";"R-EU_R0603";"R0603";"RESISTOR, European symbol";"";
"R29";"220";"RESISTORPTH-1/4W-VERT";"AXIAL-0.1";"Resistor";"";
"R30";"1k";"RESISTORPTH-1/4W-VERT";"AXIAL-0.1";"Resistor";"";
"R31";"DNI/220";"SMD-RES-1.2K-1%-1/10W(0603)";"R0603";"301010206";"";
"R32";"DNI/1k";"SMD-RES-1.2K-1%-1/10W(0603)";"R0603";"301010206";"";
"R33";"DNI/4.7k";"RESISTORPTH-1/4W-VERT";"AXIAL-0.1";"Resistor";"";
"R34";"DNI/4.7k";"RESISTORPTH-1/4W-VERT";"AXIAL-0.1";"Resistor";"";
"S1";"RA-SPST";"RA-SPST";"RA-SPST";"";"";
"U1";"Raspberry Pi Pico";"RASPBERRY_PICO-NO_DEBUG";"PICO-PKG-NO_DEBUG";"";"";
"U6";"SR105U";"SR_FRS_0W5";"SR_FRS_0W5";"";"";
"U7";"DRA818V";"DRA818V";"DORJI_DRA818V";"Check availability";"";
"X1";"SC1464-ND";"PG203J";"PG203J";"MIC/HEADPHONE JACK";"";
"X2";"SMA-VERT";"SMA-VERT";"SMA-VERT";"";"";
"X3";"SMA-VERT";"SMA-VERT";"SMA-VERT";"";"";

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 KiB

@ -0,0 +1,12 @@
D1 37.58 48.87 180 1N5817 D-2.5
D2 37.66 42.52 180 1N5817 D-2.5
D3 37.50 35.95 180 1N5817 D-2.5
D4 42.94 48.94 0 1N5817 D-2.5
D5 42.94 42.42 0 1N5817 D-2.5
D6 42.79 36.07 0 1N5817 D-2.5
JP9 1.35 57.85 270 VDD-EN SMT-JUMPER_2_NC_TRACE_SILK
JP18 24.75 62.60 180 JUMPER-SMT_2_NO_SILK SMT-JUMPER_2_NO_SILK
U5 71.44 19.89 90 INA219 purple board INA219
U6 8.59 48.95 270 INA219 purple board INA219
U7 8.46 20.29 270 INA219 purple board INA219
U8 71.36 48.21 90 INA219 purple board INA219

@ -0,0 +1,29 @@
C2 17.54 37.77 0 0.1µF 0603
C3 17.41 21.59 0 0.1µF 0603
C4 17.56 11.14 0 0.1µF 0603
C5 17.53 50.09 0 0.1µF 0603
C6 61.82 19.28 180 0.1µF 0603
C7 62.06 38.65 180 0.1µF 0603
D7 42.95 38.00 0 1A/23V/620mV SOD-323
D8 43.08 44.40 0 1A/23V/620mV SOD-323
D9 43.43 50.75 0 1A/23V/620mV SOD-323
D10 37.72 50.67 180 1A/23V/620mV SOD-323
D11 37.62 37.92 180 1A/23V/620mV SOD-323
D12 37.90 44.40 180 1A/23V/620mV SOD-323
J1 32.55 66.61 0 CONN_20X2 2X20
R1 11.58 43.79 270 R100 R0805
R2 11.68 15.01 270 R100 R0805
R5 24.84 14.99 90 R100 R0805
R6 24.87 43.84 270 R100 R0805
R9 68.07 25.10 90 R100 R0805
R10 68.19 53.47 90 R100 R0805
R11 42.91 62.08 0 DNI-4.7k R0603
R12 36.87 62.08 0 DNI-4.7k R0603
U2 17.53 44.60 0 INA219AIDR D0008A_N
U3 48.65 48.20 90 INA219 purple board INA219
U4 30.84 48.90 270 INA219 purple board INA219
U10 17.45 26.75 0 INA219AIDR D0008A_N
U11 17.68 16.66 0 INA219AIDR D0008A_N
U12 17.50 55.36 0 INA219AIDR D0008A_N
U13 61.72 24.82 0 INA219AIDR D0008A_N
U14 61.58 44.20 0 INA219AIDR D0008A_N

@ -0,0 +1,71 @@
"Part";"Value";"Device";"Package";"Description";"";
"C2";"0.1µF";"CAP_CERAMIC0603";"0603";"Ceramic Capacitors";"";
"C3";"0.1µF";"CAP_CERAMIC0603";"0603";"Ceramic Capacitors";"";
"C4";"0.1µF";"CAP_CERAMIC0603";"0603";"Ceramic Capacitors";"";
"C5";"0.1µF";"CAP_CERAMIC0603";"0603";"Ceramic Capacitors";"";
"C6";"0.1µF";"CAP_CERAMIC0603";"0603";"Ceramic Capacitors";"";
"C7";"0.1µF";"CAP_CERAMIC0603";"0603";"Ceramic Capacitors";"";
"D1";"1N5817";"DIODE-D-2.5";"D-2.5";"DIODE";"";
"D2";"1N5817";"DIODE-D-2.5";"D-2.5";"DIODE";"";
"D3";"1N5817";"DIODE-D-2.5";"D-2.5";"DIODE";"";
"D4";"1N5817";"DIODE-D-2.5";"D-2.5";"DIODE";"";
"D5";"1N5817";"DIODE-D-2.5";"D-2.5";"DIODE";"";
"D6";"1N5817";"DIODE-D-2.5";"D-2.5";"DIODE";"";
"D7";"1A/23V/620mV";"DIODE-SCHOTTKY-BAT20J";"SOD-323";"Schottky diode";"";
"D8";"1A/23V/620mV";"DIODE-SCHOTTKY-BAT20J";"SOD-323";"Schottky diode";"";
"D9";"1A/23V/620mV";"DIODE-SCHOTTKY-BAT20J";"SOD-323";"Schottky diode";"";
"D10";"1A/23V/620mV";"DIODE-SCHOTTKY-BAT20J";"SOD-323";"Schottky diode";"";
"D11";"1A/23V/620mV";"DIODE-SCHOTTKY-BAT20J";"SOD-323";"Schottky diode";"";
"D12";"1A/23V/620mV";"DIODE-SCHOTTKY-BAT20J";"SOD-323";"Schottky diode";"";
"J1";"CONN_20X2";"CONN_20X2";"2X20";"Multi connection point. Often used as Generic Header-pin footprint for 0.1 inch spaced/style header connections";"";
"J5";"DNI/Sparkfun QWIIC Breakout";"CONN_041X04_NO_SILK";"1X04_NO_SILK";"Multi connection point. Often used as Generic Header-pin footprint for 0.1 inch spaced/style header connections";"";
"JP1";"Micro JST";"M02JST-PTH-VERT";"JST-2-PTH-VERT";"Standard 2-pin 0.1" header. Use with";"";
"JP2";"Micro JST";"M02JST-PTH-VERT";"JST-2-PTH-VERT";"Standard 2-pin 0.1" header. Use with";"";
"JP3";"Micro JST";"M02JST-PTH-VERT";"JST-2-PTH-VERT";"Standard 2-pin 0.1" header. Use with";"";
"JP4";"Micro JST";"M02JST-PTH-VERT";"JST-2-PTH-VERT";"Standard 2-pin 0.1" header. Use with";"";
"JP5";"Micro JST";"M02JST-PTH-VERT";"JST-2-PTH-VERT";"Standard 2-pin 0.1" header. Use with";"";
"JP6";"Micro JST";"M02JST-PTH-VERT";"JST-2-PTH-VERT";"Standard 2-pin 0.1" header. Use with";"";
"JP7";"Micro JST";"M02JST-PTH-VERT";"JST-2-PTH-VERT";"Standard 2-pin 0.1" header. Use with";"";
"JP8";"Micro JST";"CONN_021X02_NO_SILK";"1X02_NO_SILK";"Multi connection point. Often used as Generic Header-pin footprint for 0.1 inch spaced/style header connections";"";
"JP9";"VDD-EN";"JUMPER-SMT_2_NC_TRACE_SILK";"SMT-JUMPER_2_NC_TRACE_SILK";"Normally closed trace jumper";"";
"JP10";"Micro JST";"M02JST-PTH-VERT";"JST-2-PTH-VERT";"Standard 2-pin 0.1" header. Use with";"";
"JP11";"Micro JST";"M02JST-PTH-VERT";"JST-2-PTH-VERT";"Standard 2-pin 0.1" header. Use with";"";
"JP12";"Micro JST";"M02JST-PTH-VERT";"JST-2-PTH-VERT";"Standard 2-pin 0.1" header. Use with";"";
"JP13";"Micro JST";"M02JST-PTH-VERT";"JST-2-PTH-VERT";"Standard 2-pin 0.1" header. Use with";"";
"JP14";"Micro JST";"M02JST-PTH-VERT";"JST-2-PTH-VERT";"Standard 2-pin 0.1" header. Use with";"";
"JP15";"Micro JST";"M02JST-PTH-VERT";"JST-2-PTH-VERT";"Standard 2-pin 0.1" header. Use with";"";
"JP16";"";"CONN_01PTH_NO_SILK_YES_STOP";"1X01_NO_SILK";"Single connection point. Often used as Generic Header-pin footprint for 0.1 inch spaced/style header connections";"";
"JP17";"Micro JST";"M02JST-PTH-VERT";"JST-2-PTH-VERT";"Standard 2-pin 0.1" header. Use with";"";
"JP18";"JUMPER-SMT_2_NO_SILK";"JUMPER-SMT_2_NO_SILK";"SMT-JUMPER_2_NO_SILK";"Normally open jumper";"";
"JP19";"";"CONN_01PTH_NO_SILK_YES_STOP";"1X01_NO_SILK";"Single connection point. Often used as Generic Header-pin footprint for 0.1 inch spaced/style header connections";"";
"JP20";"Micro JST";"M02JST-PTH-VERT";"JST-2-PTH-VERT";"Standard 2-pin 0.1" header. Use with";"";
"JP21";"Micro JST";"M02JST-PTH-VERT";"JST-2-PTH-VERT";"Standard 2-pin 0.1" header. Use with";"";
"JP22";"Micro JST";"M02JST-PTH-VERT";"JST-2-PTH-VERT";"Standard 2-pin 0.1" header. Use with";"";
"JP23";"Micro JST";"M02JST-PTH-VERT";"JST-2-PTH-VERT";"Standard 2-pin 0.1" header. Use with";"";
"JP24";"Micro JST";"M02JST-PTH-VERT";"JST-2-PTH-VERT";"Standard 2-pin 0.1" header. Use with";"";
"JP25";"Micro JST";"M02JST-PTH-VERT";"JST-2-PTH-VERT";"Standard 2-pin 0.1" header. Use with";"";
"JP26";"Micro JST";"M02JST-PTH-VERT";"JST-2-PTH-VERT";"Standard 2-pin 0.1" header. Use with";"";
"R1";"R100";"R-US_R0805";"R0805";"RESISTOR, American symbol";"";
"R2";"R100";"R-US_R0805";"R0805";"RESISTOR, American symbol";"";
"R3";"4.7k";"RESISTORPTH-1/4W-VERT-KIT";"AXIAL-0.1EZ";"Resistor";"";
"R4";"4.7k";"RESISTORPTH-1/4W-VERT-KIT";"AXIAL-0.1EZ";"Resistor";"";
"R5";"R100";"R-US_R0805";"R0805";"RESISTOR, American symbol";"";
"R6";"R100";"R-US_R0805";"R0805";"RESISTOR, American symbol";"";
"R7";"DNI-4.7k";"RESISTORPTH-1/4W-VERT-KIT";"AXIAL-0.1EZ";"Resistor";"";
"R8";"DNI-4.7k";"RESISTORPTH-1/4W-VERT-KIT";"AXIAL-0.1EZ";"Resistor";"";
"R9";"R100";"R-US_R0805";"R0805";"RESISTOR, American symbol";"";
"R10";"R100";"R-US_R0805";"R0805";"RESISTOR, American symbol";"";
"R11";"DNI-4.7k";"R-US_R0603";"R0603";"RESISTOR, American symbol";"";
"R12";"DNI-4.7k";"R-US_R0603";"R0603";"RESISTOR, American symbol";"";
"U2";"INA219AIDR";"INA219AIDR";"D0008A_N";"";"";
"U3";"INA219 purple board";"INA219";"INA219";"";"";
"U4";"INA219 purple board";"INA219";"INA219";"";"";
"U5";"INA219 purple board";"INA219";"INA219";"";"";
"U6";"INA219 purple board";"INA219";"INA219";"";"";
"U7";"INA219 purple board";"INA219";"INA219";"";"";
"U8";"INA219 purple board";"INA219";"INA219";"";"";
"U10";"INA219AIDR";"INA219AIDR";"D0008A_N";"";"";
"U11";"INA219AIDR";"INA219AIDR";"D0008A_N";"";"";
"U12";"INA219AIDR";"INA219AIDR";"D0008A_N";"";"";
"U13";"INA219AIDR";"INA219AIDR";"D0008A_N";"";"";
"U14";"INA219AIDR";"INA219AIDR";"D0008A_N";"";"";

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

@ -0,0 +1,33 @@
<img width="200" alt="cubesatsim-main-v2 0 1_top" src="https://github.com/alanbjohnston/CubeSatSim/blob/628fd65edbb01fb772a9f223605d969a0aad14bd/hardware/v2.1/cubesatsim-main-v2.1.0_top.png"> <img width="200" alt="cubesatsim-battery-v2 0_top" src="https://github.com/alanbjohnston/CubeSatSim/blob/4d079b486116180071c4dbf64ae2464518a63bdd/hardware/v2.1/cubesatsim-battery-v2.1.0_top.png"> <img width="200" alt="cubesatsim-solar-v2 0_top" src="https://github.com/alanbjohnston/CubeSatSim/blob/c904c66d7c8fb44a3d088d0cbebf24903cf3572c/hardware/v2.1/cubesatsim-solar-v2.1.0_top.png">
Here is information about the CubeSatSim PCBs, version v2.1
There are 3 boards: Main, Solar, and Battery
Here's what the files are:
*_gerbers.zip -- All gerber files used to fabricate PCBs along with .TXT drill file
*_schematic.pdf -- Schematic
*_pcb.png -- View of board
*_pour.png -- View of board with fill
*_top.png -- Top view of PCB generated by gerbers
*_bottom.png -- Bottom view of PCB generated by gerbers
*.mnt -- top SMD component placement data
*.mnb -- bottom SMD component placement data
*_bom.csv.txt -- Bill of Materials in CSV format
I use PCBWay to fabricate PCBs https://pcbway.com
Here is the bill of materials: https://CubeSatSim.org/bom
Wiki instructions: https://github.com/alanbjohnston/CubeSatSim/wiki/

File diff suppressed because it is too large Load Diff

71
log

@ -2,16 +2,65 @@
echo -e "\nLog file script for CubeSatSim\n"
if [ "$1" = "-r" ] || [ "$1" = "-t" ] ; then
sudo journalctl -a -u transmit > /home/pi/CubeSatSim/logt.txt
cat /home/pi/CubeSatSim/logt.txt
echo -e "\nTransmit Log file also saved as /home/pi/CubeSatSim/logt.txt"
elif [ "$1" = "-c" ]; then
sudo journalctl -a -u command > /home/pi/CubeSatSim/logc.txt
cat /home/pi/CubeSatSim/logc.txt
echo -e "\nCommand and Control Log file also saved as /home/pi/CubeSatSim/logc.txt"
if [ "$1" = "-h" ] ; then
echo "Displays systemd logs for the chose process. The choices are:"
echo " -d cubesatsim (also no choice gives you this)"
echo " -t transmit"
echo " -c command and control"
echo " -p pacsat"
echo "Default is the log is dumpted to the screen and written to a file."
echo "If an additional r is included, the log is realtime, and exits with a Control-C"
echo
exit
fi
REALTIME=0
if [ "$2" = "r" ] ; then
REALTIME=1
fi
if [ "$REALTIME" = "1" ] ; then
echo "To exit, type Control-C"
echo
sleep 2
if [ "$1" = "-r" ] || [ "$1" = "-t" ] ; then
sudo journalctl -af -u transmit # > /home/pi/CubeSatSim/logt.txt
# cat /home/pi/CubeSatSim/logt.txt
# echo -e "\nTransmit Log file also saved as /home/pi/CubeSatSim/logt.txt"
elif [ "$1" = "-c" ]; then
sudo journalctl -af -u command # > /home/pi/CubeSatSim/logc.txt
cat /home/pi/CubeSatSim/logc.txt
# echo -e "\nCommand and Control Log file also saved as /home/pi/CubeSatSim/logc.txt"
elif [ "$1" = "-p" ]; then
sudo journalctl -af -u pacsatsim # > /home/pi/CubeSatSim/logp.txt
cat /home/pi/CubeSatSim/logp.txt
# echo -e "\nCommand and Control Log file also saved as /home/pi/CubeSatSim/logp.txt"
else
sudo journalctl -af -u cubesatsim # > /home/pi/CubeSatSim/log.txt
# cat /home/pi/CubeSatSim/log.txt
# echo -e "\nLog file also saved as /home/pi/CubeSatSim/log.txt"
fi
else
sudo journalctl -a -u cubesatsim > /home/pi/CubeSatSim/log.txt
cat /home/pi/CubeSatSim/log.txt
echo -e "\nLog file also saved as /home/pi/CubeSatSim/log.txt"
if [ "$1" = "-r" ] || [ "$1" = "-t" ] ; then
sudo journalctl -a -u transmit > /home/pi/CubeSatSim/logt.txt
cat /home/pi/CubeSatSim/logt.txt
echo -e "\nTransmit Log file also saved as /home/pi/CubeSatSim/logt.txt"
elif [ "$1" = "-c" ]; then
sudo journalctl -a -u command > /home/pi/CubeSatSim/logc.txt
cat /home/pi/CubeSatSim/logc.txt
echo -e "\nCommand and Control Log file also saved as /home/pi/CubeSatSim/logc.txt"
elif [ "$1" = "-p" ]; then
sudo journalctl -a -u pacsatsim > /home/pi/CubeSatSim/logp.txt
cat /home/pi/CubeSatSim/logp.txt
echo -e "\nCommand and Control Log file also saved as /home/pi/CubeSatSim/logp.txt"
else
sudo journalctl -a -u cubesatsim > /home/pi/CubeSatSim/log.txt
cat /home/pi/CubeSatSim/log.txt
echo -e "\nLog file also saved as /home/pi/CubeSatSim/log.txt"
fi
fi

1869
main.c

File diff suppressed because it is too large Load Diff

@ -39,30 +39,35 @@
#define PRES 3
#define ALT 4
#define HUMI 5
#define GYRO_X 7 // MPU6050 is posisition 6
#define GYRO_X 7 // MPU6050 label is posisition 6
#define GYRO_Y 8
#define GYRO_Z 9
#define ACCEL_X 10
#define ACCEL_Y 11
#define ACCEL_Z 12
#define GPS1 14 // GPS is position 13
#define GPS2 15
#define GPS3 16
#define DTEMP 18 // TMP is position 17
#define GPS 13 // GPS label
#define GPS1 14 // latitude
#define GPS2 15 // longitude
#define GPS3 16 // altitude
#define DTEMP 18 // TMP label is position 17
#define XS1 20 // NEW user defined token will be position 19
#define XS2 21
#define XS3 22
#define SENSOR_FIELDS 26
#define NEW_SENSOR_FIELDS_MAX 6
#define SENSOR_FIELDS (26 + 6)
#define FC_EPS 1
#define FC_BOB 25
#define FC_SW 50
#define FC_PAYLOAD 55
#define X 0
#define Y 1
#define Z 2
#define RSSI 0
#define IHU_TEMP 2
#define SPIN 1
#define OFF - 1
#define OFF -1
#define ON 1
#define CHECK 0
#define DISABLED 0
@ -73,9 +78,6 @@ uint32_t tx_freq_hz = 434900000 + FREQUENCY_OFFSET;
uint8_t data[1024];
uint32_t tx_channel = 0;
ax5043_conf_t hax5043;
ax25_conf_t hax25;
int twosToInt(int val, int len);
float toAprsFormat(float input);
float rnd_float(double min, double max);
@ -101,6 +103,7 @@ int socket_open = 0;
int sock = 0;
int loop = -1, loop_count = 0;
int firstTime = ON; // 0;
int secondTime = ON;
long start;
int testCount = 0;
long time_start;
@ -122,7 +125,24 @@ FILE *image_file;
#define CW 5
#define FC 6
#define REPEATER 7
#define PACSAT 8
#define TXCOMMAND 12
#define PACSATGND 13
#define FAIL_COUNT 11
#define FAIL_NONE -1
#define FAIL_UNPLUG 1
#define FAIL_SOLAR 2
#define FAIL_DEGRADE 3
#define FAIL_SHORT 4
#define FAIL_I2C1 5
#define FAIL_I2C3 6
#define FAIL_CAMERA 7
#define FAIL_PAYLOAD 8
#define FAIL_BME 9
#define FAIL_MPU 10
#define FAIL_AUDIO 11
int failureMode = FAIL_NONE;
int transmitStatus = -1;
@ -148,6 +168,8 @@ long int uptime;
char call[5];
char sim_yes[10];
char hab_yes[10];
char fail_yes[10];
int fail_time = 60;
int squelch = 3; // default squelch
char rx[12], tx[12];
int tx_pl = 0;
@ -158,16 +180,16 @@ float sleepTime;
unsigned int sampleTime = 0;
int frames_sent = 0;
int cw_id = ON;
int vB4 = FALSE, vB5 = FALSE, vB3 = FALSE, ax5043 = FALSE, transmit = FALSE, onLed, onLedOn, onLedOff, txLed, txLedOn, txLedOff, payload = OFF;
int transmit = FALSE, onLed, onLedOn, onLedOff, txLed, txLedOn, txLedOff, payload = OFF;
// float voltageThreshold = 3.6, batteryVoltage = 4.5, batteryCurrent = 0, currentThreshold = 100;
float voltageThreshold = 3.5, batteryVoltage = 4.5, batteryCurrent = 0, currentThreshold = 100;
float voltageThreshold = 3.50, batteryVoltage = 4.5, batteryCurrent = 0, currentThreshold = 100;
float latitude = 39.027702f, longitude = -77.078064f;
float lat_file, long_file;
double cpuTemp;
int frameTime;
long int newGpsTime;
float axis[3], angle[3], volts_max[3], amps_max[3], batt, speed, period, tempS, temp_max, temp_min, eclipse;
float axis[3], angle[3], volts_max[3], amps_max[3], batt, speed, period, tempS, temp_max, temp_min, eclipse, atmosphere, tempP, altSP, presP, altGP, humiP, changeP;
int i2c_bus0 = OFF, i2c_bus1 = OFF, i2c_bus3 = OFF, camera = OFF, sim_mode = FALSE, SafeMode = FALSE;
int rxAntennaDeployed = 0, txAntennaDeployed = 0, c2cStatus = 0;
int sim_config = FALSE; // sim mode not set by configuration
@ -175,11 +197,13 @@ double eclipse_time;
float voltage[9], current[9], sensor[SENSOR_FIELDS], other[3];
char sensor_payload[500];
char sensor_string[SENSOR_FIELDS][32];
int test_i2c_bus(int bus);
//const char pythonCmd[] = "python3 -u /home/pi/CubeSatSim/python/voltcurrent.py ";
const char pythonCmd[] = "python3 -u /home/pi/CubeSatSim/ina219.py ";
const char pythonVenv[] = "source /home/pi/venv/bin/activate";
const char pythonCmd[] = "/home/pi/venv/bin/python3 -u /home/pi/CubeSatSim/ina219.py ";
char pythonStr[100], pythonConfigStr[100], busStr[10];
int map[8] = {0, 1, 2, 3, 4, 5, 6, 7};
char src_addr[5] = "";
@ -211,8 +235,11 @@ int pi_zero_2_offset = 0;
int hab_mode = FALSE;
int fail_rnd_mode = FALSE;
int battery_saver_mode = FALSE;
long int loopTime;
long int failTime = 0;
int gps_status = OFF;
int error_count = 0;
int groundCommandCount = 0;
@ -223,6 +250,9 @@ int groundCommandCount = 0;
int m_ileaver_index; /* Byte counter for interleaver */
unsigned char m_conv_sr; /* Convolutional encoder shift register state */
void sensor_setup(); // defined in sensor_extension.c
int sensor_loop(char *sensor_buffer); // defined in sensor_extension.c
int pi_sensors(char *buffer); // used to read BME and MPU sensor if connected to Pi
// from funcubeLib/common/fecConstants.h

@ -0,0 +1,11 @@
This Raspberry Pi has the CubeSatSim v2.x software installed
and runs automatically as systemd cubesatsim.service. For more
information see https://CubeSatSim.org. To update
to the latest version, enter this command:
CubeSatSim/update
To see configuration options, enter this command:
CubeSatSim/config

@ -0,0 +1,322 @@
#!/bin/bash
# script to run PacsatSim
loopback=0
vox=0
safe=0
card=0
pwm=0
if [ "$1" = "l" ] ; then
loopback=1
elif [ "$1" = "v" ] ; then
vox=1
elif [ "$1" = "c" ] ; then
card=1
else
pwm=1
fi
FILE=/home/pi/CubeSatSim/battery_saver
if [ -f "$FILE" ]; then
safe=1
fi
if [[ $(arecord -l | grep "USB Audio Device") ]] ; then
echo "USB Sound Card detected"
soundcard=1
else
echo "No USB Sound Card detected"
soundcard=0
fi
gpio -g mode 7 up
if [[ $(gpio -g read 7 | grep 0) ]] ; then
echo "TXC is present"
txc=1
else
echo "TXC not present"
txc=0
fi
timeout 1 rtl_test &> out.txt
if [[ $(grep "No supported" out.txt) ]] ; then
echo "No RTL-SDR detected"
rtl=0
else
echo "RTL-SDR detected."
rtl=1
fi
value=`cat /home/pi/CubeSatSim/sim.cfg`
echo "$value" > /dev/null
set -- $value
callsign="$1"
txfrequency="$7e3"
rxfrequency="$8e3"
echo -n "PacSat callsign is "
echo $callsign
echo -n "Transmit Frequency is "
echo $txfrequency
echo -n "Receive Frequency is "
echo $rxfrequency
echo
sleep 2
if [ ! -d "/home/pi/PacSat" ]; then
echo "Setting up PacSatSim default configuration"
echo
cd
sudo rm pacsat-dir.zip
mkdir /home/pi/PacSat
mkdir /home/pi/PacSat/pacsat
mkdir /home/pi/PacSat/pacsat/dir
wget https://github.com/alanbjohnston/pi_pacsat/releases/download/v0.2/pacsat-dir.zip
unzip pacsat-dir.zip
sudo rm pacsat-dir.zip
cd
sudo rm /home/pi/pi_pacsat/Debug/pacsat.config
sudo rm /home/pi/pi_pacsat/Debug/pacsat.state
sudo rm /home/pi/pi_pacsat/Debug/pacsat_upload_table.dat
sudo rm pi_pacsat.zip
wget https://github.com/alanbjohnston/pi_pacsat/releases/download/v0.2/pi_pacsat.zip
unzip pi_pacsat.zip -d /
sudo rm pi_pacsat.zip
# mkdir /home/pi/PacSat
# mkdir /home/pi/PacSat/pacsat
# mkdir /home/pi/PacSat/pacsat/dir
# cd /home/pi/pi_pacsat/Debug
# sudo rm pacsat_last_command_time.dat
# sudo rm pacsat_upload_table.dat
# sudo rm pacsat.state
# echo "bit_rate=9600" > pacsat.config
# echo "bbs_callsign=AMSAT-12" >> pacsat.config
# echo "broadcast_callsign=AMSAT-11" >> pacsat.config
# echo "digi_callsign=AMSAT-1" >> pacsat.config
# echo "max_frames_in_tx_buffer=5" >> pacsat.config
# echo "pb_open=1" > pacsat.state
# echo "uplink_open=1" >> pacsat.state
# echo "pb_max_period_for_client_in_seconds=60" >> pacsat.state
# echo "uplink_max_period_for_client_in_seconds=60" >> pacsat.state
# touch /home/pi/pi_pacsat/Debug/pacsat_upload_table.dat
fi
value=`cat /home/pi/CubeSatSim/sim.cfg`
echo "$value" > /dev/null
set -- $value
callsign="$1"
frequency="$7e3"
echo "Configured callsign is "
echo $callsign
oldcallsign=$(grep -oP '(?<=bbs_callsign=).*(?=-)' /home/pi/pi_pacsat/Debug/pacsat.config)
echo "Callsign in pacsat.config is "
echo $oldcallsign
if [ ! "$callsign" = "$oldcallsign" ] ; then
sudo sed -i "s/bbs_callsign=$oldcallsign/bbs_callsign=$callsign/g" /home/pi/pi_pacsat/Debug/pacsat.config
sudo sed -i "s/broadcast_callsign=$oldcallsign/broadcast_callsign=$callsign/g" /home/pi/pi_pacsat/Debug/pacsat.config
sudo sed -i "s/digi_callsign=$oldcallsign/digi_callsign=$callsign/g" /home/pi/pi_pacsat/Debug/pacsat.config
echo "New pacsat.confg is"
echo
cat /home/pi/pi_pacsat/Debug/pacsat.config
fi
sudo /etc/init.d/alsa-utils stop
sudo /etc/init.d/alsa-utils start
# export LD_LIBRARY_PATH=/mnt/usb-disk/ariss/lib:/usr/local/lib/iors_common:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/local/lib/:$LD_LIBRARY_PATH
#sudo systemctl stop cubesatsim
#sudo systemctl stop transmit
#sudo systemctl stop command &>/dev/null
sudo modprobe snd-aloop
#sudo systemctl stop openwebrx
#sudo systemctl stop rtl_tcp &>/dev/null
#pkill -o chromium &>/dev/null
#sudo killall -9 rtl_fm &>/dev/null
#sudo killall -9 direwolf &>/dev/null
#udo killall -9 aplay &>/dev/null
#sudo killall -9 qsstv &>/dev/null
#sudo killall -9 rtl_tcp &>/dev/null
#sudo killall -9 java &>/dev/null
#sudo killall -9 CubicSDR &>/dev/null
#sudo killall -9 zenity &>/dev/null
sudo killall -9 pacsat_telem &>/dev/null
sudo killall -9 pi_pacsat &>/dev/null
echo
#choice=2
#fi
# frequency=434900000
echo
echo "If your Pacsat Ground Station is transmitting packets, you will see them here"
echo
#echo
#echo "Note that the 'Tuned to' frequency will be different from the chosen frequency due to the way SDRs work."
# echo -e "Auto decoding APRS Pacsat packets on $frequency Hz"
# direwolf -P+ -D1 -qd -dp -r 48000 -c /home/pi/CubeSatSim/direwolf/direwolf-pacsatsim-loopback.conf -t 0 &
# /usr/bin/x-terminal-emulator --geometry=120x40 -e "/home/pi/CubeSatSim/pacsatsim-df.sh"
sudo usermod -a -G gpio pi
if [ "$loopback" = "1" ] ; then
echo "Using audio loopback"
ADEVICE="ADEVICE plughw:CARD=Loopback,DEV=0"
PTT="PTT GPIOD gpiochip0 17"
value=`cat /home/pi/CubeSatSim/.mode`
echo "$value" > /dev/null
set -- $value
MODE=$1
if [ ! "$MODE" = "P" ] ; then
/home/pi/CubeSatSim/config -I n
fi
# sudo /home/pi/CubeSatSim/pacsatsim-d.sh &
# direwolf -P+ -D1 -qd -dp -r 48000 -c /home/pi/CubeSatSim/direwolf/direwolf-pacsatsim-loopback.conf -t 0 &
elif [ "$safe" = "1" ] ; then
echo "Safe mode - battery saver"
# sudo /home/pi/CubeSatSim/pacsatsim-d.sh &
ADEVICE="ADEVICE shared_mic plughw:CARD=Loopback,DEV=0"
PTT="PTT GPIOD gpiochip0 17"
# direwolf -P+ -D1 -qd -dp -r 48000 -c /home/pi/CubeSatSim/direwolf/direwolf-pacsatsim-pwm-loopback.conf -t 0 &
# arecord -D plughw:CARD=Loopback,DEV=1 -f S16_LE -r 48000 -c 1 | csdr convert_s16_f | csdr gain_ff 4000 | csdr convert_f_samplerf 20833 | sudo rpitx -i- -m RF -f 434900 &
# arecord -D plughw:CARD=Loopback,DEV=1 -f S16_LE -r 48000 -c 1 | csdr convert_s16_f | csdr gain_ff 4000 | csdr convert_f_samplerf 20833 | sudo rpitx -i- -m RF -f $frequency &
elif [ "$vox" = "1" ]; then
echo "Using Soundcard Audio TX and RX (VOX, no PTT)"
ADEVICE="ADEVICE plughw:CARD=Device,DEV=0"
PTT="PTT GPIOD gpiochip0 17"
# sudo /home/pi/CubeSatSim/pacsatsim-dj.sh &
# direwolf -P+ -D1 -qd -dp -r 48000 -c /home/pi/CubeSatSim/direwolf/direwolf-pacsatsim-jp14-half.conf -t 0 &
elif [ "$pwm" = "1" ] ; then
echo "FM TXC using Soundcard input (JP13), PWM output"
ADEVICE="ADEVICE shared_mic plughw:CARD=Headphones,DEV=0"
PTT="PTT GPIOD gpiochip0 -20"
# direwolf -P+ -D1 -qd -dp -r 48000 -c /home/pi/CubeSatSim/direwolf/direwolf-pacsatsim-pwm.conf -t 0 &
else
echo "FM TXC using Soundcard input (JP13) and output (JP14)"
ADEVICE="ADEVICE shared_mic plughw:CARD=Device,DEV=0"
PTT="PTT GPIOD gpiochip0 -20"
# direwolf -P+ -D1 -qd -dp -r 48000 -c /home/pi/CubeSatSim/direwolf/direwolf-pacsatsim-jp14.conf -t 0 &
fi
DIREWOLF_CONF="/home/pi/CubeSatSim/direwolf-pacsatsim-tmp.conf"
echo "$ADEVICE" > $DIREWOLF_CONF
echo "MYCALL $callsign-1" >> $DIREWOLF_CONF
echo "$PTT" >> $DIREWOLF_CONF
cat /home/pi/CubeSatSim/direwolf/direwolf-pacsatsim.conf >> $DIREWOLF_CONF
echo
echo "$DIREWOLF_CONF"
echo
cat $DIREWOLF_CONF
echo
direwolf -P+ -D1 -qd -dp -r 48000 -c $DIREWOLF_CONF -t 0 &
# arecord -D plughw:CARD=Loopback,DEV=1 -f S16_LE -r 48000 -c 1 | csdr convert_s16_f | csdr gain_ff 14000 | csdr convert_f_samplerf 20833 | sudo rpitx -i- -m RF -f 434900 &
## arecord -D plughw:CARD=Loopback,DEV=1 -f S16_LE -r 48000 -c 1 | csdr convert_s16_f | csdr gain_ff 4000 | csdr convert_f_samplerf 20833 | sudo rpitx -i- -m RF -f 434900 &
## echo "Don't close the direwolf window or the Pacsatsim will stop running."
export LD_LIBRARY_PATH=/usr/local/lib/:$LD_LIBRARY_PATH
/home/pi/pacsat_telem/Debug/pacsat_telem -v -d /home/pi/PacSat/pacsat &
sleep 5
value=`aplay -l | grep "Loopback"`
echo "$value" > /dev/null
set -- $value
#rtl_fm -M fm -f $frequency -s 48k | tee >(aplay -D hw:${2:0:1},0,0 -r 48000 -t raw -f S16_LE -c 1) | aplay -D hw:0,0 -r 48000 -t raw -f S16_LE -c 1 &
cd /home/pi/pi_pacsat/Debug
./pi_pacsat -c pacsat.config -d /home/pi/PacSat
sleep 60

@ -0,0 +1,34 @@
// Use this template for adding additional sensors
// see example ...
// put your library includes here
#include <stdio.h>
#include <string.h>
// put your globals here
// put your setup code here
void sensor_setup() {
// printf("Starting new sensor!\n");
}
// put your loop code here
// Very Important: only use print, not println!!
int sensor_loop(char *sensor_buffer) {
int sensors = 0; // set to the number of sensor readings adding.
sensor_buffer[0] = 0; // make sure buffer is empty
// printf("Reading new sensors!\n");
// sensors = 3;
// strcpy(sensor_buffer, "NEW 0.0 0.0 0.0");
// printf("New sensor string: %s\n", sensor_buffer);
return(sensors);
}

@ -0,0 +1,62 @@
61,TYPE,FIELD,BITS,UNIT,CONVERSION,MODULE,MODULE_NUM,MODULE_LINE,LINE_TYPE,SHORT_NAME,DESCRIPTION
0,MAX,Sensor 2,12,integer,1,NONE,6,8,3,Sensor 2,STEM Payload Extra Sensor 2
1,MAX,Sensor 3,12,integer,1,NONE,6,9,3,Sensor 3,STEM Payload Extra Sensor 3
2,MAX,BATT_V,12,V,cubesatsim_voltage|FLOAT2,NONE,4,1,3,Battery Voltage,INA219 Battery Voltage
3,MAX,SatelliteXAxisAcceleration,12,g,cubesatsim_acceleration|FLOAT2,NONE,7,4,3,Acceleration,STEM Payload Board MPU6050 Acceleration around X Axis
4,MAX,SatelliteYAxisAcceleration,12,g,cubesatsim_acceleration|FLOAT2,NONE,8,4,3,Acceleration,STEM Payload Board MPU6050 Acceleration around Y Axis
5,MAX,SatelliteZAxisAcceleration,12,g,cubesatsim_acceleration|FLOAT2,NONE,9,4,3,Acceleration,STEM Payload Board MPU6050 Acceleration around Z Axis
6,MAX,BATT_I,12,mA,cubesatsim_current,NONE,4,2,3,Battery Current,INA219 Battery Current
7,MAX,Temperature,12,C,cubesatsim_temperature,NONE,6,2,3,BME280 Temp,BME280 STEM Payload sensor temperature
8,MAX,posXv,12,V,cubesatsim_voltage|FLOAT2,NONE,7,1,3,Voltage,INA219 +X solar panel Voltage
9,MAX,posYv,12,V,cubesatsim_voltage|FLOAT2,NONE,8,1,3,Voltage,INA219 +Y solar panel Voltage
10,MAX,posZv,12,V,cubesatsim_voltage|FLOAT2,NONE,9,1,3,Voltage,INA219 +Z solar panel Voltage
11,MAX,negXv,12,V,cubesatsim_voltage|FLOAT2,NONE,10,1,3,Voltage,INA219 -X solar panel Voltage
12,MAX,negYv,12,V,cubesatsim_voltage|FLOAT2,NONE,11,1,3,Voltage,INA219 -Y solar panel Voltage
13,MAX,negZv,12,V,cubesatsim_voltage|FLOAT2,NONE,12,1,3,Voltage,INA219 -Z solar panel Voltage
14,MAX,posXi,12,mA,cubesatsim_current,NONE,7,2,3,Current,INA219 +X solar panel Current
15,MAX,posYi,12,mA,cubesatsim_current,NONE,8,2,3,Current,INA219 +Y solar panel Current
16,MAX,posZi,12,mA,cubesatsim_current,NONE,9,2,3,Current,INA219 +Z solar panel Current
17,MAX,negXi,12,mA,cubesatsim_current,NONE,10,2,3,Current,INA219 -X solar panel Current
18,MAX,negYi,12,mA,cubesatsim_current,NONE,11,2,3,Current,INA219 -Y solar panel Current
19,MAX,negZi,12,mA,cubesatsim_current,NONE,12,2,3,Current,INA219 -Z solar panel Current
20,MAX,BATT2_V,12,V,cubesatsim_voltage|FLOAT2,NONE,5,1,3,Battery 2 Voltage,INA219 Battery 2 Voltage
21,MAX,spin,12,rpm,cubesatsim_rpm,NONE,3,1,3,Spacecraft Spin,Calculated spin rate using solar cells
22,MAX,Pressure,12,hPa,cubesatsim_pressure,NONE,6,3,3,BME280 Pressure,BME280 STEM Payload sensor pressure
23,MAX,Altitude,12,m,cubesatsim_altitude|INT,NONE,6,4,3,BME280 Altitude,BME280 STEM Payload sensor altitude
24,MAX,Resets,12,-,12,NONE,3,2,3,Reset Count, Software Reset Count
25,MAX,rssi,12,dBm,cubesatsim_rssi|INT,NONE,1,1,3,RSSI,Received Signal Strength Indication
26,MAX,IHUcpuTemp,12,C,cubesatsim_temperature,NONE,2,1,3,IHU Temp (Pi),Internal temperature of IHU from Pi
27,MAX,SatelliteXAxisAngularVelocity,12,dps,cubesatsim_rotation|INT,NONE,7,3,3,Rotation,STEM Payload Board MPU6050 Angular veolcity around X Axis
28,MAX,SatelliteYAxisAngularVelocity,12,dps,cubesatsim_rotation|INT,NONE,8,3,3,Rotation,STEM Payload Board MPU6050 Angular veolcity around Y Axis
29,MAX,SatelliteZAxisAngularVelocity,12,dps,cubesatsim_rotation|INT,NONE,9,3,3,Rotation,STEM Payload Board MPU6050 Angular veolcity around Z Axis
30,MAX,Humidity,12,%,cubesatsim_temperature,NONE,6,5,3,BME280 Humidity,BME280 Humidity
31,MAX,BAT2_I,12,mA,cubesatsim_current,NONE,5,2,3,Battery 2 Current,INA219 Battery 2 Current
32,MAX,DiodeTemp,12,C,cubesatsim_rpm,NONE,6,6,3,Diode Temp,STEM Payload Diode Temperature
33,MAX,Sensor 1,12,integer,1,NONE,6,7,3,Sensor 1,STEM Payload Extra Sensor 1
34,MAX,STEMPayloadStatus,1,-,17,NONE,6,1,0,STEM Payload Status, STEM Payload STEM Payload board failure Indicator
35,MAX,SafeMode,1,-,STATUS_ON_OFF,NONE,3,2,0,Safe Mode, Safe Mode (Low Battery Voltage)
36,MAX,SimulatedTelemetry,1,-,STATUS_ON_OFF,NONE,3,4,0,Simulated Telemetry,Simulated Telemetry Indicator
37,MAX,PayloadStatus1,1,-,17,NONE,6,8,0,Exp 3,STEM Payload status 1 failure indicator
38,MAX,I2CBus0Failure,1,-,17,NONE,2,2,0,I2C Bus 0,I2C bus 0 failure indicator
39,MAX,I2CBus1Failure,1,-,17,NONE,2,2,0,I2C Bus 1,I2C bus 1 failure indicator
40,MAX,I2CBus3Failure,1,-,17,NONE,2,3,0,I2C Bus 3,I2C bus 3 failure indicator
41,MAX,CameraFailure,1,-,17,NONE,2,4,0,Camera,Camera failure indicator
42,MAX,GroundCommands,4,-,1,NONE,3,3,0,Ground Commands,Number of ground commands received
43,MAX,RxAntenna,1,-,16,NONE,1,3,0,RX Antenna,Receive antenna status
44,MAX,TxAntenna,1,-,16,NONE,1,2,0,TX Antenna,Transmit antenna status
45,MAX,C2CStatus,2,-,COMMAND_STATUS,NONE,3,5,0,Command Control, Command & Control Status
46,MAX,ICR3VProt,12,V,43,NONE,7,2,3,3V Prot,ICR 3V Proteted
47,MAX,ICR2dot5V,12,V,43,NONE,7,3,3,2.5V,ICR 2.5V
48,MAX,ICR2dot5VProt,12,V,43,NONE,7,4,3,2.5V Prot,ICR 2.5V Protected
49,MAX,rf6,12,-,0,NONE,0,0,0,None,None
50,MAX,rf7,12,-,0,NONE,0,0,0,None,None
51,MAX,MuxTest,12,V,43,NONE,7,5,3,Sensor Power,Sensor Power Voltage at the ICR
52,MAX,LtVGACtl,12,V,42,NONE,1,4,3,VGA Control,Control Voltage to the Variable Gain Amplifier (VGA)
53,MAX,pad,4,-,34,NONE,0,0,0,None,Unused
54,MAX,IHUdiagData,32,-,18,NONE,3,2,0,Diagnostic Info,Diagnostic Data on IHU Performance
55,MAX,pad1,1,-,0,NONE,0,0,0,NONE,Filler
56,MAX,wodSize,8,000s,36,NONE,3,3,0,WOD Stored,Number of WOD data payloads kept for each of Science and Housekeeping. In hundreds
57,MAX,swCmds,32,-,35,NONE,7,6,0,Diagnostic,ICR Diagnostic information
58,MAX,hwCmdCnt,6,-,1,NONE,7,7,0,HW Command Count,Number of hardware commands since last reset
59,MAX,swCmdCnt,6,-,1,NONE,7,8,0,SW Command Count,Number of software commands since last reset
60,MAX,pad2,27,-,0,NONE,0,0,0,NONE,Filler byets
1 61 TYPE FIELD BITS UNIT CONVERSION MODULE MODULE_NUM MODULE_LINE LINE_TYPE SHORT_NAME DESCRIPTION
2 0 MAX Sensor 2 12 integer 1 NONE 6 8 3 Sensor 2 STEM Payload Extra Sensor 2
3 1 MAX Sensor 3 12 integer 1 NONE 6 9 3 Sensor 3 STEM Payload Extra Sensor 3
4 2 MAX BATT_V 12 V cubesatsim_voltage|FLOAT2 NONE 4 1 3 Battery Voltage INA219 Battery Voltage
5 3 MAX SatelliteXAxisAcceleration 12 g cubesatsim_acceleration|FLOAT2 NONE 7 4 3 Acceleration STEM Payload Board MPU6050 Acceleration around X Axis
6 4 MAX SatelliteYAxisAcceleration 12 g cubesatsim_acceleration|FLOAT2 NONE 8 4 3 Acceleration STEM Payload Board MPU6050 Acceleration around Y Axis
7 5 MAX SatelliteZAxisAcceleration 12 g cubesatsim_acceleration|FLOAT2 NONE 9 4 3 Acceleration STEM Payload Board MPU6050 Acceleration around Z Axis
8 6 MAX BATT_I 12 mA cubesatsim_current NONE 4 2 3 Battery Current INA219 Battery Current
9 7 MAX Temperature 12 C cubesatsim_temperature NONE 6 2 3 BME280 Temp BME280 STEM Payload sensor temperature
10 8 MAX posXv 12 V cubesatsim_voltage|FLOAT2 NONE 7 1 3 Voltage INA219 +X solar panel Voltage
11 9 MAX posYv 12 V cubesatsim_voltage|FLOAT2 NONE 8 1 3 Voltage INA219 +Y solar panel Voltage
12 10 MAX posZv 12 V cubesatsim_voltage|FLOAT2 NONE 9 1 3 Voltage INA219 +Z solar panel Voltage
13 11 MAX negXv 12 V cubesatsim_voltage|FLOAT2 NONE 10 1 3 Voltage INA219 -X solar panel Voltage
14 12 MAX negYv 12 V cubesatsim_voltage|FLOAT2 NONE 11 1 3 Voltage INA219 -Y solar panel Voltage
15 13 MAX negZv 12 V cubesatsim_voltage|FLOAT2 NONE 12 1 3 Voltage INA219 -Z solar panel Voltage
16 14 MAX posXi 12 mA cubesatsim_current NONE 7 2 3 Current INA219 +X solar panel Current
17 15 MAX posYi 12 mA cubesatsim_current NONE 8 2 3 Current INA219 +Y solar panel Current
18 16 MAX posZi 12 mA cubesatsim_current NONE 9 2 3 Current INA219 +Z solar panel Current
19 17 MAX negXi 12 mA cubesatsim_current NONE 10 2 3 Current INA219 -X solar panel Current
20 18 MAX negYi 12 mA cubesatsim_current NONE 11 2 3 Current INA219 -Y solar panel Current
21 19 MAX negZi 12 mA cubesatsim_current NONE 12 2 3 Current INA219 -Z solar panel Current
22 20 MAX BATT2_V 12 V cubesatsim_voltage|FLOAT2 NONE 5 1 3 Battery 2 Voltage INA219 Battery 2 Voltage
23 21 MAX spin 12 rpm cubesatsim_rpm NONE 3 1 3 Spacecraft Spin Calculated spin rate using solar cells
24 22 MAX Pressure 12 hPa cubesatsim_pressure NONE 6 3 3 BME280 Pressure BME280 STEM Payload sensor pressure
25 23 MAX Altitude 12 m cubesatsim_altitude|INT NONE 6 4 3 BME280 Altitude BME280 STEM Payload sensor altitude
26 24 MAX Resets 12 - 12 NONE 3 2 3 Reset Count Software Reset Count
27 25 MAX rssi 12 dBm cubesatsim_rssi|INT NONE 1 1 3 RSSI Received Signal Strength Indication
28 26 MAX IHUcpuTemp 12 C cubesatsim_temperature NONE 2 1 3 IHU Temp (Pi) Internal temperature of IHU from Pi
29 27 MAX SatelliteXAxisAngularVelocity 12 dps cubesatsim_rotation|INT NONE 7 3 3 Rotation STEM Payload Board MPU6050 Angular veolcity around X Axis
30 28 MAX SatelliteYAxisAngularVelocity 12 dps cubesatsim_rotation|INT NONE 8 3 3 Rotation STEM Payload Board MPU6050 Angular veolcity around Y Axis
31 29 MAX SatelliteZAxisAngularVelocity 12 dps cubesatsim_rotation|INT NONE 9 3 3 Rotation STEM Payload Board MPU6050 Angular veolcity around Z Axis
32 30 MAX Humidity 12 % cubesatsim_temperature NONE 6 5 3 BME280 Humidity BME280 Humidity
33 31 MAX BAT2_I 12 mA cubesatsim_current NONE 5 2 3 Battery 2 Current INA219 Battery 2 Current
34 32 MAX DiodeTemp 12 C cubesatsim_rpm NONE 6 6 3 Diode Temp STEM Payload Diode Temperature
35 33 MAX Sensor 1 12 integer 1 NONE 6 7 3 Sensor 1 STEM Payload Extra Sensor 1
36 34 MAX STEMPayloadStatus 1 - 17 NONE 6 1 0 STEM Payload Status STEM Payload STEM Payload board failure Indicator
37 35 MAX SafeMode 1 - STATUS_ON_OFF NONE 3 2 0 Safe Mode Safe Mode (Low Battery Voltage)
38 36 MAX SimulatedTelemetry 1 - STATUS_ON_OFF NONE 3 4 0 Simulated Telemetry Simulated Telemetry Indicator
39 37 MAX PayloadStatus1 1 - 17 NONE 6 8 0 Exp 3 STEM Payload status 1 failure indicator
40 38 MAX I2CBus0Failure 1 - 17 NONE 2 2 0 I2C Bus 0 I2C bus 0 failure indicator
41 39 MAX I2CBus1Failure 1 - 17 NONE 2 2 0 I2C Bus 1 I2C bus 1 failure indicator
42 40 MAX I2CBus3Failure 1 - 17 NONE 2 3 0 I2C Bus 3 I2C bus 3 failure indicator
43 41 MAX CameraFailure 1 - 17 NONE 2 4 0 Camera Camera failure indicator
44 42 MAX GroundCommands 4 - 1 NONE 3 3 0 Ground Commands Number of ground commands received
45 43 MAX RxAntenna 1 - 16 NONE 1 3 0 RX Antenna Receive antenna status
46 44 MAX TxAntenna 1 - 16 NONE 1 2 0 TX Antenna Transmit antenna status
47 45 MAX C2CStatus 2 - COMMAND_STATUS NONE 3 5 0 Command Control Command & Control Status
48 46 MAX ICR3VProt 12 V 43 NONE 7 2 3 3V Prot ICR 3V Proteted
49 47 MAX ICR2dot5V 12 V 43 NONE 7 3 3 2.5V ICR 2.5V
50 48 MAX ICR2dot5VProt 12 V 43 NONE 7 4 3 2.5V Prot ICR 2.5V Protected
51 49 MAX rf6 12 - 0 NONE 0 0 0 None None
52 50 MAX rf7 12 - 0 NONE 0 0 0 None None
53 51 MAX MuxTest 12 V 43 NONE 7 5 3 Sensor Power Sensor Power Voltage at the ICR
54 52 MAX LtVGACtl 12 V 42 NONE 1 4 3 VGA Control Control Voltage to the Variable Gain Amplifier (VGA)
55 53 MAX pad 4 - 34 NONE 0 0 0 None Unused
56 54 MAX IHUdiagData 32 - 18 NONE 3 2 0 Diagnostic Info Diagnostic Data on IHU Performance
57 55 MAX pad1 1 - 0 NONE 0 0 0 NONE Filler
58 56 MAX wodSize 8 000s 36 NONE 3 3 0 WOD Stored Number of WOD data payloads kept for each of Science and Housekeeping. In hundreds
59 57 MAX swCmds 32 - 35 NONE 7 6 0 Diagnostic ICR Diagnostic information
60 58 MAX hwCmdCnt 6 - 1 NONE 7 7 0 HW Command Count Number of hardware commands since last reset
61 59 MAX swCmdCnt 6 - 1 NONE 7 8 0 SW Command Count Number of software commands since last reset
62 60 MAX pad2 27 - 0 NONE 0 0 0 NONE Filler byets

@ -0,0 +1,62 @@
61,TYPE,FIELD,BITS,UNIT,CONVERSION,MODULE,MODULE_NUM,MODULE_LINE,LINE_TYPE,SHORT_NAME,DESCRIPTION
0,MIN,Sensor 2,12,integer,1,NONE,6,8,3,Sensor 2,STEM Payload Extra Sensor 2
1,MIN,Sensor 3,12,integer,1,NONE,6,9,3,Sensor 3,STEM Payload Extra Sensor 3
2,MIN,BATT_V,12,V,cubesatsim_voltage|FLOAT2,NONE,4,1,3,Battery Voltage,INA219 Battery Voltage
3,MIN,SatelliteXAxisAcceleration,12,g,cubesatsim_acceleration|FLOAT2,NONE,7,4,3,Acceleration,STEM Payload Board MPU6050 Acceleration around X Axis
4,MIN,SatelliteYAxisAcceleration,12,g,cubesatsim_acceleration|FLOAT2,NONE,8,4,3,Acceleration,STEM Payload Board MPU6050 Acceleration around Y Axis
5,MIN,SatelliteZAxisAcceleration,12,g,cubesatsim_acceleration|FLOAT2,NONE,9,4,3,Acceleration,STEM Payload Board MPU6050 Acceleration around Z Axis
6,MIN,BATT_I,12,mA,cubesatsim_current,NONE,4,2,3,Battery Current,INA219 Battery Current
7,MIN,Temperature,12,C,cubesatsim_temperature,NONE,6,2,3,BME280 Temp,BME280 STEM Payload sensor temperature
8,MIN,posXv,12,V,cubesatsim_voltage|FLOAT2,NONE,7,1,3,Voltage,INA219 +X solar panel Voltage
9,MIN,posYv,12,V,cubesatsim_voltage|FLOAT2,NONE,8,1,3,Voltage,INA219 +Y solar panel Voltage
10,MIN,posZv,12,V,cubesatsim_voltage|FLOAT2,NONE,9,1,3,Voltage,INA219 +Z solar panel Voltage
11,MIN,negXv,12,V,cubesatsim_voltage|FLOAT2,NONE,10,1,3,Voltage,INA219 -X solar panel Voltage
12,MIN,negYv,12,V,cubesatsim_voltage|FLOAT2,NONE,11,1,3,Voltage,INA219 -Y solar panel Voltage
13,MIN,negZv,12,V,cubesatsim_voltage|FLOAT2,NONE,12,1,3,Voltage,INA219 -Z solar panel Voltage
14,MIN,posXi,12,mA,cubesatsim_current,NONE,7,2,3,Current,INA219 +X solar panel Current
15,MIN,posYi,12,mA,cubesatsim_current,NONE,8,2,3,Current,INA219 +Y solar panel Current
16,MIN,posZi,12,mA,cubesatsim_current,NONE,9,2,3,Current,INA219 +Z solar panel Current
17,MIN,negXi,12,mA,cubesatsim_current,NONE,10,2,3,Current,INA219 -X solar panel Current
18,MIN,negYi,12,mA,cubesatsim_current,NONE,11,2,3,Current,INA219 -Y solar panel Current
19,MIN,negZi,12,mA,cubesatsim_current,NONE,12,2,3,Current,INA219 -Z solar panel Current
20,MIN,BATT2_V,12,V,cubesatsim_voltage|FLOAT2,NONE,5,1,3,Battery 2 Voltage,INA219 Battery 2 Voltage
21,MIN,spin,12,rpm,cubesatsim_rpm,NONE,3,1,3,Spacecraft Spin,Calculated spin rate using solar cells
22,MIN,Pressure,12,hPa,cubesatsim_pressure,NONE,6,3,3,BME280 Pressure,BME280 STEM Payload sensor pressure
23,MIN,Altitude,12,m,cubesatsim_altitude|INT,NONE,6,4,3,BME280 Altitude,BME280 STEM Payload sensor altitude
24,MIN,Resets,12,-,12,NONE,3,2,3,Reset Count, Software Reset Count
25,MIN,rssi,12,dBm,cubesatsim_rssi|INT,NONE,1,1,3,RSSI,Received Signal Strength Indication
26,MIN,IHUcpuTemp,12,C,cubesatsim_temperature,NONE,2,1,3,IHU Temp (Pi),Internal temperature of IHU from Pi
27,MIN,SatelliteXAxisAngularVelocity,12,dps,cubesatsim_rotation|INT,NONE,7,3,3,Rotation,STEM Payload Board MPU6050 Angular veolcity around X Axis
28,MIN,SatelliteYAxisAngularVelocity,12,dps,cubesatsim_rotation|INT,NONE,8,3,3,Rotation,STEM Payload Board MPU6050 Angular veolcity around Y Axis
29,MIN,SatelliteZAxisAngularVelocity,12,dps,cubesatsim_rotation|INT,NONE,9,3,3,Rotation,STEM Payload Board MPU6050 Angular veolcity around Z Axis
30,MIN,Humidity,12,%,cubesatsim_temperature,NONE,6,5,3,BME280 Humidity,BME280 Humidity
31,MIN,BAT2_I,12,mA,cubesatsim_current,NONE,5,2,3,Battery 2 Current,INA219 Battery 2 Current
32,MIN,DiodeTemp,12,C,cubesatsim_rpm,NONE,6,6,3,Diode Temp,STEM Payload Diode Temperature
33,MIN,Sensor 1,12,integer,1,NONE,6,7,3,Sensor 1,STEM Payload Extra Sensor 1
34,MIN,STEMPayloadStatus,1,-,17,NONE,6,1,0,STEM Payload Status, STEM Payload STEM Payload board failure Indicator
35,MIN,SafeMode,1,-,STATUS_ON_OFF,NONE,3,2,0,Safe Mode, Safe Mode (Low Battery Voltage)
36,MIN,SimulatedTelemetry,1,-,STATUS_ON_OFF,NONE,3,4,0,Simulated Telemetry,Simulated Telemetry Indicator
37,MIN,PayloadStatus1,1,-,17,NONE,6,8,0,Exp 3,STEM Payload status 1 failure indicator
38,MIN,I2CBus0Failure,1,-,17,NONE,2,2,0,I2C Bus 0,I2C bus 0 failure indicator
39,MIN,I2CBus1Failure,1,-,17,NONE,2,2,0,I2C Bus 1,I2C bus 1 failure indicator
40,MIN,I2CBus3Failure,1,-,17,NONE,2,3,0,I2C Bus 3,I2C bus 3 failure indicator
41,MIN,CameraFailure,1,-,17,NONE,2,4,0,Camera,Camera failure indicator
42,MIN,GroundCommands,4,-,1,NONE,3,3,0,Ground Commands,Number of ground commands received
43,MIN,RxAntenna,1,-,16,NONE,1,3,0,RX Antenna,Receive antenna status
44,MIN,TxAntenna,1,-,16,NONE,1,2,0,TX Antenna,Transmit antenna status
45,MIN,C2CStatus,2,-,COMMAND_STATUS,NONE,3,5,0,Command Control, Command & Control Status
46,MIN,ICR3VProt,12,V,43,NONE,7,2,3,3V Prot,ICR 3V Proteted
47,MIN,ICR2dot5V,12,V,43,NONE,7,3,3,2.5V,ICR 2.5V
48,MIN,ICR2dot5VProt,12,V,43,NONE,7,4,3,2.5V Prot,ICR 2.5V Protected
49,MIN,rf6,12,-,0,NONE,0,0,0,None,None
50,MIN,rf7,12,-,0,NONE,0,0,0,None,None
51,MIN,MuxTest,12,V,43,NONE,7,5,3,Sensor Power,Sensor Power Voltage at the ICR
52,MIN,LtVGACtl,12,V,42,NONE,1,4,3,VGA Control,Control Voltage to the Variable Gain Amplifier (VGA)
53,MIN,pad,4,-,34,NONE,0,0,0,None,Unused
54,MIN,IHUdiagData,32,-,18,NONE,3,2,0,Diagnostic Info,Diagnostic Data on IHU Performance
55,MIN,pad1,1,-,0,NONE,0,0,0,NONE,Filler
56,MIN,wodSize,8,000s,36,NONE,3,3,0,WOD Stored,Number of WOD data payloads kept for each of Science and Housekeeping. In hundreds
57,MIN,swCmds,32,-,35,NONE,7,6,0,Diagnostic,ICR Diagnostic information
58,MIN,hwCmdCnt,6,-,1,NONE,7,7,0,HW Command Count,Number of hardware commands since last reset
59,MIN,swCmdCnt,6,-,1,NONE,7,8,0,SW Command Count,Number of software commands since last reset
60,MIN,pad2,27,-,0,NONE,0,0,0,NONE,Filler
1 61 TYPE FIELD BITS UNIT CONVERSION MODULE MODULE_NUM MODULE_LINE LINE_TYPE SHORT_NAME DESCRIPTION
2 0 MIN Sensor 2 12 integer 1 NONE 6 8 3 Sensor 2 STEM Payload Extra Sensor 2
3 1 MIN Sensor 3 12 integer 1 NONE 6 9 3 Sensor 3 STEM Payload Extra Sensor 3
4 2 MIN BATT_V 12 V cubesatsim_voltage|FLOAT2 NONE 4 1 3 Battery Voltage INA219 Battery Voltage
5 3 MIN SatelliteXAxisAcceleration 12 g cubesatsim_acceleration|FLOAT2 NONE 7 4 3 Acceleration STEM Payload Board MPU6050 Acceleration around X Axis
6 4 MIN SatelliteYAxisAcceleration 12 g cubesatsim_acceleration|FLOAT2 NONE 8 4 3 Acceleration STEM Payload Board MPU6050 Acceleration around Y Axis
7 5 MIN SatelliteZAxisAcceleration 12 g cubesatsim_acceleration|FLOAT2 NONE 9 4 3 Acceleration STEM Payload Board MPU6050 Acceleration around Z Axis
8 6 MIN BATT_I 12 mA cubesatsim_current NONE 4 2 3 Battery Current INA219 Battery Current
9 7 MIN Temperature 12 C cubesatsim_temperature NONE 6 2 3 BME280 Temp BME280 STEM Payload sensor temperature
10 8 MIN posXv 12 V cubesatsim_voltage|FLOAT2 NONE 7 1 3 Voltage INA219 +X solar panel Voltage
11 9 MIN posYv 12 V cubesatsim_voltage|FLOAT2 NONE 8 1 3 Voltage INA219 +Y solar panel Voltage
12 10 MIN posZv 12 V cubesatsim_voltage|FLOAT2 NONE 9 1 3 Voltage INA219 +Z solar panel Voltage
13 11 MIN negXv 12 V cubesatsim_voltage|FLOAT2 NONE 10 1 3 Voltage INA219 -X solar panel Voltage
14 12 MIN negYv 12 V cubesatsim_voltage|FLOAT2 NONE 11 1 3 Voltage INA219 -Y solar panel Voltage
15 13 MIN negZv 12 V cubesatsim_voltage|FLOAT2 NONE 12 1 3 Voltage INA219 -Z solar panel Voltage
16 14 MIN posXi 12 mA cubesatsim_current NONE 7 2 3 Current INA219 +X solar panel Current
17 15 MIN posYi 12 mA cubesatsim_current NONE 8 2 3 Current INA219 +Y solar panel Current
18 16 MIN posZi 12 mA cubesatsim_current NONE 9 2 3 Current INA219 +Z solar panel Current
19 17 MIN negXi 12 mA cubesatsim_current NONE 10 2 3 Current INA219 -X solar panel Current
20 18 MIN negYi 12 mA cubesatsim_current NONE 11 2 3 Current INA219 -Y solar panel Current
21 19 MIN negZi 12 mA cubesatsim_current NONE 12 2 3 Current INA219 -Z solar panel Current
22 20 MIN BATT2_V 12 V cubesatsim_voltage|FLOAT2 NONE 5 1 3 Battery 2 Voltage INA219 Battery 2 Voltage
23 21 MIN spin 12 rpm cubesatsim_rpm NONE 3 1 3 Spacecraft Spin Calculated spin rate using solar cells
24 22 MIN Pressure 12 hPa cubesatsim_pressure NONE 6 3 3 BME280 Pressure BME280 STEM Payload sensor pressure
25 23 MIN Altitude 12 m cubesatsim_altitude|INT NONE 6 4 3 BME280 Altitude BME280 STEM Payload sensor altitude
26 24 MIN Resets 12 - 12 NONE 3 2 3 Reset Count Software Reset Count
27 25 MIN rssi 12 dBm cubesatsim_rssi|INT NONE 1 1 3 RSSI Received Signal Strength Indication
28 26 MIN IHUcpuTemp 12 C cubesatsim_temperature NONE 2 1 3 IHU Temp (Pi) Internal temperature of IHU from Pi
29 27 MIN SatelliteXAxisAngularVelocity 12 dps cubesatsim_rotation|INT NONE 7 3 3 Rotation STEM Payload Board MPU6050 Angular veolcity around X Axis
30 28 MIN SatelliteYAxisAngularVelocity 12 dps cubesatsim_rotation|INT NONE 8 3 3 Rotation STEM Payload Board MPU6050 Angular veolcity around Y Axis
31 29 MIN SatelliteZAxisAngularVelocity 12 dps cubesatsim_rotation|INT NONE 9 3 3 Rotation STEM Payload Board MPU6050 Angular veolcity around Z Axis
32 30 MIN Humidity 12 % cubesatsim_temperature NONE 6 5 3 BME280 Humidity BME280 Humidity
33 31 MIN BAT2_I 12 mA cubesatsim_current NONE 5 2 3 Battery 2 Current INA219 Battery 2 Current
34 32 MIN DiodeTemp 12 C cubesatsim_rpm NONE 6 6 3 Diode Temp STEM Payload Diode Temperature
35 33 MIN Sensor 1 12 integer 1 NONE 6 7 3 Sensor 1 STEM Payload Extra Sensor 1
36 34 MIN STEMPayloadStatus 1 - 17 NONE 6 1 0 STEM Payload Status STEM Payload STEM Payload board failure Indicator
37 35 MIN SafeMode 1 - STATUS_ON_OFF NONE 3 2 0 Safe Mode Safe Mode (Low Battery Voltage)
38 36 MIN SimulatedTelemetry 1 - STATUS_ON_OFF NONE 3 4 0 Simulated Telemetry Simulated Telemetry Indicator
39 37 MIN PayloadStatus1 1 - 17 NONE 6 8 0 Exp 3 STEM Payload status 1 failure indicator
40 38 MIN I2CBus0Failure 1 - 17 NONE 2 2 0 I2C Bus 0 I2C bus 0 failure indicator
41 39 MIN I2CBus1Failure 1 - 17 NONE 2 2 0 I2C Bus 1 I2C bus 1 failure indicator
42 40 MIN I2CBus3Failure 1 - 17 NONE 2 3 0 I2C Bus 3 I2C bus 3 failure indicator
43 41 MIN CameraFailure 1 - 17 NONE 2 4 0 Camera Camera failure indicator
44 42 MIN GroundCommands 4 - 1 NONE 3 3 0 Ground Commands Number of ground commands received
45 43 MIN RxAntenna 1 - 16 NONE 1 3 0 RX Antenna Receive antenna status
46 44 MIN TxAntenna 1 - 16 NONE 1 2 0 TX Antenna Transmit antenna status
47 45 MIN C2CStatus 2 - COMMAND_STATUS NONE 3 5 0 Command Control Command & Control Status
48 46 MIN ICR3VProt 12 V 43 NONE 7 2 3 3V Prot ICR 3V Proteted
49 47 MIN ICR2dot5V 12 V 43 NONE 7 3 3 2.5V ICR 2.5V
50 48 MIN ICR2dot5VProt 12 V 43 NONE 7 4 3 2.5V Prot ICR 2.5V Protected
51 49 MIN rf6 12 - 0 NONE 0 0 0 None None
52 50 MIN rf7 12 - 0 NONE 0 0 0 None None
53 51 MIN MuxTest 12 V 43 NONE 7 5 3 Sensor Power Sensor Power Voltage at the ICR
54 52 MIN LtVGACtl 12 V 42 NONE 1 4 3 VGA Control Control Voltage to the Variable Gain Amplifier (VGA)
55 53 MIN pad 4 - 34 NONE 0 0 0 None Unused
56 54 MIN IHUdiagData 32 - 18 NONE 3 2 0 Diagnostic Info Diagnostic Data on IHU Performance
57 55 MIN pad1 1 - 0 NONE 0 0 0 NONE Filler
58 56 MIN wodSize 8 000s 36 NONE 3 3 0 WOD Stored Number of WOD data payloads kept for each of Science and Housekeeping. In hundreds
59 57 MIN swCmds 32 - 35 NONE 7 6 0 Diagnostic ICR Diagnostic information
60 58 MIN hwCmdCnt 6 - 1 NONE 7 7 0 HW Command Count Number of hardware commands since last reset
61 59 MIN swCmdCnt 6 - 1 NONE 7 8 0 SW Command Count Number of software commands since last reset
62 60 MIN pad2 27 - 0 NONE 0 0 0 NONE Filler

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save

Powered by TurnKey Linux.