Giter Club home page Giter Club logo

starstream's Introduction

StarStream

Overview

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.



Getting Started

Configure Raspberry Pi

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 dependencies

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

Set up API accounts

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:

[email protected]
GMAIL_APP_PASSWORD=xxxxxxxxxxxxxxxxxxx
N2YO_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxx
NGROK_AUTHTOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
OPENAI_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Connect your SDR

Before starting the trackers, make sure your SDR is connected via USB. I am using the RTL-SDR kit from this link.

Run the bootstrap script

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

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 400 miles away from your current location and the elevation is more than 40 degrees. You can adjust these variables in the config object.

Start the NOAA tracking script

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.

Launch 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.

References

NOAA-APT Image Decoder Documentation

N2YO API Documentation

Where the ISS at? API Documentation

RTL_FM Documentation

starstream's People

Contributors

un1xg0d avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.