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 Blinkcounts. 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 dogs 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.

Oscillator and keyer components on prototype shield
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

Projects Home

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.