Tracking Inmarsat 4-F3 with Node-RED

This page is out of date.
Please go to my GitHub site: https://thebaldgeek.github.io/

For a year now I have been ‘tracking’ Inmarsat 4-F3 for my C-Band ADSC aircraft receiving ground station.
It has been very crude tracking, but tracking none the less.
I used a linear actuator with a position feedback resistor. Its worth noting that the position feedback is really critical. Without it you just don’t know where the dish is pointed.

The actuator is very compact and was around 100 dollars, so not too bad in the over all cost of the project. Its worth noting that you can buy a version without the feedback resistor for about 20 bucks less, don’t skimp. You must have the feedback for this application.
It is supposed to be lightly weather proof but even so I have it wrapped in a plastic bag to protect it mostly from the nightly runs of the irrigation system.
Another thing of note is that the actuator is rated for 12 to 24 volts.
At that voltage, it is way too fast for what we need…. so I have a 6 volt DC power supply driving the unit.

Now the tracking.
As you may recall from my main post on the subject, I knew from reading bit and pieces that the satellite makes a slow figure 8 in the sky over a 24 hour period.
Here is what that oscillation looks like on a graph.

You can sort of visualize the up and down and slide to side motion of the satellite over 24 hours.
When we look at a heat map of what its doing in the sky, it all becomes clear.

The satellite is up there in space, just over the equator, wobbling about.
To do the initial tracking of it, I got some code help from my son….
What we decided to do was to break the 24 hours up into 3 hour time slices and move the dish to a preset resistor location every time slice.
I have removed the GUI so don’t have a screen shot, but it was a very simple grid of boxes that had the user entered resistor location for each time slot.
Over a period of 2-3 weeks of me watching the signal strength in SDR# I got a feel for where each time slot needed to be and so tuned the dish tracking.
It worked pretty good with one major flaw…. The satellite has an oh so slightly longer oscillation period than 24 hours.
This meant that over the space of a month, I would need to re-tune all my 3 hour time slots (again and again).
This was just way too high of a maintenance task for me.

Node-RED to the rescue.
There a group of three satellite tracking nodes; https://flows.nodered.org/node/node-red-contrib-satellites
You can do a lot of cool things with them, but in the end we only need the one node. Since Inmarsat is not in its drop down pre-select list, we need the TLE node.
Using the example flow on github you can pull down the TLE for any given satellite.
Now we have the latest orbit parameters for the satellite we can now track it very accurately.
(This is in fact how I got the above screen shots of the orbit oscillation and heat map).

Every hour we run the orbit check and output the satellite position in x,y and z. (Note, I don’t use y or z).
As you can see from the graph and the heat map, the longitude and altitude drift are not really enough for me to worry about (Or are they? Since I have only just got this going, I am still collecting data on if I should add another actuator and track azimuth well as elevation).
The output latitude data simply goes into a range node which remaps the -3 to +3 deg swing to the resistor value in the actuator.
The output of that node goes into the micro-controller which has some very simple code of making sure the resistor matches the commanded resistor value by switching the up and down motor relays.
So, in short, every hour we send a resistor value that equates to the satellite position to a motor controller that measures the actual resistor value and adjusts it to match whats coming in.
Here is what it looks like in action.

Pretty easy to see where I turned on the new system. 8am Friday morning.
Here is a week long graph that better shows how my tracking was working over the Node-RED tracking.

It has transformed the tracking accuracy and will take the burden off me having to watch it and re-tune it.
I can now just let it run knowing it is going to be super accurate all the time.
To say I am very happy with how well it came together is an understatement.
Why then did I not do it this way a year ago? I simply did not know about the TLE Node.