–.-.-Īlthough Morse code is not used as much as the past anymore, it still has its own applications. Listed under the Technical Reference/Arduino category that is about Ham Radio - Arduino Projects. Morse code is still popular among enthusiasts in the field of amateur radios. easy to build cw decoder based on dsp goertzel code if you want to build a cw decoder without using other active components than an atmel 328 arduino uno then this is sure something for you. Morse code is also used in aeronautical navigation systems. Many ships use Morse code to send light for communication or help. Morse code decoder will be run by itself. The decoding quality is actually quite good. Also, those who can not talk for any reason can also use Morse code to express their meaning.Īnd besides all, learning and using Morse code to communicate can be fun and entertaining. You can send CW and look at the LCD to discover how well it decodes your sending. I tested the decoder by sending the alphabet to it from a WinKey USB Keyer at various speeds, and found that if the LCD was scrolled, the Arduino CW Trainer would make mistakes at higher speeds. I even used the same code to do simulations on my PC, and the software demodulator was able to easily recover RTTY when run at 0dB S/N, mixed with gaussian noise. Using an Arduino this way has its fair share of challenges. Unsigned long pres_len = 0, rel_time, pres_time = 0, old_time_len = 0, old_pres = 0, space = 0 This is a 16MHz processor, with an 8-bit ALU. Return '.' //if button press less than 0.6sec, it is a dot This small design runs fine and long for a 9-volt battery, if you do not necessarily need to have backlight on the display (do not mount R6, 12 Ohm), it uses a lot of power, and a new battery is worn out in an hour or so. The code is here and has details of the buttons to press during configuration.However, it would last for a long time without backlighting, and even with the new connecting a speaker. The completed project just has a 3.5mm jack socket hot-glued to the Arduino and connected to the ground and A1 pins. The magnitude default suits the ACC2 output of my TS–590. I set the default ‘N’ to 48 and the default magnitude to 20. This can help if conditions change and signals become very weak or very strong. At start-up the ‘N’ in the Goertzel algorithm and the expected amplitude of the signal can be changed. It happens to have buttons on it so I added some configuration using these buttons. Screenshot of completed projectįor the completed decoder I changed to an LCD shield. I find this more useful than watching the LED blink. The number of > chars increases with the accuracy of the tuning. I also added a LCD tuning aid – you can see this in the photo. This allows more lee-way in the Goertzel algorithm. I also let the code work with an Arduino Due which has a faster CPU than the Arduino Uno. I also changed the ADC registers to speed up reading from the analogue pin, but this had little effect. This almosts halves the time taken to write to the screen. So I changed the code to use the LiquidCrystalFast library rather than the bog-standard LiquidCrystal library. But it was actually the display to LCD which took much of the time. As reducing the bandwidth is done by iterating more in the algorithm I suspected this was the bottleneck. I instrumented the code to see where it was using up CPU as Hjalmar hints that you can’t reduce the tone bandwidth too far. I’m using an LCD of 4 lines of 20 characters which works well. The decoding quality starts falling off as the CW speed rises above 30 WPM but it’s still usable. This allows me to use a sidetone of 750Hz and a 150Hz filter on the transceiver. I use the 744Hz tone in the algorithm and a bandwidth of 140Hz. The noise reduction on the TS590-S is needed to allow this, and with NR2=20, fast AGC and reasonably keyed morse it does pretty well. Even so, the decoder has decoded plenty of signals even when drowned in HF mush. As I write, we’re in horrible HF conditions at the moment with poor propagation. I’ve not modified the circuit in any way as I can fiddle with the controls on my TS590-S transceiver to get the decoder to work. It gets its efficiency by only working for various fixed tones rather than a continuous frequency spectrum as in the FFT. The Goertzel algorithm does much the same as an FFT but in a more efficient way. The CW Decoder circuit and code come from Hjalmar, OZ1JHM and are described in his web page A VERY simpel CW decoder EASY BUILD. I came across a CW Decoder based on an Arduino Uno implementing the Goertzel algorithm, and have lashed together a prototype which works quite well.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |