Automatic Satellite Tracker

by LB5ZH, Geir Inge and Andreas G.

HAM radio has a lot to offer, and one of the more exotic items is communication via amateur satellites. AMSAT is a worldwide group of amateur radio operators that design, build and operate non-commercial amateur radio satellites. These are launched as secondary payloads on commercial space missions, and as of now there have been 108 such satellites launched to orbit. Some of these are garage made satellites with software made by volunteer effort and as of now there exists even a geo-stationary satellite. The first satellite were launched back in 1961, barely four years after the launch of Russia´s first Sputnik. These satellites carry the name OSCAR, for “Orbiting Satellite Carrying Amateur Radio”. AMSAT maintains a list of active satellites which can be used for two-way communication.

Most of these satellites are low-powered following a low earth orbit meaning that communication equipment must track the orbit as it passes through the sky in just minutes. It is possible to track the most powerful of these satellites with a handheld antenna pointing in the correct direction, but for best results a multi-element yagi antenna mounted on a computer controlled rotator that tracks the orbit of the satellite is required.

Project goals

This is part of a student project at TRINT, where one of the students aim to design and build an automatic satellite tracker for two-way radio communication using cheap and available hardware. He has put forward the following criteria:

  • Portable. It must be possible to relocate the antenna anywhere without requirements of realignment of any kind. It must be able to use the GPS position and magnetic north automatically. Being portable means mounted on a tripod, and all parts should be easy to split into portable items.
  • Automatic. It should be a set and forget solution. With the use of a GPS, Gyro and magnetic compass the software should be able to calculate the position of satellites. A two-axis rotator with motors should then automatically track the orbiting satellite, providing a fully autonomous experience.
  • Cheap. No commercial rotators will be considered. This project is a DIY project with parts ordered from eBay, Amazon, AliXpress

The radio transceiver itself, antenna and computer is considered out of scope.


Such a project requires a lot of research and consideration into the design of every part. The following is a list of considerations

  • What type of rotator
  • What motors (servo, stepper or DC)
  • What type of controller for the motors
  • Interface to PC
  • What kind of commercial antenna
  • What type of radio. Two-way or SDR
  • What type of software to calculate the orbit and interface the rotator
  • Which parts can be 3D printed and what has to be ordered


With some research we found that there already exists several designs for such automatic rotators in the ham radio community.

Clear Sky Institute, Elwood Downey design

Back in 2016 Elwood Downey, WBØOEW, published an article in ClearSkyInstitute with his two-axis autonomous tracker. His design uses two servo motors controlled by an Adafruit Feather HUZZAH (ESP8266). The article mention the previous Arduino Mega as the controller but it has later been updated with the more powerful ESP8266. This ESP has the advantage of built-in bluetooth and WiFi chipsets for computer control making the overall design simpler.

The ingenious with his design is the fully autonomous control of the servo motors. By using a Adafruit 746, a 66 channel GPS sensor breakout, together with the Adafruit 9-DOF absolute orientation breakout, he is able to know the exact position and the orientation of the antenna for a fully automatic computer controlled operation. There is no manual alignment of any kind!

Unfortunately this design has several flaws. First of all, it is not waterproof. Being in this part of the world we need a waterproof design. Neither can it handle big antennas as it will be wobbly. And last, although 2016 is not that old, none of the servo motors used in his design are available. There are of course updated models of the servos available, but being RC type servos these are very expensive. There is also no design for how to put this all together, which is left up to the builder. The accuracy of the rotator is within +/- 2.5° of the orbit.


SatNOGS is an Open Source global network of satellite ground-stations. By using open technologies the project design full ground stations that are globally connected. This enables multiple observers to utilize multiple ground stations around the globe to monitor and download data using autonomous amateur built stations. The data gathered is publicly available through the projects website. The main purpose is to receive telemetry data from Low Earth Orbit satellites using SDR radios free for everyone to use. SatNOGS is part of Libre Space Foundation and has even been used by European Space Agency to gain initial status observations of a CubeSat after launch.

One of the projects of SatNOGS is to build a complete rotator using either stepper or DC motors. The design is made from scratch and utilize 3D printed parts throughout the whole design. It is constantly evolving and version 3.1 is currently in development. Version 3.x is a major redesign over version 2 and version 3.1 aims to be more compact and more accurate than version 3.0. Properly built the accuracy is within +/- 0.5° of the orbit. The rotator is waterproof and can handle big antennas. By using simple stepper motors and 3D printed support the design is relatively cheap.

The SatNOGS design assume that the antenna is stationary mounted, where it has been properly aligned manually. There is no GPS, and no gyro to keep it horizontal, as well as no compass to tell the direction that it is pointing. The controller is custom designed and you will ned to have the PCB printed somewhere and solder on all the components. The Arduino is still the core processor of this design, but will be mounted on the PCB.

Rotator decisions

The SatNOGS rotator has several advantages, such as

  • Cheap, using 3D printed parts and simple motors
  • Accurate
  • Waterproof
  • Sturdy

We chose to go with stepper motors due to simple design and predictability in software with small discrete steps. If we manage to make use of the Adafruit Motor FeatherWing we can avoid designing our own PCB as everything will be stacked.

As for controller, we will go with both the SatNOGS controller and the design by Elwood Downey. Our primary goal was to be portable and autonomous so we will start with the Elwood design, meaning that we will have to adopt his software to be using stepper motors instead of servos. In addition, the SatNOGS rotator must be enhanced with additional GPS and 9-DOF sensors. Later on, we will add the SatNOGS controller to be able to be part of the global network of open satellite ground stations.


The advantage of using satellites as communication relays is that they are within line of sight of the radio. As such, there is no need for huge antennas, but at the same time they transmit with really low power so it is an advantage to use a narrow beam antenna such as a multi-element yagi. Due to the requirements of a portable ground-station we cannot use a fixed antenna. The antenna elements must be able to be split apart and put in a transportation bag.

Telemetry from satellites usually use high frequencies up into several GHz. On the other hand, communicating through them using them as repeaters are usually performed using amateur radio frequencies in the VHF and UHF band. We want to start using them as communication relays but will most likely add antennas for telemetry reception such as weather images.

We found the Arrow Antenna to be a good performing multi-element yagi and at the same time be portable with transportation bags. Due to our location at 69° north the decision ended on the 14 element Alaskan 146/437-14 antenna.

Ordering the parts

We used PLA 1.75 filament to print most of the parts from the SatNOGS design. We followed the BOM from SatNOGS, with additional Adafruit parts from the Elwood controller design. We ordered the parts according to this list:

  • All aluminium parts, screws and nuts from Motedis in Germany. The aluminium frame is ordered pre-cut.
  • All Adafruit/Arduino parts from Tinkerly/ParadiseTronic in Germany (before we knew about the good selection of Arduino stuff at
  • Stepper motors, pulleys and drive belts from GRoboTronics in Greece. They also have a good selection of Arduino.
  • Ball bearings, RS Online
  • Microswitches, Lemona Electronics in Lithuania
  • M3 DIN 914 headless screws from Accu in the UK. They have a good selection of screws, nuts and other hardware.
  • All our custom PCB´s manufactured by Elecrow, China.

Building the electronics

We decided to add a 20×4 LCD screen with an I2C controller circuit to make it easier to debug the project. We can for instance print the IP of the built-in web-server as well as the status of the various sensors, GPS and so on. In the field, without a PC connected to the micro-controller such a display will make it all easier to operate.

Adafruit has a full ecosystem of small electronic controllers, and their new feather ecosystem makes it especially easy to create small micro-controller based projects. Pinouts for the various components:

Testing the ESP8266 controller

The software is based on the work by Elwood Downey, WBØOEW. We are adding our own code to control the stepper motors as well as status updates on the additional LCD display. Putting it all together using the breadboard for the first time did give us the opportunity to test the software and the various components.

Be aware though, that the software linked to on Clear Sky Institute by Elwood Downey is actually the Arduino Uno based code. Further down, somewhat hidden, but still on that page you will find the code for the ESP8266. The code is good quality and with comments that made it easy to adapt to our needs. It did compile without errors even with the latest versions of the various libraries.

Problems with the design…

Up until this point the software and electronics design from Elwood Downey has been working fine. His design used servo motors that would be impossible to use together with the SatNOGS rotator. We therefor initially decided to use the Adafruit Feather Motorwing motor controller as it is a stacking module to the micro controller which would simplify wiring a lot. However, our first problem came when connecting the stepper motors to this controller. We instantly blew one of the controllers (as seen in the lower parts on this picture), and testing it even further just showed that this motor controller was primarily designed for DC motors and not stepper motors. The steppers did move, but with irregular movements and with a lot of noise. We decided to go back to the drawing board.

Updated electronics components

The controller of choice for stepper motors seems to be the Pololu Allegro A4988 stepper motor driver carrier or the updated and pin compatible Pololu Texas Instruments DRV8825 for high current motors. In our Proof-of-Concept breadboard setup we tested with the A4988 but the final design will use the DRV8825.

Changing to either of these motor controllers imposed another problem with the initial design. These controllers are controlled with GPIO pins where even the microstepping resolution require the use of several GPIO pins. Studying the details and pinouts of the A4988 reveals that we need more GPIO pins than the Huzzah ESP8266 micro-controller have available. This means that we need to abandon the ESP8266 and go with the updated and new Adafruit Huzzah32 – ESP32 micro-controller that offers a lot more GPIO pins. This in turn requires some rewriting of the initial software designed for the ESP8266. Especially regarding the switch from a software based serial pin on the ESP8266 to a proper hardware IO UART on the ESP32 for the GPS NMEA feed from the Adafruit 746 GPS.

Putting this all together requires a lot of wiring which were unnecessary with our initial design. By stacking the micro-controller and using the Adafruit Motor Featherwing we would have avoided most external wiring. As seen on our PoC breadboard setup the number of wires in our new design indicate that we should consider designing our own Printed Circuit Board (PCB) where we can solder these components to get a tidy design.

A huge amount of wires in our new design

Putting together the rotor

All the printed parts must be put together within the aluminum frame with the aluminum tube as the center piece. Following the guidelines in the SatNOGS project page this should be a fairly simple task. Our first hurdle were that the diameter of the aluminum tube were a few micrometers to wide, even though we used the correct part number when ordering it. We could of course print most parts a little bit wider, but we still needed to fit the metal ball bearings. Due to this problem the solution was to use a plastic tube from Biltema. It fitted nicely but will give us other problems due to the soft nature of the tube. We will need to design new parts to make the tube a little stiffer where we mount the antenna and to the base towards the tripod.

Another problem were that some of the printed parts were a little bit too big. The components were so tight when put together that rotating the tubes were impossible. The solution were to cut a few millimeters on the design of some of the pieces and then reprint those. With the modification the tubes rotated as intended. All the moving parts were greased with silicon grease.

Designing new parts

Due to the soft nature of the plastic tube we need to reinforce the tube with printed parts to make it stiffer.

One of the parts must be able to connect the tube with a regular photo tripod in such a way that the whole rotor is stable and don´t rotate at the joint with the tripod. The tripod has a reversible head making the center pole stick upwards. All we need is to make the rotator tube fit on top of that. To do this we used the free version of Autodesk Fusion 360 CAD software to create the 3D design for the piece that we could print on our 3D printer. The Fusion 360 CAD software is not terribly difficult to learn, but spending some time watching instruction videos on YouTube can save you hours of troubleshooting.

The next piece is for the antenna mount. It must be sturdy enough and keep the antenna from moving around the tube based on its own weight. We cut out a small piece of the tube to make a holding point for the antenna mount. The mount must also have space for the gyro and magnetic compass so that we know where the antenna is pointing. There must also be holes for wiring and this whole piece must handle rain without destroying the electronics. This piece was so difficult to design that we felt like experts in Fusion 360 when we finally were finished.

Controller software / firmware

The idea was to use the software made by Elwood Downey, WBØOEW, as-is and without much modifications. As it turned out, a lot of the code had to change. His code were very good and easy to read, which made my work adapting it much easier. First and foremost, we chose to use stepper motors instead of servos. We also added an LCD and we changed the microcontroller to the ESP32. So hardware is very different but we still could make use of his satellite trajectory calculations and the general layout of the code-base. His software provides a brilliant web-interface to configure which satellite to track. Extremely user-friendly.

In the end, we changed the following:

  • Ditched his Gimbal class and developed a completely new stepper engine class that controls the stepper motors using two A4988 control circuits.
  • Added an LCD class and updated the code all over the place to make status updates on the LCD.
  • Updated codebase to work with the ESP32. Only minor changes needed.
  • Changed the GPS serial interface from software to hardware driven
  • Rewrote the whole EEPROM code to make use of the newer library API. Makes it easier to store persistent configuration between reboots.
  • Rewrote the BNO055 9DOF sensor code to make use of the newer library API. A lot easier to interface the sensor, as well as new calibration routines.
  • Updated the world magnetic model to adjust the magnetic north towards a more correct geographical north.

As soon as the software is completely finished and without known bugs we will put it out on Github. As it is, the code changes every day as we encounter problems with the hardware. Currently the 9DOF sensor is giving us headaches as it behaves erratic when calibrated. We might add a separate sensor for magnetic north (azimuth) and use the current 9DOF for elevation reading.

Sites with satellite maps


  1. Anonymous

    A good project. I would like to know if they will post the code and schematic.Thanks

    • Geir Inge Jensen

      Yes, we will certainly do so. We are currently adopting the software and making minor adjustments to the electronics configuration. When finished we will make everything available.

Leave a Reply

Your email address will not be published.

I accept the Privacy Policy * for Click to select the duration you give consent until.