Sunday, 29 June 2025

Making a Morse Code transmitter and app

Recently, for no particular reason whatsover, I decided to learn Morse Code. Within a couple weeks, I could type at a decent speed, but i never liked the virtual feeling of clicking a mouse or tapping a screen, because of the lack of force feedback. I started watching videos of people using real transmitters used on ships during the age of morse code, and was transfixed. 

Morse code is simply a series of short beeps and long beeps, and the transmitter is a paddle that the operator presses down to complete a circuit.

 

 Diagram credit to viyath.com

I wanted to focus on this first rather than the app; getting the hardware configured to my liking was crucial to me, as if I didn't care about the feel of the hardware, I might as well have used a mobile app or website to simulate Morse code.

To emulate the vintage feel of the transmitters I was going for, I used this diagram as a baseline:


 It is difficult to 3d model without an orthographic side profile, so I used DeepAI to regenerate the image from the side, with a non-perspective view:

I used the Bezier and spline tools to trace the rocker arm out in CAD, so that it could be extruded:


 


Then, I used the extrude tool to cut away holes that would be necessary to make this operable, such as a pivot point for the arm. I could have drilled these away, but 3d printing holes and connectors in the design leads to good habits for tougher materials down the line, like CNC machining.

I used a spline tool for the gentle curves of the rocker arm, then cut out circles using the extrude tool for the connecting pins and pivots, then inscribed VIYATH.COM and cut out a 1mm groove in its shape to add a bit more character. 

 


The hole that appears is designed this way to allow the arm to tilt, as a bolt will be threaded through its entirety to hold a spring in place. If this cutout were a perfect circle, the rocker arm would be 'locked' in one position.

These blocks hold the rocker arm up. They are positioned 2mm further away from each other than the arm itself to allow washers to slide in between the rocker arm and the pivots, so that there is no side-to-side play. The holes are 6mm wide to fit a 6mm bolt as the axle. 

Terminal blocks are required to, of course, hold the terminal, but also to provide the 'stop' that limits the range of motion of the paddle to only a few degrees, preventing the spring from making the rocker arm shoot off every time you let go of it. 
 
In all, the 3d printed parts looked like this, when placed in roughly the areas they will be in when fully assembled.
 

 

The plan was to insert an M5 bolt through the rocker arm's pivot hole and the holding blocks. Three holding blocks would be placed in a configuration where each one has a bolt protruding from its middle. When pressed, the bolt from the rocker arm would contact one of the bolts from the holding blocks, completing a circuit and sending a signal. 


 

The other holding block would also have a bolt, but this time its purpose would be to constrain a spring that would constantly push the rocker arm up. Yet another bolt would be on the final holding block, with a nut that would control the distance the rocker arm would have to travel before hitting the contact.

 For the device that would convert the short circuit to a readable signal for a computer, I settled on using an Arduino Nano from Aliexpress, which only costs 74p. 

After 3d printing, attaching the spring, and screwing in the required bolts and washers:



 

 


At this point, I realised it was pretty much impossible to use this on a smooth table, since the smooth wood would just slide away every time you tried to click it. To fix this, I cut out pieces of rubber from an old table tennis paddle, and superglued it to the bottom of the transmitter for grip. 


We had a working, clickable morse code transmitter, with every function adjustable, including button pressure, range of motion and the contact point. and I still hadn't emulated the knob of old transmitters from WW1. For the knob, I found a small knob from an old chest of drawers, and unscrewed it, then drilled a hole in the rocker arm to attach it. Finally, to make everything look more professional, I spray-painted the wood black: