Morse Code interpreter

[Sulaiman Habsi] and two classmates put together a Morse Code interpreter as a class project at Sultan Qaboos University. The system listens to a morse code signal using a microphone, then translates that input to text which is displayed on this character LCD.

The breadboarded circuit feeds an audio signal from the microphone, through an OpAmp, to the ADC of an ATmega8 microcontroller. The captured signal is stored as a byte in a special way. The three least-significant bits signify how many total dots or dashes are contained in the character, the remaining bits represent those dots and dashes with zeros and ones. A full description of this process is included in a PDF linked in the article above. As you can see in the video after the break, the hardware waits to process all of the signals once the full message has been received.

This would be a great add-on for a Morse Code practice keyer.

http://www.youtube.com/watch?v=6X8iZJpLC2c

Comments

  1. jwsmithc4 says:

    I’m curious what speed it can handle.

    Anyone remember that Travolta movie where he listened to the local army base’s recorded Morse code. it was played in repeat really fast and he cracked it.

    Something about the Gardens and he told them Spring is late Water the south garden or something.

    Anyways my point, would be pretty cool if it could handle something like that.

  2. MikeK says:

    I’ve done similar. You might not even need the op-amp. I setup a zero-crossing detector at the input to the micro’s ADC with a decoupling cap, two diodes, and two resistors. Works great.

  3. svofski says:

    Nice start! Glad to see morse code projects here.

    There’s a lot of room for improvement yet. A nice interpreter should do it in realtime and adapt to speed. This is especially important for practice. The code sent by a manual key by unexperienced sender is going to have a lot of speed deviations. Another thing that would be nice to see is a realtime (pseudo)graphical display of incoming signal, so you could see where exactly you make mistakes. For rhythm-challenged people like me it can be very helpful.

    Now that there’s an input opamp anyway, probably 2 of them in one package, one could implement a 2nd order bandpass filter to filter out ambient noise.

    I have other ideas about filtering but they’re unproved and I’m going to keep them for myself for the time being 🙂

    • draeath says:

      Some kind of pseudo-AI that weighed the likelihood between uncertain characters would be awesome, and help compensate for noise or inexperienced/poorly-skilled senders.

      Eg, if you thought you heard QRZ Q?Z ?RZ, it would figure out that it likely says QRZ QRZ QRZ and display that (with some kind of feedback showing the characters that were deduced).

  4. BebFeg says:

    I’d use a cheap LM567 tone decoder…. Plus I’d listen for a few characters and then determine the speed and spacing of the sender and quickly jump back and decode from the first detected dit or dah.

  5. sulimanhabsi says:

    this interpreter can translate faster than this speed but we slowed it down because we needed to show the processing to the instructor. and it has limited frequency. We appreciate any improvement to the system.

  6. Pretty cool!

    I designed a headband with a motion detector that is sensitive enough to pick up the heartbeat and can thus easily detect rapid eye movements. And I wrote a program that plays audio tracks when it detects that I am dreaming. I can sometimes hear the songs in my dreams and act on that knowledge — by flying, for example.

    I have been training myself to blink in Morse Code patterns and have started writing a plugin that can decode blinking patterns in hope that I can transcribe live from within a dream one day. You can see my latest debugging session on LSDBase and download the raw data.

  7. Nick says:

    Great job!!

    It would be cool if a RSA or AES encryption was used with Morse code, secure Morse code transmission :S

Speak Your Mind

*

Related Hacks in Microcontrollers

  • Morse Code interpreter
  • One wire reads the keypad from the APRS radio mic
  • Level conversion with plenty of options
  • Music visualization generator with a Propeller
  • Metal detection using an inductor instead of a clock crystal.