Entrant 55 : Sattrack an ISS indicator
Posted: Mon Mar 14, 2016 2:41 pm
User
Hopperpop
Description
Sattrack is a small device that sits on your desk, and warns you when the Iss is overflying. It does this by using the Simplified perturbations model (SGP4) for calculating the current position of the satellite. Everything described here is running entirely on the ESP8266, so no external CPU is harmed in the process.
This project started with a more simplified version. It used an API from open-notify.org for catching the rise and set time of the Iss. Combine that with a NTP-server request and some led’s, and the first Iss indicator was born. This was great for a first project, but it missed some information. How high will the Iss rise? Is it visible or is it in the earth shadow? Where do I need to look? All those questions couldn't be answered with the API, and for me this was a big flaw to make it a useful device.
A while later I found out about the SGP4 model. This is a popular model used for calculating satellite positions. The only question was, is the ESP fast and big enough to do all these calculations? I tried it and after some trials, I managed to make it run on the ESP. The ESP can make around 300 calculations/sec at 160 MHz, which is good enough for this project. The model doesn't work on its own. You need to feed it some data. The first thing it needs is the time you're interested in, but I already got that from the NTP-server so that was no problem. The second thing it needs is a two-line-element (TLE). This is two lines of text with some parameters about the satellite orbit. Because the orbit of a satellite is affected by many external factors, you want to use the most recent TLE or else you end up with a wrong position. And that's where the Wi-Fi comes in handy. Every 1-2 hours it looks if it can find a new TLE, so that its stays on track.
The code for this model, recent TLE's and more information can be found on celestrak.com.
With the information from Celestrak, I managed to write some functions that can find out if the satellite is in the earth shadow, visible or if it's day. Then I wrote an algorithm that can find the rise, maximum and set position of the satellite and also when it enters or leaves the earth shadow. Predicting the 10 next overpasses takes less than a second to calculate (on average).
All the information the ESP calculates, is displayed on a webpage. The predictions are shown in a table and the current position is shown with a web-socket. There is also a page for changing all the settings.
When the satellite flies over, the neopixels begin to light up. The color changes as the satellite climbs higher, and it also depends on the type of pass (visible, eclipsed, daylight).
I want to use this project some day to organize a workshop that introduces people to electronics and science. That's why I kept the hardware as simple as possible.
It still needs a pcb and casing, and the code can use some improvements. But all main functions are implemented and working.
This project became bigger than I ever could imagine. I started with almost no knowledge about c++, web design or satellite tracking. But by looking at other people code and examples, I got to the point where I'm at now. For me the learning process was more important than the (almost) finished project. I hope you all enjoy my project and I thank the whole community for all the work I rely on to make this possible.
Summary:
Tracker for almost any satellite.
Overpass predictor.
Webpage showing predictions and current satellite position.
Neopixels for warning the user when the satellite is overhead.
Parts
ESP8266-01
Voltage regulator: LM1117 3.3V
Logic level converter (perhaps unnecessary)
Neopixel ring connected to GPIO2
Resistors,capacitors,...
Links
Github
Images and Video
Video
Images
Hopperpop
Description
Sattrack is a small device that sits on your desk, and warns you when the Iss is overflying. It does this by using the Simplified perturbations model (SGP4) for calculating the current position of the satellite. Everything described here is running entirely on the ESP8266, so no external CPU is harmed in the process.
This project started with a more simplified version. It used an API from open-notify.org for catching the rise and set time of the Iss. Combine that with a NTP-server request and some led’s, and the first Iss indicator was born. This was great for a first project, but it missed some information. How high will the Iss rise? Is it visible or is it in the earth shadow? Where do I need to look? All those questions couldn't be answered with the API, and for me this was a big flaw to make it a useful device.
A while later I found out about the SGP4 model. This is a popular model used for calculating satellite positions. The only question was, is the ESP fast and big enough to do all these calculations? I tried it and after some trials, I managed to make it run on the ESP. The ESP can make around 300 calculations/sec at 160 MHz, which is good enough for this project. The model doesn't work on its own. You need to feed it some data. The first thing it needs is the time you're interested in, but I already got that from the NTP-server so that was no problem. The second thing it needs is a two-line-element (TLE). This is two lines of text with some parameters about the satellite orbit. Because the orbit of a satellite is affected by many external factors, you want to use the most recent TLE or else you end up with a wrong position. And that's where the Wi-Fi comes in handy. Every 1-2 hours it looks if it can find a new TLE, so that its stays on track.
The code for this model, recent TLE's and more information can be found on celestrak.com.
With the information from Celestrak, I managed to write some functions that can find out if the satellite is in the earth shadow, visible or if it's day. Then I wrote an algorithm that can find the rise, maximum and set position of the satellite and also when it enters or leaves the earth shadow. Predicting the 10 next overpasses takes less than a second to calculate (on average).
All the information the ESP calculates, is displayed on a webpage. The predictions are shown in a table and the current position is shown with a web-socket. There is also a page for changing all the settings.
When the satellite flies over, the neopixels begin to light up. The color changes as the satellite climbs higher, and it also depends on the type of pass (visible, eclipsed, daylight).
I want to use this project some day to organize a workshop that introduces people to electronics and science. That's why I kept the hardware as simple as possible.
It still needs a pcb and casing, and the code can use some improvements. But all main functions are implemented and working.
This project became bigger than I ever could imagine. I started with almost no knowledge about c++, web design or satellite tracking. But by looking at other people code and examples, I got to the point where I'm at now. For me the learning process was more important than the (almost) finished project. I hope you all enjoy my project and I thank the whole community for all the work I rely on to make this possible.
Summary:
Tracker for almost any satellite.
Overpass predictor.
Webpage showing predictions and current satellite position.
Neopixels for warning the user when the satellite is overhead.
Parts
ESP8266-01
Voltage regulator: LM1117 3.3V
Logic level converter (perhaps unnecessary)
Neopixel ring connected to GPIO2
Resistors,capacitors,...
Links
Github
Images and Video
Video
Images