Arduino Morse Code Keyer/Oscillator

Recently I acquired my Ham Radio license and after upgrading from Technician to General class I decided to build a Morse Code oscillator/keyer. I started by building an Iambic paddle from Plexiglass PCboard pieces, some scrap wood, and screws. I will improve on the design as many factors are far from suitable. Here are a few photos of it and the basic design sketch of it.









The basic idea is that the pc board on the side touches the screw from the corresponding side depending on which side is pressed. That effectively short circuits the two wires together.
Now I tried experimenting with it a lot and I had problems with the If and While commands in the Arduino IDE but after a long time experimenting I finally found the idea that I could have it play two tones and then put those into the paddle so when I pressed the paddle the center wire will get the tone from one of the two wires. So I hooked up the center wire of the paddle to the speaker and voila! I now have a Morse code keyer and practice oscillator.
Now the Arduino can only generate one tone at a time, so to solve this I used the delay Microsecond command to rapidly switch between the two tones. The program generates a tone at () hertz on digital pin 9 then it pauses one microsecond and stops the tone. After that, it starts a tone at () hertz on digital pin 11 and delays one microsecond and it stops the tone then it repeats that. Using the powerful switching capability of the Arduino we can effectively produce two tones seemingly simultaneously. 
the code for this is listed below.




void setup(){
pinMode(9, OUTPUT);
pinMode(11, OUTPUT);
}

void loop(){
  tone(9, 121);
  delayMicroseconds(1);
  noTone(9   0);
  tone(11, 4186);
   delayMicroseconds(1);
  noTone(11);
}


If you have any questions feel free to contact me through the comments section of this blog post and I will get back to you as soon as I can.

















Comments

  1. I've spent the past few days looking for anyone who has thought of this. I would like to develop an automated process of the system receiving the signal and decoding it on to a screen and then the licensed HAM can input using a keyboard and have the pi/audrino send the code in Morse. Basically a bridge between the radio and the keyboard that also outputs the received data to a screen.

    ReplyDelete
    Replies
    1. I am currently working on a arduino program that will send morse code. I do not have a radio that transmits CW but I could try doing code for receiving CW too.
      Thanks for reading and 73's
      Lukas KK6AXQ

      Delete
  2. The book Arduino Projects for Amateur Radio by Dr. Jack Purdum and Dennis Kidder has projects for a keyer, as PS2 keyboard keyer, and a CW decoder. It's sold by Amazon.

    ReplyDelete
    Replies
    1. Yes I have that book on my shelf. It covers the keyer in more detail than I could possibly as it has buffering and macros etc...

      Delete
  3. This comment has been removed by a blog administrator.

    ReplyDelete

Post a Comment