User Tools

Site Tools


Simple Rotator Interface V. (release 2023)

Web interface with MQTT an USB support

Quick start guide



  • Three type azimuth potentiometer
    1. three wire from 500Ω to 10kΩ resistance
    2. grounded two wire from 500Ω to 1kΩ
    3. thre wire, used one turn from multiturn (typicaly 10kΩ)
  • Two azimuth pulse (CW/CCW) inputs - NOT implemented yet
  • DC motor up to 28V/3A with smooth start/finish (PWM)
  • AC motor max 50V/8A
  • Brake max 50V/8A
  • Natively supports 3D printed rotator
  • Optional external control unit Gyrotator



  • Remote powered by POE - need 13,8V to 15V/500mA source, mounted to 35mm DIN rail
    remoteqth.com_img_wiki-simple-rot-17.jpg remoteqth.com_img_wiki-simple-rot-18.jpg
  • Switching between three and two wire azimuthpotentiometer in setup page
  • Enable preamp and shift op amp in setup page
  • Local control with CW paddle via 3,5mm stereo jack connector
  • Galvanically isolated AC or DC motor control, including DC PWM
  • Working rotator without hardware endstops - replace by two (low/high) software adjustable forbidden zones in end positions
  • MQTT for integrated to your main ecosystem, typicaly NodeRed
  • MQTT Wall - web clent shown all topics included
  • Overlap support, for example 405° range, with rotate to short direction
  • Usable nearest to rotator, directly on tower, or in hamshack
  • Status LED while using front panel preset knob (indoor desktop use only)
  • LED showing fuse failure on main board or POE interface
  • Three safe stop watchdog - 60 sec after firmware without answer, max 90 sec rotate, max 10 sec without 10 grad azimut change during rotate
  • Under 11V voltage POE power watchdog
  • Warm up timer for stable value during setup
  • Firmware detects the hardware version and displays it in the web interface
  • Optionaly controled (via MQTT) by Gyrotator independent hardware based on M5Stack fire

Four mounting methods

Outdoor on tower
Outdoor, part of the 3D printed rotator (optional)
Indoor on 35mm DIN rail
Indoor to your desktop (optional)

Six control source at the same time

Web interface
with azimutal world map,
containing the current grayline
Optional controller on external hardware 5Stack FIRE
YouTube video
(mqtt-wall include)
USB GS-232 protocol
(commands: R L A S C Mxxx O F)
CW paddle
- indoor desktop use
- or for manipulate with rotator on DIN rail, or on mount on tower
Optional front panel preset knob
works independently without a GUI, together with the status LED (indoor desktop use only)

WiFi e-ink display

  • GitHub page of the project
  • The last azimuth remains on the display even after turning off the rotator.
  • Optional display on external hardware from LaskaKit - ESPink-42 ESP32 e-Paper
  • It is not used to control the rotator, only to display its rotated state.

Web interface

  1. Simply setup page and calibrate in three steps
  2. Adjustable width of the antenna radiation angle
  3. Rotate with one click to map
  4. If click during run, stopped rotation
  5. Smaller range than 360° shows end limits
  6. Show connected status between web page and rotator

How to assembly

Need for assembly and run

  1. Solder station
  2. Two Allen key 2 and 2.5 mm
  3. Flat screwdriver, 2.5 mm wide
  4. Ohmeter (for ten turn azimuth potentiometer only)
  5. Drill with a diameter of 6 mm (optional for front panel)
  6. Two RJ45 ethernet cable for connecting to local network with your prefered length.
  7. Local ethernet network with running DHCP server.
  8. 13.8V/0,5A power supply for POE injector
  9. Power suply for motor yours rotator. AC or DC and voltage according to type.

Assembly steps

  1. Check that all components are complete
  2. 3D printed components + two M3 x 10mm screws
  3. PCB with SMT components
    1. If the PCB is delivered in a 3D printed box, you can remove it by lifting the PCB at the place where the plastic stop is and pulling it towards you - see picture
  4. Solder the DC jack first
  5. For better mounting, fit the fuse terminals with fuses
  6. Solder the 3A version between the input connectors
  7. Solder the 0.5A version to the POE module
  8. Check the fuse values carefully. The opposite assignment will cause a failure
    1. 0.5A in the POE module
    2. 3A between input connectors
  9. In the next step, solder two RJ45 connectors to the POE module
  10. Solder the diode D24 - attention to the polarity, the white strip is on the side marked K
  11. Use a screwdriver to unlock the metal casing of the RJ45 connector
  12. Remove the metal cover and discard it
  13. Solder the connector to the board
  14. The PCB board currently looks like this
  15. Solder the two (blue) potentiometers so that the control screws are facing outwards from the board
  16. Now solder the three relays
    remoteqth.com_img_wiki-simple-rot-35.jpg remoteqth.com_img_wiki-simple-rot-34.jpg
  17. Carefully break off the POE module
  18. Use pliers to break off the remaining bridges
  19. If you don't install optional front panel solder the SMT jumper J19
  20. Now you can slide the board into the slots in the 3d printed box so
  21. that the center latch engages when fully inserted
  22. The back cover is held with its two latches
  23. We insert the POE module into the 3D printed box
  24. And screw the lid on with two screws. Attention, we tighten lightly, the screws are screwed directly into the plastic
    1. The side to which the power supply DC jack is connected is intended for connecting electronics
    2. The supply voltage is 13.8-15V DC (500mA) with any polarity
    3. Breakage of the fuse in the POE module is signaled by the LED below the fuse

Assembly optional front panel

Front panel and potentiometer control is an optional extension. All other control options, including the web interface, remain and work in parallel. Only the other options will not turn the front panel potentiometer, so if used, the front panel potentiometer setting will not match.

  1. Check the presence of all necessary components
  2. Solder the connection cable to the potentiometer. Attention, it is necessary to observe the positions of the colors of the wires
  3. Glue the four rubber feet to the underside of the 3D printed model as shown
  4. Force push/punch the plug in the center of the front of the 3D printed box
  5. Drill the indicated hole in the front part of the box, intended for the LED, with a 6mm drill bit
  6. Insert the potentiometer with the soldered jumper from the inside into the prepared hole and tighten the nut slightly
  7. Place the front panel and screw in two M3 x 10mm screws - tighten the last threads carefully, the screw is screwed directly into the plastic
  8. When using the potentiometer on the front panel, jumper J19 must be open. If it is shorted, remove the tin connector by suction with a wire puller
  9. Put the knob on and gently tighten with a flat screwdriver - calibration of the exact setting is done later from the web interface, setup page. More in the Setup and calibrate section
  10. Solder LED diode wit orientation beveled side into the slot marked R
  11. Overhang of the diode over the edge of the PCB at least 12.5 mm
  12. The distance above the PCB should be 4.0 mm
  13. Insert the PCB into the guide grooves of the box about halfway and plug in the potentiometer connector. Pay attention to the polarity, the connector can only be inserted in one position.
  14. Insert the whole PCB into the box until the locking tooth in the middle engages.
  15. After installing the back cover, the upgrade to the front panel is complete.
  16. You can continue by connecting the rotator.

Upload firmware


  1. Install Arduino IDE rev 1.8.19
  2. Install support for ESP32
  3. Install these libraries in the versions listed
    • WiFi rev 2.0.0
    • EEPROM rev 2.0.0
    • WebServer rev 2.0.0
    • Ethernet rev 2.0.0
    • ESPmDNS rev 2.0.0
    • ArduinoOTA rev 2.0.0
    • Update rev 2.0.0
    • AsyncTCP rev 1.1.1
    • ESPAsyncWebServer rev 1.2.3
    • FS rev 2.0.0
    • AsyncElegantOTA rev 2.2.7
    • PubSubClient rev 2.8
    • Wire rev 2.0.0
  4. Select board 'OLIMEX ESP32-PoE'
  5. Connect the rotator with a USB-C cable and select the corresponding port in the arduino IDE
  6. Now you can compile and upload code using USB

Compile + OTA update

The firmware can be uploaded via Ethernet under the following conditions

  1. The Simple rotator board already contains firmware
  2. The Simple rotator board is connected to the Ethernet with a DHCP server
  3. The Simple rotator board is powered by a POE module

Now in the Arduino IDE you can select the /Tools/Port/Network port in the menu, the item starting with ROT with the IP address corresponding to your rotator.
At this point it is possible to compile and upload the firmware using the Arduino IDE.
The Arduino IDE will ask for a password during the upload, which is 'remoteqth'.

Upload binary via web interface

If the previous three conditions are met, you can upload the firmware binary using the web interface.

  1. Open url http://[YOUR IP]:82/update
    • Also available from the header of the first page as a link | Upload FW |
  2. Download last release .bin file from GitHub
  3. Upload .bin file via web form, with the Firmware option selected
  4. ATTENTION, after uploading, it is necessary to restart the rotator by disconnecting and reconnecting the power supply.


General description of connectors, individual variants detailed below

POE power module

LED showing if fuse failure on main board or POE interface

Azimuth potentiometer

Note the connection polarity for systems that share a GND potential

  1. The type potentiometer used must also be set in the web interface, Setup page. Option “Azimuth potentiometer” 2wire/3-wire
  2. When using one turn of a ten-turn potentiometer, also activate the “Azimuth gain/shift op-amp” option to ON. About calibrate more in Calibrate section.
  3. If you are using a two-wire 500Ω potentiometer, short-circuit jumper J16 on the bottom side of the PCB. Do not use this jumper in other cases.

AC motor

DC motor with PWM

  • Activate the PWM functionality on the Setup web page
    • Observe the polarity of the power supply, otherwise the power mosfet may be destroyed.
    • Observe the maximum prescribed loading.
    • We recommend using the following safe option with software endstops.

DC motor with PWM, without hardware endstop (safe mode)

  1. If you use a rotator without hardware endstops, the destruction of one component (power mosfet) can cause the rotator to crash. Therefore, it is safe to connect one more active element in series (relay intended for the brake).
  2. Activate the PWM functionality on the Setup web page
    • observe the polarity of the power supply, otherwise the power mosfet may be destroyed.
    • observe the maximum prescribed loading.

DC motor without PWM

  1. PWM can be replaced with an external brake relay
  2. Deactivate the PWM functionality on the Setup web page
    1. Don't forget to bridge or replace the diode D24 with a jumper.
    2. Make the jumper with a copper wire with a cross-section of 1.5 mm2

Control, setup and calibrate

LED status

LEDs signal static (PWR) or dynamic (PWM) states during rotator operation

Connect and tune

  1. The fuse for the motor should be optimally 5A
  2. Two blue, multi-turn potentiometers are used to set the Shift and Gain of the preamplifier in the azimuth measurement mode with the use of one turn from the ten-turn potentiometer.
  3. The USB-c connector is used for uploading firmware or connecting a serial console. DO NOT use USB-C to power electronics.
  4. Internal three-pin connector (balls), serves for connecting an optional front panel potentiometer.
  5. The 3.5mm stereo jack serves for connecting a manual control of the rotator, typically a CW bug.


How to find the IP address of the device

    1. connect POE power supply
    2. ethernet to a site with an active DHCP server
  1. Variant via USB terminal
    1. connect USB-C between rotator and PC
    2. open Arduino terminal with 115200 baud speed
    3. press ? and enter
    4. terminal show your IP address
  2. The variant can be found using the arduino IDE
    1. Open Arduino IDE menu Tools/Port/Network port
    2. The menu will display network devices that contain OTA firmware - the IP address is at the end of the line starting with ROT-
  3. With the help of the Fing android application
    1. Install Fing
    2. Scan local network
    3. Find device with brand name Espresiff and begin MAC start 08:B6:1F

Settings using the web interface

Main web page

Open the IP address found using the previous instruction in a web browser http://[YOUR-IP]

How to works

  1. The first page contains an information header, including a link to the Firmware Upload page and the Release page on GitHub. Give green the button of the link to the control page of the rotator. Below it is the web MQTT client (credit MQTT wall) displaying the data sent or received by the rotator from the MQTT broker - data used to control or debug the rotator.

Control web page

How to works

  1. The basis for the display is an azimuthal map, centered in your QTH. The map shows the current grayline. Map settings are made in the Setup page, item Background azimuth map URL.
  2. The direction of rotation indicator is a transparent triangle whose angle corresponds to the width of the antenna's radiation pattern. The center is marked with a green pointer on the scale. The width of the radiation diagram is set in the Setup page, item Antenna radiation angle in degrees.
  3. COLORS - If the direction is in the free range, the indicator color is green. If the pointer reaches the overlap zone, the color is yellow. If the rotator is in rotated mode, the indicator color is red. If the rotator reaches the endpoints, the color is gray.
  4. The yellow line on the edge shows the Overlap zone. It is the angle by which one 360-degree revolution is extended.
  5. Gray bar on the bottom shows. | Antenna name - set in the Setup page, Rotator name item. | The power supply voltage controls the electronics from the POE injector - if it drops below 11V, the watchdog stops the rotator. | Raw angle rotated - angle without displacement, as if it were zero degrees north. | Link to the Setup page.
  6. Below the gray bar is shown, MAC address of the Ethernet interface and website connection status with engine electronics. If it is not connected, the data on the website is not up to date and the rotator cannot be controlled.
  7. CONTROL - by tapping on the map, the azimuth is calculated and the rotation starts. Emergency stop is performed by clicking anywhere on the azimuthal map again.
    1. Tip: for a short movement of the rotator, you can click on the map twice in close succession. The motor will only turn on for this time, including the PWM start/stop sequence.

Setup web page

How to works

  1. The Setup page is used to set the basic properties of the rotator.
  2. You will notice that the hints for individual items are hidden under the question mark at the end of the line.
  3. Your callsign and Rotator ID are unique identifiers used to generate an MQTT topic in the form [callsign]/[ID]/ROT/[variable]. Changing these values requires a reload of the first page with the web MQTT client. After the first power-on, for the Callsign firmware uses the last five characters from the MAC address until a new setting is made.
  4. Rotator name is used to identify the rotator on the web control page.
  5. Start CCW azimuth is the end value of the start of rotation in the counter clockwise direction. This is the azimuth that the rotator is rotated in real conditions, if it is in this end position.
  6. Rotation range in degrees is the rotation range of the rotator between two (CCW and CW) endpoints in degrees.
  7. Background azimuth map URL is a link to a web file with a bitmap azimuth map. Generation of own map is described in chapter Run own services
  8. Antenna radiation angle in degrees, is the value of the width of the radiation angle of your antenna, which will be applied in the display of the control page.
  9. Azimuth source is a choice between a signal source for azimuth determination. The potentiometer is the default value. The CW/CCW pulse function is then not implemented now.
  10. The azimuth potentiometer is a choice between two and three-wire variants. The two-wire variant uses a constant current source of 9mA and enables the connection of a potentiometer smaller than 1kΩ. The three-wire variant uses a constant voltage source of 9V and enables the connection of a potentiometer of 500Ω or more. You can find the connection in the Azimuth potentiometer section.
  11. Azimuth gain/shift op-amp, is turned ON, ONLY when using a multi-turn three-wire potentiometer, of which only one turn is used. Because one turn generates a small change at the input of the AD converter, it is possible to help amplify the preamplifier. How to do it:
    1. The first step is to set the trimmers R80 and R81 to the default position. Connect the ohmmeter to the measuring point S (J1, J12) and turn the trimmer R81 counterclockwise until the ohmmeter shows a value close to 0Ω. We repeat the same thing with trimmer R80 and measuring points and G (J13, J14).
      remoteqth.com_img_wiki-simple-rot-65.jpg remoteqth.com_img_wiki-simple-rot-66.jpg
    2. This setting assumes that REVERSE-CONTROL and REVERSE-AZIMUTH are correctly set in the Calibration page.
    3. The second step is to physically turn the rotator up to the CCW endstop, which will not cause the AD converter input to shift to the left edge of the scale on the Calibration page. Therefore, we start moving the value towards the left endstop on the scale by turning the potentiometer S (R81) clockwise until we reach the left endstop on the scale, ATTENTION, after reaching the edge of the scale, do not continue turning the potentiometer, the input value of the AD converter must still move within the range scale.
    4. The third step is to physically turn the rotator up to the CW endstop, which will not cause the AD converter input to shift to the right edge of the scale on the Calibration page. Therefore, we increase the gain of the preamplifier by turning the potentiometer G (R80) clockwise until we reach the right endstop on the scale. ATTENTION, after reaching the edge of the scale, do not continue turning the potentiometer, the input value of the AD converter must still move within the range of the scale.
    5. We repeat the previous two steps until we achieve the desired result.
    6. Then calibrate the SAVE-CCW and SAVE-CW endpoints on the Calibration Page.
  12. Endstops INSTALLED, turning off this item activates software endstops, which are prohibited zones on the edges. The size of these zones is set in the following two items. If this item is enabled, the firmware relies on the hardware endstops in the rotator, including that they are not beyond the range of the measure potentiometer.
  13. CW/CCW forbidden zone (software endstops), are values of the range of forbidden zones in millivolts. the entire range of the rotator represents a voltage of 0 to 3.3V. The setting value will appear in the Calibration page as a yellow area at the edges of the range. If the rotator is set correctly, it only allows movement in the direction from the edge to the center. Keep the protection zone large enough to prevent damage to the rotator.
  14. Watchdog speed is the minimum rotation speed in seconds per one turn, which if the rotator does not reach, it will be stopped by the watchdog. Use a value at least 50% higher than the real speed to avoid false stops.
  15. Motor supply, is a choice between AC and DC rotator type. The DC type enables the activation of the PWM start-up and run-down ramps.
  16. DC PWM control activates the PWM ramp-up and ramp-down when using the DC rotator. If you use a rotator without hardware endstops, the destruction of one component (power mosfet) can cause the rotator to crash. Therefore, it is safe to connect one more active element in series (relay intended for the brake). This setup is highly recomended, see Connection section.
  17. USB serial BAUDRATE, is the setting of the communication speed of the serial console on the USB-C connector using the GS-232 protocol. Enabled commands
    • ? display the IP address of the rotator
    • R clockwise rotation
    • L counter clockwise rotation
    • A or S CW/CCW rotation Stop
    • C show antenna direction value
    • Mxxx rotate to azimuth, degree represent with three number
    • O CCW calibration
    • F CW calibration
  18. MQTT broker IP, IPV4 address of the MQTT broker server
    1. If the first digit is zero, MQTT is disabled
  19. MQTT broker PORT, number of the IP port on which the MQTT broker runs.
  20. Change button, save actual value.
  21. Calibrate button open Calibration web page.

Calibrate web page

Calibration is divided into three steps

  1. Rotate direction calibrate
    So that it is not necessary to observe the polarity of the rotator motor connection, you can use the CCW, CW and STOP buttons to test the direction of rotation. If the rotator rotates in a different direction than the control button, you can reverse the direction using the REVERSE-CONTROL button.
  2. Azimuth calibrate
    The scale shows the status of the input AD converter in the range of 0 to 3.3V. Due to activated software linearization, regions in the range of tens of mV are not available. If software endstops are activated in the Setup web page, the prohibited zones at the edges of the range will be displayed in yellow. In the lower part there is an arrow showing the current read value of the AD converter. There are gray arrows on the edges, showing the calibration values of CCW and CW stops. How to calibrate:
    1. Turn the rotator briefly using the CW, CCW and STOP buttons in the previous section and watch the movement of the current value of the AD converter. The correct direction is left for CCW and right for CW. If the arrow moves in reverse, invert it using the REVERSE-AZIMUTH button
    2. Then rotate the rotator counterclockwise until it is stopped by a software or hardware endstop. After stopping, save the value with the help of the SAVE CCW button.
    3. Continue rotating the rotator clockwise until it is stopped by a software or hardware endstop. After stopping, save the value with the help of the SAVE CW button.
    4. The RESET CW/CCW SAVE button is used to set the default values if the setting needs to be repeated.
    5. After calibrate, rotate to full CCW limits, measure real azimuth, and put this value to “Start CCW azimuth:” field in Setup page.
    6. Changes to settings in the map control page will be reflected after the page is reloaded.
  3. Front panel calibrate (optional) if install Optional front panel you can calibrate knob
    1. Rotate front panel potentiometer axis without knob to value 0°
    2. Put knob with orientation to north on axis
    3. Fixate knob to axis on position north

Control via optional front panel

The front panel contains only two active elements:

  1. Button for setting the required azimuth - if the front panel is installed, turning the knob will make a quick change of the target azimuth, but it is not very accurate. The rotation of the rotator can be monitored on the control page of the web interface, or via MQTT, optionally also on the Gyrotator unit. Attention, the direction of the control knob on the front panel will no longer correspond to the real rotation of the rotator, if you change its azimuth from another source, for example from a web browser.
  2. The status LED has three states
    1. RED lights up during rotating.
    2. GREEN lights up if the rotator has reached the set azimuth and stopped.
    3. FLASHES GREEN if the rotator has stopped and has not reached the target azimuth.

Manually controll

Manual control is available via the 3.5mm stereo jack connector on the back of the electronics. By switching the left or right channel, it is possible to control clockwise or counterclockwise rotation. Connection is here.
Your CW key can easily be used as a switch control.
This control is suitable for service movements or if you operate the Interface on your desk.

Running own services

MQTT broker

MQTT is a universal protocol that is used to communicate the rotator with other devices. The control node transmitting this information is the MQTT broker. The default settings of the rotor use the public MQTT broker of the Internet at the address In order to avoid dependence on an Internet connection or the availability of a public MQTT broker, we recommend that you install your own MQTT broker on a Raspberry PI or other device in the local network. For this you can use some of the public instructions like this one (without installing NodeRed).
After installation, change the settings of two items (MQTT broker IP and MQTT broker port) in the Setup section, according to the IP address of your local MQTT broker.

Background azimuth Map generator with grayline

The RemoteQTH server provides a live grayline world map generation for selected DXCC countries at address (adding others upon request from OK1HRA). The entire path to the map is entered in the Setup page in the item Background azimuth map URL.
If you don't want to depend on the internet connection or server functionality, you can run the real generator on any Linux machine, for example Raspberry PI. You need two functions for this:

  1. http server, example here
  2. Script generating bitmap
    1. Install xplanet with code
      sudo apt install xplanet xplanet-images
    2. Create line in /etc/crontab
      */15 *  * * *   web     /usr/bin/xplanet -window -longitude 13.8 -latitude 50.0 -geometry 600x600 -projection azimuthal -num_times 1 -output /var/www/remoteqth/xplanet/OK.png

      Where to replace | web user a valid user of your system | numerical coordinates of longitude and latitude with your requested coordinates | path /var/www/remoteqth/xplanet/ for the path published by your web server | file name OK.png for your desired file name

    3. Enter the resulting path to the generated bitmap in the Background azimuth map URL item on the Setup page.

Known bugs

  • If the continuous draw of your motor does not exceed the allowed limit, but the fuse still blows, the problem may be in the starting current. This current is naturally limited by the length of the power cable. If the problem persists even with the rotator on the mast, supplement the connection with a starting resistor (B57237S0109M) in series with the rotator motor.
simple_rotator_interface_v.txt · Last modified: 2023/08/21 21:21 by ok1hra