Arduino CW keyer for a BiTx or other homebrew rig

It’s been 3 years since I got my MST400 Mk 1 40 meter SSB transceiver going and started using it for SOTA activations. For those not familiar with it, it’s like a kit version of the BiTx40 from 2013. It has a similarly spec’d monoband superhet receiver, 10MHz IF, and IRF510 5 watt power stage. The circuit on a page is here. It’s been with me for nearly all of my 65 activations (over 400 SOTA activation points) around VK3. Now, with HF propagation approaching cycle lows, it is time to do what I should have done ages ago… add CW.

What spurred me on to do this mod was all the BiTx40 activity at Bitx20 on and Many of the BiTx40 mods being discussed are directly applicable to other similar QRP rigs.  Discussion of adding CW centered on building an audio oscillator to generate a 700Hz tone, feeding this into the mic amp, optionally into the audio amp for sidetone and as the Soldersmoke boys would say, ‘Bob’s your Mother’s Brother’.

There are a few other things to think about, the main one being whether or not you want break-in.  Having built and used the Wilderness SST (a CW rig designed from the ground up) I know how good break-in can be for CW operating convenience.  To add to this, the last rig I built and used for CW, a 160m AM/CW rig with manual T/R switching, reminded me of the nagging inconveniences.  I now consider break-in and a keyer mandatory for portable operation.  In the Wilderness SST, I added K1EL’s dedicated  hardware keyer with good results.

The DDS VFO in my MST400 is a kit module with closed source, so there was no chance of adding a keyer or accessing the display for other purposes.  So I decided to add a second microcontroller (Arduino) into the MST400 box.

A keyer is not a demanding thing to ask an Arduino to do. The enabler is the tone() and delay() functions. The first puts an audio frequency square wave on one of the pins, while the latter delays the script for a number of milliSeconds. Turn the tone on, delay for 60mS, turn tone off, and you just sent a dit at 10 w.p.m.  You get the idea. The rest is just code.

Ashar Farhan VU2ESE uses Arduino tone() for sidetone in his uBitx design.  On CW transmit, the uBitx Raduino tells the si5351 to put one of its clocks on the signal frequency.  Keying is done by enabling and disabling the si5351’s clock output; at the same time Raduino generates fixed frequency audio tone which is injected into the audio chain for sidetone. A simple R-C filter reduces the sharp edges.

So one night I laid out some experimental keyer code.  It all came together easily.  The keyer code is here.  The connections are described in the  You can download and run it as is, and it will blink the on-board LED.  Or add a small speaker with 220 ohm series resistor between pin 8 and ground.  (Note that I’ve only run this on a Nano). Here’s the wiring diagram and some pics.

I bent the pins of the DIL socket at right angles and soldered them to a handmade PCB. The only other parts are the 2N7000 PTT relay driver and 3-pin regulators.  I added code to read push-buttons on digital pins to trigger hard-coded messages (like CQ and CQ SOTA). A  5k linear pot across 5 volts with the wiper connected to one of the analogue inputs acts as a speed control. The board is designed to fit over the SO239 aerial socket on the MST400’s rear panel. The toroids to the left are part of a VSWR sampling bridge; not debugged yet… more to follow on this.

I also added a CW ident which sends a callsign every 180 seconds. In the spirit of Arduino, Raduino and BiTx40, you can modify this sketch to suit your needs and likes.  Let me know if you try it, or better still, use it in a BiTx or homebrew rig.

Some other Arduino keyers I found include this well-worked one from K3NG, and  this one for an Uno.

Tagged , , , , , ,

One thought on “Arduino CW keyer for a BiTx or other homebrew rig

  1. […] ‘solder sessions’ finished all the wiring, debugging and testing required to deploy my Arduino Nano keyer and SWR/power meter, and the LED LDR AGC and S-meter modules into my homebrew 40 meter SSB rig […]


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


QRP, radio craft, homebrew, SOTA, bricolage.

Ripples in the Ether

Emanations from Amateur Radio Station NT7S


Fresh hacks every day


A fine site


Up the Hill

VK1VIC / VK2VIC Amateur Radio Blog

Summits of the Air , World Wide Flora & Fauna activations, CW (Fists #14192), (SKCC #14993)


Blog of Justin Giles-Clark VK7TW's SOTA and amateur radio adventures.


VK3CAT Radio Communications

Andrew White ZL3CC

amateur radio in Aotearoa / New Zealand

David "Mitch" Mitchell - VK3XDM Hawthorn, VK7XDM Hobart

My worpress blog site on amateur radio, skiing and all things outdoors.

Gerbrandt van Santen

cloud computing, haiku en dagelijks leven

%d bloggers like this: