ISS overpass indicator

Lamp that warns you when a satellite, like the ISS, is overhead.

Similar projects worth following
Sattrack is a small device that sits on your desk, and warns you when a satellite is overflying. It does this by using the Simplified perturbations model (SGP4) for calculating the current position of the satellite. It's also capable of knowing if the satellite is visible or eclipsed, and it can predict overpasses in the past and future. All of this is done on a single ESP8266. No external CPU is harmed in the process!

To know the current satellite position, the ESP8266 first gets a recent two-line element set from the web. Then it uses the SGP4 model to calculate the current satellite position. With the model and some extra algoritmes, it's able to tell if the satellite is in the earth shadow, and it can predict future overpasses. This information is display on the leds with a color scheme, and on a webpage with a web-socket.

The color changes depending on the elevation of the satellite and the type of overpass: daylight, eclipsed or visible.

(Note: Stellarium is used as a reference. There is no connection between Stellarium and the ESP8266.)

Summary of all it's features:

  • Calculating satellite position and visibility.
  • Predicting previous or future overpasses.
  • Webserver for configuration and real-time information.
  • Neopixels for warning the user when the satellite is overhead.

Bitmap Image File - 1.35 MB - 09/14/2016 at 14:01


  • 1 × ESP8266 Min 1Mb flash.
  • 1 × Neopixelring WS2812
  • 1 × Voltage regulator LM1117 3.3V
  • 1 × Resistors, capacitors,...

  • Additional features

    Hopperpop07/17/2016 at 15:55 0 comments

    I added some extra features that I always wanted to add. The first one is showing more information for an overpass. Every row in the old table is clickable, and opens a new window with additional info.

    The second new feature is the orbit of the satellite on the world map. The orbit shows one revolution of the satellite around the earth. Every point is on a fixed time interval. This helps in understanding the deformation caused by the map projection.

  • Workshop

    Hopperpop07/10/2016 at 20:14 0 comments

    There is a reason why I kept the hardware as simple as possible. I'm planning to do a workshop next month with some youngsters where everyone will make there own Sattrack. Most of them have never done something with electronics, so everything needs to be simple as possible.

    Instead of using the ESP-01, I bought some WeMos. Those board doesn't cost more, but already have a regulator and usb port on board. Additional I bought a matching prototype pcb where they can add an additional button. This button is for resetting the configuration settings. That way they don't need to reprogram it if they lose the password to acces the settings. My initial thought was to also add a level shifter with a 2N7000 mosfet. But because it's works stable without, I removed that part to make it more simpler. I will leave it optional for the people who wants.

    I stilt don't have an idea on how I will make the casing with them. I will probably let them make something out of cardboard and other easy to use materials.

  • Casing

    Hopperpop07/10/2016 at 19:39 0 comments

    The casing is made from scratch. I started with making four 9x9cm planks. Then I printed some patterns out and taped them to the edges to make some finger joints. I mounted my jigsaw upside down and added a plank so that every cut is equally deep. The next step was to remove all the black parts.

    Everything fitted very well from the first time. I didn't expect that. The front is some plastic with an extra layer butter paper. I didn't found anything better at that moment.

    The electronics are mounted on the backside.

    On power-up the ESP shows some animations until it's ready for use. I added some separation planes inside to set apart the individual pixels, and make the animation beter visible.

    The backside with de mini-usb power connector.

  • Webpage

    Hopperpop07/10/2016 at 18:51 0 comments

    With all those calculations running it the background, I needed a way to display all the gathered information in some proper form. I also needed a way to configure the device. The solution, a web server running on the ESP.

    The construction of the site wasn't done in one evening. It was a collection of small improvements over some months. This was because I never build a site before and it also took some effort to let it run smoothly on the ESP.

    The first thing I added was a table with the next 10 overpass predictions. The ESP calculates the first 10 overpasses on startup, and keeps them in memory. When an overpass ends, it calculates a new prediction and add it to the list. I later added two buttons below the table to request more predictions (past and future). These predictions are calculated on the fly, so the ESP freezes for 1 à 2 seconds to do the work.

    After that I added a web socket for showing the current satellite position. The ESP was capable of running one client at 100Hz (this while it constantly recalculates the satellite position). In the current program is the refresh rate limited to 30Hz because more isn't really useful.

    The position is also displayed in real time on a world map. It's an equirectangular map projection so that it's easy to translate latitude and longitude to map coordinates. Then I wanted to add the satellite footprint. That's the region where the satellite is overhead. But drawing circles on an equirectangular map isn't that easy. I came up with my own formules for doing this after some trial and error, and added them in javascript. I found GChristensen script to show the day/night on a map, and added that to my project.

    The red dot is the satellite, the yellow dot the location of the observer.

    I still have some plans in improving the website. Drawing the orbit on the map could be useful, and I still need to add the time when the satellite enters/leaves the earth shadow.

  • The start

    Hopperpop07/10/2016 at 15:56 0 comments

    The initial idea was simple: recreate this project, but with the cheaper ESP8266 Wifi-module. The ESP would catch the rise and set time of the ISS for a given location from , and turn some leds on when it's overhead. This was easily done but the API didn't tell anything about visibility or elevation of the overpass.

    After I saw the video from Grady Hillhouse, I decided to implement the SGP4 model. I wasn't sure if the ESP was capabel of doing all those calculations, but after some tinkering around I got it working. Without any additional features the ESP can calculate around 300 satellite positions per second (at 160MHz).

    With the information I found on Celestrak, I was able to write an algoritme for predicting overpasses. Calculating 10 overpasses takes around 1-2 seconds. After that I added some code to determine if the satellite is in the earth shadow or not. You can't see a satellite if it's eclipsed. So letting the user know if it's visible or not, can prevent a nightly walk outside to see the ISS passing by.

    If you want to know the details on how to predict overpasses, I suggest reading the articles on Celestrak. I won't be able to explain it better.

    On the hardware side, there isn't much to see. You just need an ESP8266 with a power source and some WS2812b connected to GPIO2. I first used a level shifter between the LEDs and ESP because I wasn't sure if it was stable enough. But after trying without, I removed them.

View all 5 project logs

Enjoy this project?



karsten wrote 01/23/2021 at 08:59 point

Hey ! I was able to upload the code (with Platform io) and the data-folder into SPIFF (with arduino IDE and the Data-upload plugin). The AP-mode works and I get connection. But the web page does not appear. Does anyone else have an idea or a tip? TX :-)

It works. A few minor adjustments were necessary in VSC. Great project. Thank you!

  Are you sure? yes | no

karsten wrote 08/17/2018 at 07:44 point

Hey. I want to repoducing this nice item, but my Arduino IDE get some errors like: error: expected primary-expression before 'bool'

Anyone there who can help me ???


  Are you sure? yes | no

martend.baas wrote 09/16/2019 at 15:54 point

A late reply, but hey... :-) I just stumbled on this project, want to make it myself. What you need to compile it with, is not the Arduino IDE but PlatformIO it's an extension for Visual Studio Code.

  Are you sure? yes | no

karsten wrote 01/12/2020 at 20:46 point

Ahhhh. Thank you. did you build it? it works? best regards

  Are you sure? yes | no

IW0HJZ wrote 07/10/2016 at 17:12 point

Nice, I'll use it to know when ISS is over the head and use aprs mode with my vhf radio.


IW0HJZ alberto

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates