Authors:
David Freese, W1HKJ
Ervin Hegedüs, HA2OS
An FSK / CW interface based on the Arduino nano. Sketch includes an FSK modulator, a CW computer interface, and a CW iambic-A/B keyer.
PTT signal generated by Arduino
Default pin assignments defined in Arduino Sketch for the above circuit.
USB serial command strings all begin with the tilde, ~,
character
Cmd ~...
Both:
CW:
* - the ^| wpm modifiers do not effect the paddle CW, just the
computer CW.
for example, a CW string might contain:
PTT will enable before starting the CW transmission. PTT will disable after the last CW character (k) is completed.
nanoIO is a merger of code written by W1HKJ and:
tinyFSK, by Andrew T. Flowers K0SM
Iambic Keyer, by Steven T. Elliott
It expands the tinyFSK to include 100 WPM Baudot TTY. It shares
a common set of control strings. The default wake up mode is
FSK.
The keyer implementation is less robust than Steven's Iambic
Keyer. It only provides Straight key, Iambic-A, and Iambic-B
modes. It does add weighting to the key output. The key
weighting and the computer CW weighting are the same. The
current implementation does not have a tone output.
CW is generated from USB serial input strings and/or the paddle
inputs. Paddle input overrides the serial string, but does not
currently clear the string buffer. That could be changed, but
the USB serial interface provides a very easy escape character
to do just that.
The nanoIO sketch can be used with one of four hardware designs
MORTTY Version 2 shares a common output pin for both CW and FSK
keyline. The user will have to swap FSK / CW line connectors
when changing mode.
MORTTY Version 3 has separate output pins for CW, FSK and PTT
keylines.
The W1HKJ and HA2OS designs also have separate CW, FSK and PTT
keylines.
To select the h/w configuration when building the nanoIO sketch. Open the file config.h and uncomment the desired h/w design. The default is for MORTTY Version 3. A line is a comment if it begins with ‘//’.
//#define MORTTY-V2 #define MORTTY-V3 //#define HA2OS //#define W1HKJ #ifdef MORTTY-V2 // Configuration for MORTTY Version 2 circuit board0 # define FSK_PIN 11 # define CW_PIN 11 # define PTT_PIN 13 # define ST_Pin 4 // Sidetone Output Pin on Pin 4 // paddle input pins compatible with MORTTY board # define LP_in 2 // Left Paddle Input on Pin 2 # define RP_in 5 // Right Paddle Input on Pin 5 # define DEFAULT_MODE CW_MODE #endif #ifdef MORTTY-V3 // Configuration for MORTTY Version 3 circuit board # define FSK_PIN 11 # define CW_PIN 12 # define PTT_PIN 13 # define ST_Pin 4 // Sidetone Output Pin on Pin 4 // paddle input pins compatible with MORTTY board # define LP_in 2 // Left Paddle Input on Pin 2 # define RP_in 5 // Right Paddle Input on Pin 5 # define DEFAULT_MODE CW_MODE #endif #ifdef HA2OS // Configuration for HA2OS quad opto-isolator circuit board design # define FSK_PIN 12 # define CW_PIN 10 # define PTT_PIN 11 # define ST_Pin 4 // Sidetone Output Pin on Pin 4 // paddle input pins # define LP_in 5 // Left Paddle Input on Pin 2 # define RP_in 2 // Right Paddle Input on Pin 5 # define DEFAULT_MODE CW_MODE #endif #ifdef W1HKJ // Configuration for W1HKJ quad opto-isolator circuit board design # define FSK_PIN 12 # define CW_PIN 11 # define PTT_PIN 10 # define ST_Pin 4 // Sidetone Output Pin on Pin 4 // paddle input pins # define LP_in 2 // Left Paddle Input on Pin 2 # define RP_in 5 // Right Paddle Input on Pin 5 # define DEFAULT_MODE FSK_MODE #endif
Install a 10K potentiometer with ends connected to +5 and ground; wiper to analog input pin A0.
Configure the sketch to support the speed pot:
// Configure for target h/w by removing the comment if your
Morrty has a
// speed pot:
#define WITH_SPEED_POT