Introduction: Arduino Ethernet / USB Interface for YAESU Antenna Rotator Control

About: retired military engineer currently without permanent job pursuing his hobby :-)

I decided to publish another one of my ham-shack projects. The idea is simple: control a YAESU antenna rotator from a PC using USB or Ethernet, without adding any buttons or displays.

While researching similar projects, I found that many existing solutions are either poorly documented, unnecessarily complex, or designed as full standalone controllers that completely replace the original rotator hardware. One of the most well-known examples is the K3NG rotator controller, which is extremely powerful and feature-rich, but also more complex than what I needed for this application.

The original YAESU controller is an excellent and reliable device, and my goal was not to replace it. Instead, this project extends its functionality by adding a PC interface that enables remote control of the antenna rotator including operation over a local network or the internet.

Internally, the interface is built around an Arduino UNO, chosen for its availability, simplicity, and long-term support. An optional Ethernet shield can be added for network control. To keep the system compact and reliable, I also designed a simple custom PCB specifically for this application.

The result is a clean, reliable, and easy-to-understand solution that integrates seamlessly into an existing ham-radio setup while preserving the original YAESU controller.

Supplies

Arduino UNO

Arduino Ethernet Shield(optional – required only for Ethernet control)

Custom PCB by SA7KZA attached, (rename Ard_Rot_Int_SA7KZA.sch.brd to Ard_Rot_Int_SA7KZA.sch)

2× NPN transistors (BC238, BC546or similar, almost any common small-signal NPN transistor will work)

3× Resistors – 1 kΩ (1206)

3× Capacitors – 10 nF (0805)

1× Capacitor – 1 to 10 µF (0805)(optional, not strictly required)

1× PS/2 connector (6-pin socket)

1× 6-pin male-to-male cable (Mini-DIN / PS/2 extension cable)

Step 1: How It Works


All three boards — the Arduino UNO, the Ethernet shield (if used), and the custom interface PCB — are stacked together and electrically connected. A simplified block diagram is shown in the image below.

Power supply considerations

Before starting, it is important to pay close attention to the power supply voltage.

A standalone Arduino UNO (without an Ethernet shield) can be powered directly from the typical 13.8 V ham-shack supply. However, when the Ethernet shield is installed, this is no longer safe. Due to the increased current consumption, the onboard voltage regulator of the Arduino UNO will overheat significantly and may eventually be damaged.

When using the Ethernet shield, the Arduino must be powered with 6.5 to 8 V.

This can be done either by using a suitable external power supply or by adding a small adjustable DC-DC buck converter (approximately 15 × 25 mm) mounted directly on the power cable. These modules are inexpensive and widely available, making this the simplest and most reliable solution.

Connection to the rotator

The rotator is connected to the interface board using a cable.

Two digital outputs, D6 and D7, are used to control the rotation motor.

When one of these pins is pulled to ground through a transistor (never both at the same time), the rotator starts turning in the corresponding direction.

Another signal line is used to determine the antenna azimuth. This signal comes from the rotator’s internal potentiometer, which provides a voltage of approximately 0 to 4 V, depending on the antenna position. This voltage is connected to the Arduino’s analog input A0. The Arduino continuously measures this voltage and calculates the current azimuth of the antenna.

PC control logic

The PC is connected to the Arduino either via USB or through the Ethernet shield.

A control application running on the PC (for example, PstRotatorAZ) sends commands specifying the target azimuth.

The Arduino firmware compares the target azimuth with the current antenna position and decides which output (D6 or D7) should be activated. The corresponding transistor is then switched on, causing the antenna to rotate in the required direction until the desired azimuth is reached.

Step 2: Construction and Assembly

The custom PCB is populated with the required components. The board was intentionally designed to use common, easy-to-find parts, including components often found in spare-part drawers.

I originally used older Tesla KC238 transistors. A modern equivalent is the BC238, (or BC546) but in practice almost any general-purpose low-frequency NPN transistor can be used, as long as the correct pinout is respected.

The PCB design files are provided in EAGLE format, making it easy to adapt the layout to different transistor packages or pinouts. Modifying the PCB for alternative components typically takes only a few minutes.

To connect the interface board to the Arduino UNO or the Ethernet shield, standard 2.54 mm pin headers can be used (single-row male or female headers commonly sold for Arduino projects). Short pieces of wire can also be used if preferred.

In my own build, I connected only the necessary signals:

  1. GND
  2. 5 V
  3. D6
  4. D7
  5. A0

For mechanical stability, I additionally connected the corner pins of the Arduino headers. No other connections are required.

The board is very simple and should work on the first power-up. There are no adjustments or calibrations needed.

When soldering, take care to avoid solder bridges and cold joints, as these are the only common sources of problems in this circuit.

Step 3: Software / Firmware

The complete firmware is provided as an attachment in Slovak, English, and Swedish versions.

The code was developed using the Arduino IDE and tested with PstRotatorAZ control software and a YAESU G-2800 antenna rotator.

The firmware implements the GS-232 protocol, making it compatible with most YAESU antenna rotators that support this standard.

In most cases, the system should work on the first power-up. However, some fine-tuning may be required, as each rotator and controller combination behaves slightly differently. Cable length, wire diameter, and mechanical tolerances can influence the measured values.

Configuration

All configuration parameters are located at the top of the source code, where each setting is clearly described.

USB-only operation

If you are not using Ethernet, the only required adjustment is calibration of the potentiometer end values.

These are typically around 0 V and 4 V, but the exact values depend on the individual rotator and controller.

Ethernet operation

If the Ethernet shield is used, additional network settings must be configured:

  1. Set the IP address according to your local network
  2. (default: 192.168.1.182 — choose an unused address)
  3. Typical router addresses such as 192.168.1.1 are already assumed
  4. The MAC address usually does not need to be changed unless required by your network (follow the comments in the source code if modification is needed)
  5. In the PC control software, set the TCP port to 2823

Once these parameters are set, the interface is ready for operation via USB or Ethernet.

Source Code Overview

This firmware implements a fully featured antenna rotator controller compatible with the YAESU GS-232 protocol, supporting simultaneous control via Ethernet (TCP port 2823) and USB/Serial.

The control logic is based on a robust state machine, ensuring smooth and safe rotator movement. This includes:

  1. Enforced delays when changing direction (CW ↔ CCW)
  2. Automatic selection of the shortest rotation path, including support for extended-range rotators (e.g. 450°)

The antenna position is continuously measured using an analog position sensor, filtered by averaging, and converted into precise azimuth values in degrees.

Multiple layers of safety protection are implemented, including:

  1. Motor stall detection
  2. Maximum rotation time limits
  3. Infinite rotation prevention
  4. Verification of actual mechanical movement

If repeated faults occur within a defined time window, the controller enters a hard lockout mode with extended cooldown and visual LED indication, ensuring reliable and safe long-term operation in both local and network-controlled environments.

Step 4: Enclosure

The interface is housed in a plastic enclosure that I designed specifically for this project and printed on a 3D printer.

The enclosure consists of a top and bottom part that snap together — no screws are required for assembly. This makes the enclosure easy to open if needed, while still providing a clean and solid construction.

The 3D model of the enclosure is included as an attachment, so it can be printed directly or modified to suit individual needs (different connectors, cable routing, or mounting options).

Step 5: Arduino Micro/Nano Version

If you are comfortable with fine soldering work and do not need Ethernet connectivity, you can also build a compact version based on an Arduino Micro/Nano.

This version does not require a separate PCB. The Arduino Micro is powered directly from the USB connector, and all required components are soldered directly to the board.

As shown in the attached image, the components are soldered in a free-form (“dead-bug”) style and then secured using a flexible rubber or silicone compound. Once cured, the compound keeps all components firmly in place and provides good mechanical stability.

Important note about thermal stability

Special care must be taken to ensure that the microcontroller itself is not thermally insulated. If the chip is covered too heavily, heat cannot dissipate properly, which can lead to ADC instability. In that case, the measured azimuth may drift by several degrees.

For reliable operation, make sure that the microcontroller remains sufficiently cooled, while only the surrounding components are mechanically secured.

Step 6: Notes


  1. Status LED In the current version of the firmware, an output LED is used to indicate a motor error condition. This LED is not connected on the PCB, as this function was added to the software at a later stage of development.
  2. Long-term operation and future development. This interface has been running reliably for approximately one year in my own setup. As you can see, building such a device is not particularly complicated, and the design could easily be integrated onto a single compact PCB.
  3. Creating a fully integrated version would require additional production costs. If there is interest and someone is willing to share the manufacturing costs, I am open to designing a more compact version with the same functionality — or even a new version that could also include control buttons and a display.