The idea behind this project is to automate the receiving and logging of communications from the amateur radio repeater on the International Space Station.
It uses the real-time location of the ISS to determine distance from the user and automatically starts receiving through an attached SDR when the conditions are deemed acceptable.
It can also automatically capture and process NOAA weather satellite images.
Install Raspberry Pi OS Lite (64 bit) onto your Raspberry Pi, configure the WiFi settings, and create an account with the username admin
.
This is the headless mode without a GUI, which will make the system last longer on battery power.
Install required software with the commands:
sudo apt install -y gpsd gpsd-clients python3-pip rtl-sdr sox
pip3 install -r requirements.txt
You will also need to install the NOAA-APT image decoder:
wget https://github.com/martinber/noaa-apt/releases/download/v1.4.1/noaa-apt-1.4.1-aarch64-linux-gnu-nogui.zip -O /home/admin/StarStream/decoder/noaa-apt-1.4.1-aarch64-linux-gnu-nogui.zip
unzip /home/admin/StarStream/decoder/noaa-apt-1.4.1-aarch64-linux-gnu-nogui.zip -d /home/admin/StarStream/decoder/
rm -rf /home/admin/StarStream/decoder/noaa-apt-1.4.1-aarch64-linux-gnu-nogui.zip
You may need to configure GPSD to use your USB GPS receiver:
sudo sed -i 's/GPSD_OPTIONS=""/GPSD_OPTIONS="\/dev\/ttyUSB0"/' /etc/default/gpsd
You will need to create an OpenAI API key to handle the audio-to-text transcriptions, and an ngrok token to expose the Flask app to the internet without any additional setup like port forwarding.
You will also need to create a Gmail app password to send the latest dashboard URL to yourself when the app is started.
If you want to capture images from the NOAA satellites, you will also need an API key for the N2YO API.
Once you have these, create a .env
file in the root project directory and populate it with your personal tokens:
GMAIL_ADDRESS=example@gmail.com
GMAIL_APP_PASSWORD=xxxxxxxxxxxxxxxxxxx
N2YO_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxx
NGROK_AUTHTOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
OPENAI_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Before starting the trackers, make sure your SDR is connected via USB. I am using the RTL-SDR kit from this link.
Run bootstrap.sh
once to configure a crontab that automatically starts both the tracking scripts and the web dashboard on boot.
bash bootstrap.sh
Start the ISS tracking script as a background process:
python3 tracker_iss.py &
This script will constantly query the location of the ISS and will start recording when the distance is less than 750 miles away from your current location and the elevation is more than 15 degrees. You can adjust these variables in the config
object.
Start the NOAA tracking script as a background process:
python3 tracker_noaa.py &
This script collects a list of NOAA satellite passes overhead of your location. It constantly compares the timestamps of the future passes to the current timestamp, and starts recording when the satellite is nearby. It will automatically process each recording into a satellite image, which you can view on the web interface.
python3 web.py
The Dashboard page has general information on the status of the ISS, your recordings, and a map of the real-time position of the ISS. It also displays a list of future NOAA satellite passes at your location.
The Recordings page lets you analyze individual captures, play the converted audio files, read transcripts of the communications, and view any processed satellite images.
The Controls page allows you to specify parameters and manually capture a recording.
The Logs page displays the most recent output of the tracker scripts.
NOAA-APT Image Decoder Documentation