ISS Antenna - Indicates When the ISS Is Overhead

by Arpan Mondal in Circuits > Microcontrollers

9297 Views, 95 Favorites, 0 Comments

ISS Antenna - Indicates When the ISS Is Overhead

This Mini ANTENNA Notifies You When the ISS is Overhead! (International Space Station)
weather.png
VID_20250406_143355997.mp42-ezgif.com-optimize.gif
Screenshot 2025-04-25 121044.png
Screenshot 2025-04-25 121110.png
Screenshot 2025-04-25 121138.png
Screenshot 2025-04-25 121125.png

This is the third iteration of ISS tracking projects I've been making. The issue is that the online services I've been using earlier to track the ISS no longer exist. But as a space lover, I really loved having something that reminded me of the presence of the ISS up there. Also, the ISS is nearing retirement, set to be decommissioned by 2030. So, while it's still orbiting for the next few years, I wanted to admire its presence and identify exactly when it will be flying overhead, so I can rush outside for a glimpse as it quietly crosses the sky above me.

So this final version (probably) of ISS tracker not only indicates when the ISS is overhead, but also how far it is!

This is a mini desktop antenna that features a tiny RGB LED at its center. When the ISS is far from your location, it glows red. As it approaches within about 1000 km, the light gently pulses yellow, and when it enters visible range, it rapidly pulses green. That’s the time to hurry outside (if it's nighttime, of course) and catch a view of the ISS in action.

This project not only looks stunning on your work desk, but it also makes the perfect gift for any space enthusiast. So, if you have a friend who’s a space nerd, follow along as I show you exactly how I built this, so you can have their next birthday gift ready in no time!


Supplies

Esp8266 microcontroller Link to buy

Common cathode RGB LED Link to buy

Hookup wires Link to buy

470 ohm resistors Link to buy

Micro USB cable

Spray paints (optional)

Glue

Concept

Screenshot 2025-04-25 122708.png
Screenshot 2025-04-25 122646.png
Screenshot 2025-04-25 122753.png
Screenshot 2025-04-25 123051.png

First, we need to plan out exactly how we’re going to pull this off.

The ISS communicates on UHF or Ultra High Frequency bands, specifically around 437 MHz downlink. If you were to calculate the diameter of a dish antenna required to communicate with the ISS at these frequencies, you'd end up with something over 10 meters wide! That's clearly out of the question for a DIY project, especially one that fits on your work desk.

So how do we create a compact antenna that can sit right on your desk? The solution is to let someone else handle the tracking and data retrieval, then feed that information into our antenna. This is much simpler and requires only a few components. For this project, you'll only need an ESP8266 microcontroller, a single RGB LED, and a few resistors to current-limit the LED.

To get the ISS tracking data, we'll use an open-source API like Open Notify. This API continuously provides the live latitude and longitude of the ISS. With a bit of math, we can calculate the distance between your location and the ISS to determine what color the LED should display.


CAD Designs on Fusion 360

Screenshot 2025-04-25 123112.png
Screenshot 2025-04-25 123129.png
Screenshot 2025-04-25 123148.png
Screenshot 2025-04-25 123142.png
Screenshot 2025-04-25 123154.png

For the antenna, I designed a simple model in Fusion 360 that you can easily 3D print.

First, there are the side triangular trusses, one vertical and one inclined on each side. Next, we have the housing that neatly encloses the microcontroller and wiring. At the top, a bridge section secures the antenna dish in place, followed by the dish itself. Finally, a circular disk covers the soldered wires on the LED pins.


Justway

Part of this project was sponsored by Justway.

Justway offers a comprehensive suite of solutions, including CNC machining, 3D printing, sheet metal fabrication, injection molding, and urethane casting, offering rapid prototyping and mass production solutions.

Here are the steps to get your project 3D printed by Justway's 3D printing service.

First, head over to Justway's 3D printing service and select 3D printing. You also have options like CNC machining, injection Molding and Urethane Casting. But for this project, we will use the 3D printing service.

Click on "upload your design". A new page will appear. Here, you need to click on "Select CAD files" and upload the STL file.

After that, select the Quantity, Material (I recommend PLA or ABS for this project). In the color section, you can either select white and paint it later, or select the color you like directly in the 3D print. This will save time later.

Finally, after selecting all the options, you can enter your email and submit the request to get a quote.

Assemble the Antenna

Screenshot 2025-04-25 123511.png
Screenshot 2025-04-25 123524.png
Screenshot 2025-04-25 123558.png
Screenshot 2025-04-25 123605.png

I cut the exact shapes from the 3D model out of PVC board. I wanted to build it by hand for a more personalized feel. For the dish, I used a perfectly sized ice cream cup.

First, I glued all the trusses together using rubber adhesive.

Once everything looked solid, I spray-painted the structure for a nice glossy finish. You can do the same with your 3D prints if you like. I painted the inside of the dish and the housing grey, which I think looks much better than plain white.

I also glued the base to the trusses before painting. Lastly, be sure to paint the circular disc grey as well to complete the look.


Electronics

Screenshot 2025-04-25 123744.png
Screenshot 2025-04-25 123804.png
Screenshot 2025-04-25 123826.png
Screenshot 2025-04-25 123853.png
Screenshot 2025-04-25 123815.png

Now, let’s move on to the electronics. I used a Wemos D1 Mini, but you can use any ESP8266 or ESP32 microcontroller you have on hand. The LED I'm using is a common cathode type, meaning it has a shared ground pin and separate anodes for each of the three colors.

To ensure safe operation, we need to solder three 470-ohm resistors to the pins where the LED anodes will connect. This prevents excessive current draw that might damage either the LED or the microcontroller. In my case, I soldered the resistors to pins D5, D6, and D7. On the other ends of the resistors, I attached long wires that will later connect to the corresponding LED pins. Additionally, I soldered a long wire to the ground pin of the D1 Mini.

The LED is connected with red on D5, green on D6, and blue on D7.

I even used colored wires to help keep track of each connection. Finally, I routed the wires through a hole in the housing and the back of the dish.


The RGB LED

Screenshot 2025-04-25 124030.png
Screenshot 2025-04-25 124047.png
Screenshot 2025-04-25 124055.png
Screenshot 2025-04-25 124112.png

Now, let's focus on the LED. Start by gently bending the LED pins so they resemble nice antenna arms. Then, create four holes in the grey disc and thread the pins through them. Once everything is aligned, carefully solder each corresponding wire to its designated pin.

Then, we can glue the disc in place to finish off the antenna dish! There are some scratches on the paint, but we can paint it again later.

Final Assembly

Screenshot 2025-04-25 150312.png
Screenshot 2025-04-25 150321.png
FRAIRDIM9VDI989.png

Finally, attach the antenna to the bridge section using glue. Then, plug in the micro USB cable through the cutout in the housing, and you're done!

Code

Screenshot 2025-04-25 151231.png
Screenshot 2025-04-25 151240.png
Screenshot 2025-04-25 151302.png

Now it's time to upload the code to the microcontroller. All you need to do is replace the latitude and longitude values in the code with your own, enter your Wi-Fi SSID and password, and upload it. That’s it!

However, I’d like to give a brief explanation of how it all works, so you can tweak the setup as needed.

We start with our current latitude and longitude set as constants in the code.

We use the Open Notify API to retrieve the current latitude and longitude of the ISS in real time.

To determine how far the ISS is from our location, we can’t simply subtract the coordinates because the Earth is spherical, not flat. So, we use the Haversine formula, which accounts for the Earth's curvature, to accurately calculate the distance.

I won’t delve too deeply into the mathematics here, but here's a great explainer video for those who want to learn more.

Finally, based on the calculated distance, the code updates the color of the LED.

We only call the API once every 30 seconds. This is because it is an open source API we got to be mindful of not overloading it.

Downloads

Update: More on Using Arduino IDE (For Beginners)

This is an option step for beginners who need help with using the Arduino IDE with Esp8266 microcontrollers. I received many comments and messages asking for more help. So I decided to add this step. Feel free to skip this if you are already familiar with the Arduino IDE and Esp8266.


Prerequisites

  1. Hardware
  2. An ESP8266 development board (e.g., NodeMCU, Wemos D1 Mini)
  3. USB cable (to connect your ESP8266 to your PC)
  4. Software
  5. A computer running Windows, macOS, or Linux
  6. Arduino IDE (version 1.8.10 or newer)


Install the Arduino IDE

  1. Download
  2. Windows/macOS: https://www.arduino.cc/en/software/
  3. Linux: use your distribution’s package manager or download the tarball.
  4. Install
  5. Run the installer (Windows) or drag the Arduino app to Applications (macOS).
  6. Launch the IDE to confirm it opens correctly.


Add the ESP8266 Board Manager URL

  1. In the Arduino IDE, go to File → Preferences.
  2. Find “Additional Boards Manager URLs”.
  3. Paste in:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
  1. Click OK.


Install the ESP8266 Board Definitions

  1. Open Tools → Board → Boards Manager…
  2. Search for “esp8266”.
  3. Click Install on “esp8266 by ESP8266 Community”.
  4. Once installed, close the Boards Manager.

Select Your ESP8266 Board

  1. Go to Tools → Board.
  2. Scroll down to the ESP8266 Modules section.
  3. Select the model you’re using (WEMOS D1 R2 and Mini in our case).


Install Basic Libraries

Many common tasks require extra libraries. Install them via Sketch → Include Library → Manage Libraries….

Below are a few essentials:

  1. ESP8266WiFi
  2. ESP8266WebServer
  3. ArduinoJson

To install:

  1. In Library Manager, search for each name.
  2. Click Install next to the matching entry.


Uploading Code to Your ESP8266

  1. Connect your ESP8266 module to your PC via USB.
  2. In Arduino IDE:
  3. Tools → Port: select the COM port (Windows) or /dev/ttyUSB... (macOS/Linux).
  4. Click the Upload button (→).
  5. Watch the status area:
  6. “Compiling sketch…”
  7. “Uploading…”
  8. “Done uploading.”

Conclusion

FU46ROCM9VDIFBN.gif
F6NM46LM9VDI99R.png
FU6B4NHM9VDI99G.png

Now all you have to do is power up the microcontroller and set it on your desk. It will continuously update you on how far the ISS is from your location!

I find it absolutely fascinating to think that there are people up there, above us, floating in space, conducting research. It really puts into perspective just how far humanity has come and how high we can rise. As a space geek, this is extremely cool to me.

I've watched the ISS fly by many nights, and each time it fills me up with wonder, reminding me how small we are while also fueling my excitement to explore the universe.

I hope you enjoyed this project!