# Bluepill Copies Code So You Don’t Have To

You really should learn to read Morse code. But if you can’t — or even if you can, and just want a break — you can always get a computer to do it. For example, [jmharvey1] has a decoder that runs on a cheap Bluepill dev board.

The device uses a touchscreen and a few common components. The whole thing cost about \$16. You can see it at work along with a description of the project in the video below.

The code uses the Arduino-style setup for the Blue pill — something we’ve talked about before. As for the decoding method, the software employs the Goertzel algorithm which is akin to a single frequency Fourier transform. That is, while a full transform gives you information about the frequency component of a signal across a wide range, the Goertzel algorithm probes the signal for one or a small number of distinct frequencies.

The decoder table looks confusing at first until you realize that each “decode” value consists of a 1 as a start bit followed by a 1 for a dash and a zero for a dot. All bits to the left of the start bit don’t count. So an “E” codes as 02 hex — a start bit followed by a single zero or dot. A “C” is 1A hex (1 + -.-.). Once you find the matching code, you apply the same index to another table to look up the actual letter or string of letters.

If you buy a Bluepill to make one of these, you might as well get two and build something to send code, too.

## 5 thoughts on “Bluepill Copies Code So You Don’t Have To”

1. Who’s going to be the first to implement a TCP/IP stack for morse code?

1. Marcus says:

Nobody, really. Morse is one specific alphabet of symbols (that map to latin letters, and a little bit of punctuation). You can’t transmit binary with itself (if you find a mapping of binary to letters: you don’t get Morse. You get something that uses the same alphabet. However, the trick of Morse is that common symbols (letters) are short. When encoding binary, you lose that – and just get some kind of “long/short” encoding; a non-comma-free pulse-width modulation.

Also, why would anyone do that? Plenty of well-designed digital modulation formats that deliver packetized data if you want that. And in addition to the well-designed ones, there’s also the packet formats in use by amateur radio people for the last four decades. (yes, it’s that bitter: HDLC/x25 is an abomination, and should have never been applied to wireless comms, since it’s broken by design, but let’s not drift away here)

1. Steven Clark says:

You could hex encode so that the extremely nerdy could hand process. I would ditch the TCP layer though.

2. RW ver 0.0.1 says:

I believe it’s possible with a utility that allows TCP/IP socket from a terminal session (scrapes the terminal) and a utility that converts mime/uuencoded data to arbitrarily restricted versions of ASCII like 5 bit. So outgoing packets get dumbed down to 5 bit ASCII turned into 80 character strings to represent a line of terminal, then transmitted as morse.

But, we all know IPoAC has much superior bandwidth these days.

2. Huh. Might be useful when you’re stuck in prison and the only way to communicate with anyone else is through Morse code by tapping on the walls. Convince the guards that this thing is an “external pacemaker” or some other necessity.

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.