Morse Code RF Transmitter From A Micro’s Clock Output

If you’re looking for a simple way to make an RF transmitter, check out [Tomasz]’s Morse code transmitter. His design uses nothing more than a microcontroller and a 16MHz crystal to transmit CW Morse code on 96MHz. We’ve seen some similar designs that work at lower frequencies, but transmitting up at 96MHz is pretty impressive.

[Tomasz] used an STM32L microcontroller for this project, which isn’t specced to run up at the high frequencies he wanted to transmit at. To get around this, [Tomasz] wired a 16Mhz oscillator up to microcontroller’s clock input. The clock input is run into the micro’s PLL which is capable of generating high frequencies. He mentions that you can use the internal oscillator instead of a crystal, but it has a ton of phase noise and splatters all over the spectrum.

[Tomasz] chose to start transmitting at 96MHz, which can be picked up by a standard FM radio. To generate this frequency, he set the PLL to multiply the 16MHz crystal up to 192MHz followed by a clock divide of 2 which brings it down to 96MHz. The microcontroller’s CPU runs on the 16MHz crystal input before it goes into the PLL. Next [Tomasz] enabled the MCO clock output pin which routes the 96MHz signal to the outside world.

Transmitting CW is pretty simple; it just involves turning a fixed-frequency transmitter on and off. [Tomasz] wrote a function that enables and disables the MCO output pin. This has the effect of keying any Morse code string you throw at it. Check out the video after the break to see the transmitter in action.

11 thoughts on “Morse Code RF Transmitter From A Micro’s Clock Output

  1. This is awesome! So tempting to try this myself. I wonder how difficult it would be to set up a propagation beacon on either 6 meters (50 – 54 MHz) or 2 meters (144 – 148 MHz) using this technique. I know the output power would be extremely limited, but as a licensed amateur I can legally run the output into an amplifier (only when transmitting within ham bands, of course).

  2. Sure, it “could be picked up with nothing more than a standard FM Broadcast receiver”, but listening to CW on an FM radio is rather silly. Using an SDR as shown in the demo is more practical, but then you can pick up signals at any frequency; so tricking an MCU to produce signals as high as FM-band is also rather silly.

    How about putting a varicap on the crystal, and try to get some proper FM?

      1. To quote [Echodelta], “Having to listen to mark as silence and space as hiss, might make for rather hard copy.” In addition, the broadcast FM band is not intended for any modulation scheme other than FM; and I wonder if transmitting CW on that band might be poor etiquette, if not illegal even at power levels otherwise allowed by the FCC. So I consider the usage example at least to be silly, though it’s a neat MCU trick that may have other, non-silly uses.

  3. Having to listen to mark as silence and space as hiss, might make for rather hard copy.
    Pi-rate say’in something?
    I knew since Gilligan’s Island that any radio could be made into a transmitter.

    1. yes it can, did this by accident once.

      blanked out entire VHF TV band, unknown power/distance,
      from screwing around with a standard FM broadcast band reciever.

      also (purposely) built a tv transmitter without sound or color in 15 minutes from an 80’s tv tuner. apparently the local oscillator was running at broadcast freq? could that even be right? either way i modulated by floating a composite picture ontop of a resistor that happened to be in series with a transistor.

      PS: this tuner was removed from the tv,
      as it was one of the “HOT chassis” designs,
      and needed a more sane powersupply.
      after all, tuner only consumes a small current.
      the little zener inside draws most of the current,
      hack that off and run it on whatever you want
      as long as its well regulated and bypassed.

Leave a Reply to NewCommentor1283 Cancel reply

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