Skip to content

KingDuane/Moonshot-ISS

Repository files navigation

                    @         @                 @@@@@       @         @@@@@@@@@@
                  @@@       @@@             @@@@@@@@@@@@@   @@@       @@@@@@@@@@
               @@@@@@    @@@@@@           @@@@@@@@@@@@@@@@@ @@@@@@    @@@@@@@@@@
             @@@@@@@@  @@@@@@@@          @@@@@@@@@@@@@@@@@@@@@@@@@@@  @@@@@@@@@@
          @@@@@@@@@@@@@@@@@@@@@   @@@   @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
        @@@@@@@@@@@@@@@@@@@@@@X@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
     @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@
   @@@@@@@@@@@@@@@@@@@@@@@@@@@X@@@@@@@@@    @@@@@@@@@@@@@   @@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@    @@@           @@@@@       @@@@@@@@@@@@@@@@@@@@

                  @@@@@@      @@@@@@@@@@@@@@@@@@@@          @@@@@@@@@@@@@@@@@@@@
              @@@@@@@@@@@@@   @@@@@@@@@@@@@@@@@@@@          @@@@@@@@@@@@@@@@@@@@
            @@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@    @@@   @@@@@@@@@@@@@@@@@@@@
           @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@         @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@     @@@@@@@@@@
 @@@@@@@@@@@@@@@@@@@          @@@@@@@@@@@@@@@@@@@@ @@@@@@@@@     @@@@@@@@@@
   @@@@@@@@@@@@@@@            @@@@@@@@@@@@@@@@@@@@    @@@        @@@@@@@@@@
      @@@@@@@@                @@@@@@@@@@@@@@@@@@@@               @@@@@@@@@@

Moonshot ISS Tracker

A realtime International Space Station tracker that runs on a tiny 1.28-inch round LCD display. It plots the ISS position as a radar blip relative to your location, with a rotating sweep line and dashed trajectory trail.

The surprise discovery: leave it running for a few hours and the orbital trail produces beautiful spirographic mandala patterns. The ISS completes an orbit every ~90 minutes at a 51.6-degree inclination, and because the Earth rotates beneath it, the dashed trail traces sinusoidal curves that overlap into intricate geometric forms — revealing the curvature of the Earth in miniature.

Moonshot ISS Tracker

Hardware

  • Board: ESP32-S3-Touch-LCD-1.28 (Waveshare)
  • Display: 1.28" round GC9A01 LCD, 240x240 pixels, RGB565 color
  • Interface: SPI at 80MHz

How It Works

  • Fetches the ISS position every 30 seconds from the Open Notify API
  • Calculates distance and bearing from your location using the Haversine formula
  • Renders a radar view with range rings, a north line, and a rotating sweep
  • Draws the ISS as a pixel-art silhouette with coordinates shown when the sweep passes over it
  • Leaves a dashed trail behind the ISS (up to 1000 points) that accumulates into the spirographic patterns
  • Shows a world map background centered on your location
  • If the ISS is out of range, an arrow marker points toward it from the radar edge

Setup

  1. Flash MicroPython onto the ESP32-S3
  2. Edit iss-tracker.py and set your WiFi credentials and location:
    WIFI_SSID = "your_network"
    WIFI_PASSWORD = "your_password"
    USER_LAT = 40.7128      # your latitude
    USER_LON = -74.0060     # your longitude
  3. Copy all .py files to the device
  4. The tracker starts automatically on boot

Screenshots

The tracker has a built-in screenshot feature that saves the display framebuffer to the device's flash storage.

Capturing on the device:

Press the BOOT button (GPIO 0) at any time while the tracker is running. Each press saves the current frame as a raw RGB565 binary file (screenshot_001.bin, screenshot_002.bin, etc.) up to a maximum of 10 images. A confirmation message prints to the serial console.

Converting to PNG on your computer:

  1. Copy the .bin files from the device to your computer (e.g. using Thonny, mpremote cp, or ampy)
  2. Install Pillow if you don't have it: pip install Pillow
  3. Convert:
    # Single file
    python convert_screenshot.py screenshot_001.bin
    
    # All screenshots at once
    python convert_screenshot.py screenshot_*.bin
    
    # Custom output name
    python convert_screenshot.py screenshot_001.bin -o mandala.png
    
    # With color (default is greyscale)
    python convert_screenshot.py screenshot_001.bin --saturation 1.0

The --saturation flag controls color: 0.0 (default) produces greyscale, 1.0 gives full color, and values in between give a hint of color.

To free up space for new captures, delete the .bin files from the device.

Files

File Description
iss-tracker.py Main application
lcd_1inch28.py Display driver for the GC9A01 round LCD
boot_logo.py Boot animation image data (RGB565)
iss_icon.py ISS silhouette sprite (15x11 pixels)
world_map.py World map bitmap (344x207 pixels)
convert_screenshot.py Converts device screenshots (RGB565) to PNG — runs on host computer

About

Realtime ISS tracker for ESP32-S3 round LCD — orbital trail produces spirographic mandala patterns

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages