RS232 Morse keyer

This article describes a Morse keyer module that emulates a WInkeyer RS232 interface keyer with special emphasis on remote operation.

The system design is for a client such as HRD's DM780 driving the keyer over RS232 extended over Ethernet using a four port Ethernet/RS232 Portserver. Another port will be used for HRD control of the TS2000 transceiver, and a VOIP box used for full duplex voice path. The intention is a remote design that does not require a PC at the remote site.

This project is an implementation of K3NG's Arduino based Morse keyer on an inexpensive Arduino compatible project board to provide a flexible and robust functional replacement.

Key elements of the project are:

This is a work in progress, documentation of a current project that will change, a 'living' document.


The best quality RS232-TTL interface is available with a MAX232 chip. It requires a few more parts than some of the common half baked level converters, and it is bullet proof.


K3NG's code is an Arduino project and requires a compatible AVR 8bit microcontroller with 32kB of flash memory. The ATMega328P is an inexpensive chip that is supported by the development platform (it is the chip on a Arduino Pro module). The chip will be run from 5V, and clocked at 16MHz.

Output switching

Level conversion from the microcontroller pins to operate transceiver PTT and KEY lines will be done with 2N7000 HEXFETs.

Power supply

The module will run from a nominal 12V power supply and use an on-board regulator to supply 5V to the logic circuits. Polarity protection is desirable.

Project board / housing

The Metaboard project board can accommodate the microcontroller in 28 pin DIP, has a power supply section, and a small prototype area that can accommodate the MAX232 circuitry and output switches. The Metaboard is about 70mm x 55mm. These boards are inexpensive, selling on eBay for a couple of dollars.

Fig 1:

Fig 1 shows the schematic for Metaboard project board, though for this project the USB interface will not be populated, and a different crystal used. Click on the pic for a larger sized image.

The project can be housed in an inexpensive plastic case or small aluminium case. A conductive case is better for EMC reasons.


Fig 2:

Fig 2 shows the assembled board as tested.

The prototype area provides room for an ISCP header, MAX232 RS232/TTL converter, and a pair of 2N7000 FET drivers for KEY and PTT. The board includes the Arduino ASR facility, and includes a link for disabling it post development. Header pins are provided for RS232 (cabled in the pic), PTT+KEY (top right), and LED connections (mid top) to the board. (The ICSP connector is a development convenience, if a chip with bootloader is fitted the firmware can be loaded over the RS232 port.) A hole drilled in the underside of the case provides access to the reset switch to facilitate firmware update without removing the cover.

The Opti bootloader will set fuses for BOD at 2.7V. It is advisable to run BOD at 4.7V to ensure that the device will stop at voltages that are insufficient to saturate the output FETs. The relevant fuse settings are Low: 0xff High: 0xde: Extended: 0xfc (Avrdude: -U lfuse:w:0xff:m -U hfuse:w:0xde:m -U efuse:w:0xfc:m). Note that these fuse settings are not suited to a larger bootloader such as the standard bootloader.

Fig 3:

Fig 3 shows the completed keyer housed in a diecast box. Power is supplied through a 2.1mm DC jack, PTT and KEY are on T and R of a 3.5mm TRS jack, and the RS232 is connected on a DE9.

Firmware load / upgrade

The project uses the Optiboot boot loader to allow firmware upgrade over the RS232 interface. Optiboot provides a STK500 interface which is supported by the Arduino IDE and of course, AVRDUDE.

Optiboot seems to work well.

Things that go wrong

DM780 drives the keyer with no known problems on local ports, a real COM port, and on a USB/RS232 FTDI based port, but it will not initialise over a remote Portserver port.

Testing so far suggests that when DM780 initialises the Winkeyer port, it sends a series of commands to the keyer soliciting an echo, and whilst it appears that the keyer is responding each and every time, DM780 reports "nothing received", presumably waiting only a very short time for a response but it could be some other problem that causes it to report nothing received.

Some things work fine:

So, good as DM780 might be in a lot of respects, it seems incompatible with Portserver connection in emulation mode.

An alternative host program for the keyer

So, the project founders for want of a good host program for the keyer. HRD/DM780 may not be made compatible in the short term, or at all.

N1MM logger was tested and dismissed as an amateurish program that can access only a limited range of COM ports.



Version Date Description
1.01 17/10/2012 Initial.


© Copyright: Owen Duffy 1995, 2021. All rights reserved. Disclaimer.