Arduino:
At a recent ham radio club meeting (2016) the presenter talked about Arduino.
A week or so later Radio Shack had a sale on Arduinos and my wife
bought two, one for herself and one for me.
My first Arduino project was a Morse
code sender—or second, if the
‘Hello
world’ sketch called ‘Blink’
counts. Elsewhere
I describe the WB9YBM analog audio oscillator. The idea of the present
project was to make Arduino key the oscillator, converting source text
to Morse code. The standard Blink demo included everything needed to
work this out (how to control a digital pin and how to introduce a
delay).
Both the project sketch (program
code) and accessory hardware evolved through a couple of
iterations. First I made an on-board LED blink the
letter ‘v’.
Next, I added the rest of the alphabet and numbers, etc. and used one
of the Arduino’s
digital pins to key a relay. The Arduino output fed a TTL
buffer
that operated the small relay. Preliminary testing was done on a
breadboard,
with clip leads from the relay to a real Morse key’s
contacts.
I began to tire of listening to “The
quick brown fox jumped over the lazy dog’s
back,” but
couldn’t
figure how to load a huge volume of text, other than to insert it in
the sketch as data. So I switched instead to generating random 5-letter
groups. At this stage of development, code speed was a
constant,
and I thought of reading a speed value as binary (using multiple
Arduino input pins). In fact I coded this method of reading
speed, but before
implementing it in hardware, thought instead to use a potentiometer and
one of the analog input pins. This was much simpler. The
minimum speed was arbitrarily put at 5 words per minute. The expression
is: sndSpeed
= analogRead(a0) / 32 + minSpeed;
The final change (so far) was to replace the buffer-relay
combination with an analog switch (4016). After verifying that the
simplified circuit worked, I transferred it from the breadboard to a
PCB and neatified the hookups, for example, replacing clip leads with a
phone-plug terminated wire that plugs directly into the oscillator.
The sketch (subject to change)
is Morse.ino.txt.
The adapter circuit is simple and doesn’t
warrant a diagram.
A 100K potentiometer is wired across the 5 volt source, with the wiper
connecting to pin A0. (A 10K pot would also work.) The 4016
control pin (#13 in my implementation) is connected to digital pin 13
of the Arduino, and the corresponding pair of analog switch pins of the
4016 (#1 and #2) key the
oscillator.
Demo: Morse_code.mp4
Improvement:
At some point I realized it would have been better to use an Arduino
prototyping shield (Proto Shield) than a generic perf. board. The audio
oscillator could be constructed
on the same board and powered from the Arduino’s
supply.
All of the discrete components fit on top of the
board, but
some wires had to be routed underneath to escape uncomfortably
tight spots. The
topmost trimmer potentiometer in the photo is the speed control.
The other two belong to the oscillator. The original WB9YBM
audio oscillator included a third potentiometer for setting
the bias to a precise value in order to prevent
clipping one half of the waveform.
I substituted fixed resistors, but maybe should
have kept the trimmer. In any case, the generated signal looks and
sounds good
enough.
Demo:
hybrid-shield-demo.mp4
Project descriptions on this page are intended for entertainment only.
The author makes no claim as to the accuracy or completeness of the
information presented. In no event will the author be liable for any
damages, lost effort, inability to carry out a similar project, or to
reproduce a claimed result, or anything else relating to a decision to
use the information on this page.