Build your own Rotator Interface

Rotator Interface

I have created this page with all information needed to build your own Rotator Interface.
On this page you will find the minimal requirements and hardware configuration needed to embed this in your own Rotator interface / situation.
The initial design of this Rotator Interface is based on AC Rotator motors, and Analog potentionmeter based readout.
The controller can be used with a variaty of software like: Orbitron, Wisp, HamRadio Deluxe, SATPC32 and many many more software out there..
If your software supports the Yaesu GS232 protocol, then this interface works 🙂


This schematic shows the uC and it’s IO, I have drawn both version of the uC DIP40 and TQFP44
Click on image for bigger view

An example of protection circuit for the ADC Inputs

This circuit will prevent the ADC inputs from overvoltage..
With the POT’s you can adjust the maximum voltage in.
For example, if your antenna rotator gives a voltage of 8v out on 360 degrees, adjust the POT for 4.8V on the ADC pin.
Always start with the POT closed!!

Rotator motor control interfacing

For controlling AC motors of rotators, I am using Solidstate relais for more then a decade now.
No more burned relais contacts! no more clicking noise coming from your interface, just silence!

The solidstates I am using are the SHARP S202S02


Here an example how to safely interface AC rotator motors

24VAC_1 and 24VAC_2 is the 24v AC power supply.

Note that in some cases a capacitor is needed!,
Please check your rotator and or rotator control unit..If these capacitors are installed in your rotator(s), then this schematic will do fine.
If the capacitors are not installed in your rotator(s) then you have to connect them between CW and CCW connection, and UP and DOWN connection.


Terminal mode

The firmware is fully compatible with the Yaesu command set, and it also has some extra features like calibration functions that work with the RotoDroid Android App.

You can also control the interface via a Terminal something like PuTTY:
Help screen:
This screen gives all functions of the interface.

Debug data, this screen shows raw ADC data, and also stored ADC values of all Calibration positions.
This could be very handy if per accident a calibration is lost due wrong calibration.debug-data

Rotator Interface Screens and Functions and Calibration

First of all we need to tell the controller if it is used with only an Azimuth rotator, or with an Azimuth + Elevation rotator.

To set the controller mode, while power off, press the SET EL button and keep pressed when powering on, wait until the screen goes blank and then release the button.


after setting the Controller mode, it is time to calibrate.

Since most potentiometers inside rotators are not linear, I have added a 5 point calibration, that makes it more accurate.
When pressing SET AZ button while powering on.. wait until the screen goes blank then release the button.
You will enter the first step calibrating the 0 point or the most CCW point of the Azimuth rotator..
With the CCW and CW button you can rotate.



Same screen for 90 degreescal_az_90

Same screen for 180 degreescal_az_180 Same screen for 270 degreescal_az_270Same screen for 360 degrees, most CW point


if you have selected Azimuth + Elevation control, the elevation calibration screens will appear right after calibrating Azimuth.

Same as for Azimuth, first start of with the 0 degrees calibration.cal_el_0

Final the 90 degrees screen will appear.cal_el_90

After calibrating the rotator interface, it is possible to configure where your mechanical stop is..
In some cases you want to rotate thru 360/0 degrees.. (Satellite work in some locations)

To enter this configuration screen:
When pressing SET EL button while powering on.. wait until the screen goes blank then release the button.


In this case the rotator has it rotates from -180 to + 180 degrees..

If you like to set a specific parking spot you can set it by:

When pressing the PARK button while powering on.. wait until the screen goes blank then release the button.

You will enter the parking setup.. with CCW/CW and UP/DOWN buttons you can set the directions.


Working with the Rotator interface

The rotator interface will start in Manual or Preset/Remote mode depending on the last state used.

Manual mode screen in Azimuth control


Manual mode screen in Azimuth + Elevation control


While in preset mode, use the CCW/CW and/or UP/DOWN buttons to set the desired direction/inclination then press SET AZ and/or SET EL to start rotating

Preset mode in Azimuth control


Preset mode in Azimuth + Elevation control


Preset mode in Azimuth control while rotating to the desired direction, > indicator is showing during this process

Preset mode in Azimuth + Elevation control while rotating to the desired direction, > indicator is showing during this process pre_azel_set

When the PARK button is pressed it acts the same as a normal preset, but now it will rotate or incline to the pre-configured Parking directions.

Azimuth control


Azimuth + Elevation controlpark_azel



I have created an Android App that enables you to connect to the Rotator Interface hardware via Bluetooth.
Some screenshots of RotoDroid

Manual control, when a button is keeping pressed the antenna will rotate, when releasing the button it will stop.
Fixed Preset buttons on all wind directions
Adjustable preset with sliders.
Calibration screenrotodroid_calibration

RotoDroid Software:

(Right click then Save as)
RotoDroid App: RotoDroid

Bluetooth connection

The Bluetooth modules I use are the HC-06 modules.
They are easy to configure, and have a super stable bluetooth connection.
The HC-06 modules are widely available and very cheap, you can find them on almost every chinese market, EBAY, Aliexpress, Banggood, Goodluckbuy, etc etc..
Example of a HC-06 Bluetooth module that could be found on these markets:
When using these modules you first have to configure them.
Using a USB-TTL module connected to the Bluetooth module you can open up and Terminal on the PC and send some commands to configure them:


There are only 1 configuration needed to let the HC-06 work with the Rotator interface hardware, and that is setting the correct baudrate at 9600bd
Sent: AT+BAUD4
You will receive: OK9600
After setting the baudrate, the terminal baudrate has change immediatly to the newly selected baudrate!, change the baudrate in the terminal.
Best is to cycle power of the HC-06 module for reinitializing.
If you like to change the Bluetooth discovery name, you can change the name for example:
Sent: AT+NAMERotator Interface
You will receive: OKname
When done you can connect the HC-06 module to the Rotator Interface hardware

Rotator Interface HC-06

Now connect your smartphone or tablet to the HC-06 module. the default password is 1234.
When you have succesfully paired the HC-06 module.
Open up the RotoDroid app, connect to the module.. and voila you have full controll 🙂

Indirect bluetooth connection via PC

If you dont want to use a bluetooth module directly to the rotator interface hardware, there is a really neat option for that.
First of all you need a HC-06 / USB-TTL combination..
There are ready available dongles that contain both hardware into an USB stick!
Example of such USB stick with build in HC-06 module.
How to setup everything
For example:
You want to connect your Rotator Interface to the PC via USB/Serial or Serial connection,
And you still want to connect the RotoDroid app via Bluetooth.
This is where a nice program like VSPE comes in handy!
For Example:
My Rotator interface is active on COM3
I have created a splitter with a Virtual Port on COM13
So multiple programs can connect to COM13 simultaniously, and VSPE directs all traffic from and to COM3
Now my Bluetooth/USB combination is active on COM16
In VSPE I have created a Serial Redirection
COM13 is redirected to COM16 and visa versa..
Now when my Android device is connecting the Bluetooth module, it opens up COM16, redirects it to COM13, and the splitter will connect it to COM3..

The lastest Firmware / Software

Rototator interface Firmware:
(Right click then Save as)
HEX File: Rotator Interface
AVR used: ATMEGA32 16-AU (note do not use the ATMEGA32A!! )
Fuse settings:
HIGH: 0xC1


You can also use a Bootloader, this makes writing new software to the ATMEGA32 much easier in the future..
For that you need to program a bootloader code instead of directly programming the Firmware to the uC.
The Bootloader code will always startup first while powering on the ATEMGA32 , the bootloader seeks for incoming requests from a host program called MegaLoad

This program loads the Firmware to the ATMEGA32 via RS232.

Bootloader hex file: BOOTLOADER.zipPC Software:

Also needed is to (re)program te fuses of the ATMEGA32, here we need to set the Bootloader reset fuse, and the Bootloader size in kb’s.

In our case, We need to set the Bootloader size to 512k

Fuse settings:

HIGH: 0xC4



After programming the bootloader into the AVR you are ready to program the Firmware file into the AVR with the host software Megaload.

  1. Turn off Rotator Interface
  2. Start Megaload on your PC
  3. Open the HEX file you want to load to the AVR
  4. Select the right CommPort
  5. Baudrate is 9600bps
  6. If not done yet, click “Open Port” (“Close Port” will appear)
  7. Turn on the Rotator Interface..
  8. Bootloading Process should now start (should look like the picture below)
  9. After bootloading, the Rotator Interface software should startup directly, now you can close the software.