From 04a4b5b13c1bb2e0df86b22b76387998b97b688b Mon Sep 17 00:00:00 2001 From: Alan Johnston Date: Thu, 20 Feb 2025 12:32:33 -0500 Subject: [PATCH 1/4] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1ec10273..bdac8141 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ There are several hardware versions and software branches to go with them - see See the Wiki Software Install page for more details: https://github.com/alanbjohnston/CubeSatSim/wiki/2.-Software-Install. The software runs on any Raspberry Pi including the Raspberry Pi 4B, 3B, 3B+, Pi Zero, Pi Zero W, or Pi Zero 2 W. -There are two ways to get the CubeSatSim software for your Pi. +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. From 213c9bf89b46eb0c7c9e212ac41303cfd6a9ec17 Mon Sep 17 00:00:00 2001 From: Alan Johnston Date: Sat, 22 Feb 2025 15:00:04 -0500 Subject: [PATCH 2/4] Update transmit.py for mode e, set to Card --- transmit.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/transmit.py b/transmit.py index 6932638e..3c6404cd 100644 --- a/transmit.py +++ b/transmit.py @@ -792,7 +792,7 @@ if __name__ == "__main__": ## system("arecord -D plughw:CARD=Device,DEV=0 -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 " + tx + "e3 &") system("sudo nc -l 8011 | csdr convert_i16_f | csdr gain_ff 16000 | csdr convert_f_samplerf 20833 | sudo rpitx -i- -m RF -f " + tx + "e3 &") sleep(1) - system("sudo arecord -D plughw:1 -r48000 -fS16_LE -c1 | nc localhost 8011 &") + system("sudo arecord -D plughw:CARD=Device,DEV=0 -r48000 -fS16_LE -c1 | nc localhost 8011 &") GPIO.output(powerPin, 1) sleep(0.5) GPIO.output(powerPin, 0) From be5fb9f6729e9a5e7cc9167541a150eed49fa5e7 Mon Sep 17 00:00:00 2001 From: Alan Johnston Date: Sun, 13 Apr 2025 13:07:32 -0400 Subject: [PATCH 3/4] added sdrpp frequency config file --- groundstation/frequency_manager_config.json | 171 ++++++++++++++++++++ 1 file changed, 171 insertions(+) create mode 100644 groundstation/frequency_manager_config.json diff --git a/groundstation/frequency_manager_config.json b/groundstation/frequency_manager_config.json new file mode 100644 index 00000000..31e6e4b8 --- /dev/null +++ b/groundstation/frequency_manager_config.json @@ -0,0 +1,171 @@ +{ + "bookmarkDisplayMode": 1, + "lists": { + "General": { + "bookmarks": { + "AO-73": { + "bandwidth": 5000.0, + "frequency": 145935000.0, + "mode": 4 + }, + "APRS Packet": { + "bandwidth": 12500.0, + "frequency": 144390000.0, + "mode": 0 + }, + "ATC Clearance Delivery": { + "bandwidth": 12500.0, + "frequency": 118850000.0, + "mode": 2 + }, + "ATC Ground East": { + "bandwidth": 12500.0, + "frequency": 121900000.0, + "mode": 2 + }, + "ATC Ground West": { + "bandwidth": 12500.0, + "frequency": 121650000.0, + "mode": 2 + }, + "ATC Local East": { + "bandwidth": 12500.0, + "frequency": 118500000.0, + "mode": 2 + }, + "ATC Local West": { + "bandwidth": 12500.0, + "frequency": 135100000.0, + "mode": 2 + }, + "CAS-4A": { + "bandwidth": 5000.0, + "frequency": 145836000.0, + "mode": 4 + }, + "CAS-4B": { + "bandwidth": 5000.0, + "frequency": 145893000.0, + "mode": 4 + }, + "CubeSatSim": { + "bandwidth": 12500.0, + "frequency": 434900000.0, + "mode": 0 + }, + "Ham APRS": { + "bandwidth": 12500.0, + "frequency": 144390000.0, + "mode": 2 + }, + "Ham Beacon PHL": { + "bandwidth": 3000.0, + "frequency": 144272000.0, + "mode": 4 + }, + "Ham Cherry Hill": { + "bandwidth": 201869.15625, + "frequency": 145370000.0, + "mode": 0 + }, + "Ham Munroe": { + "bandwidth": 12500.0, + "frequency": 145390000.0, + "mode": 0 + }, + "Ham Newtown": { + "bandwidth": 12500.0, + "frequency": 147060000.0, + "mode": 0 + }, + "Ham Paoli": { + "bandwidth": 18495.533203125, + "frequency": 145130000.0, + "mode": 0 + }, + "ISS": { + "bandwidth": 5000.0, + "frequency": 437800000.0, + "mode": 0 + }, + "ISS-SSTV": { + "bandwidth": 5000.0, + "frequency": 145800000.0, + "mode": 0 + }, + "NOAA Allentown": { + "bandwidth": 18495.533203125, + "frequency": 162400000.0, + "mode": 0 + }, + "NOAA Harrisburg": { + "bandwidth": 18495.533203125, + "frequency": 162550000.0, + "mode": 0 + }, + "NOAA Hiburnia Park": { + "bandwidth": 18495.533203125, + "frequency": 162425000.0, + "mode": 0 + }, + "NOAA PHL": { + "bandwidth": 18495.533203125, + "frequency": 162475000.0, + "mode": 0 + }, + "NOAA Sudlersville": { + "bandwidth": 18495.533203125, + "frequency": 162500000.0, + "mode": 0 + }, + "PHL": { + "bandwidth": 12500.0, + "frequency": 133275000.0, + "mode": 2 + }, + "PHL 2": { + "bandwidth": 12500.0, + "frequency": 133475000.0, + "mode": 2 + }, + "PHL 3": { + "bandwidth": 12500.0, + "frequency": 133500000.0, + "mode": 2 + }, + "PHL 5": { + "bandwidth": 12500.0, + "frequency": 133575000.0, + "mode": 2 + }, + "PHL 6": { + "bandwidth": 12500.0, + "frequency": 134600000.0, + "mode": 2 + }, + "PHL 7": { + "bandwidth": 12500.0, + "frequency": 135450000.0, + "mode": 2 + }, + "PHL 8": { + "bandwidth": 12500.0, + "frequency": 128795000.0, + "mode": 2 + }, + "PHL Automated": { + "bandwidth": 18495.533203125, + "frequency": 133400000.0, + "mode": 0 + }, + "The Roar WXVL": { + "bandwidth": 201869.15625, + "frequency": 89100000.0, + "mode": 1 + } + }, + "showOnWaterfall": true + } + }, + "selectedList": "General" +} \ No newline at end of file From c847128886aef1c7e5b615d22fd036dfd28bad27 Mon Sep 17 00:00:00 2001 From: Alan Johnston Date: Wed, 21 May 2025 14:03:15 -0400 Subject: [PATCH 4/4] Add files via upload --- hardware/frame/v2.0/plug_circle_24.stl | Bin 0 -> 65784 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 hardware/frame/v2.0/plug_circle_24.stl diff --git a/hardware/frame/v2.0/plug_circle_24.stl b/hardware/frame/v2.0/plug_circle_24.stl new file mode 100644 index 0000000000000000000000000000000000000000..890e33054f28a92adacdfba598a4a42e8eb645a5 GIT binary patch literal 65784 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 T&^Av>UT#ayc`?DQ>3RPTeqZz{ literal 0 HcmV?d00001