8/13/2023 0 Comments Wb7fhc morse decoder![]() ![]() That’s the algorithm for a Morse decoder. Finally, after the characters are decoded, they are displayed on a screen. Machine generated Morse decodes perfectly human sent code, not so much. By understanding this pattern, your software converts on-off data into characters. This pattern holds relatively steady regardless of the speed. The duration of Morse elements, and the spacing of letters and words, follows a standard pattern, as explained on Wikipedia. Filtering is also used remove noise spikes in the audio. Since you will be detecting the tones faster than they are actually being sent, you need a filter to smooth out the data between samples. If a signal at the right frequency exceeds threshold, the switch is turned on. A strong signal at the right frequency indicates a tone. The other is to use software to adjust the threshold automatically. One approach is to set the threshold manually with a knob. ![]() You set a signal threshold so the detector can differentiate between tone and noise. Normally, the tone is stronger than the noise. Also, you need to ignore the broadband noise and select the narrow band tone. Even with automatic gain control, the signal level varies. A Morse Code tone exists in a sea of noise. An example of an ADC is the input side of your computer’s sound card. This is called analog-to-digital conversion, or ADC. Computers need data, not signals. Convert the audio signal into data. When this pin is LOW a tone of the set frequency has been detected. Hook up your LCD panel to the Arduino using these pins: LCD pin 1 to GND LCD pin 2 to +5V LCD pin 4 to D7 LCD pin 6 to D6 LCD pin 11 to D5 LCD pin 12 to D4 LCD pin 13 to D3 LCD pin 14 to D2 LCD pin 15 to +5V LCD pin 16 to GND Data from pin 8 of the LM567C will be fed to D8 on the Arduino When this pin is HIGH there is no tone detected. If you don't have a 20x4 (they're really only a few bucks more) you might want to leave out the word wrap and scrolling. Sometimes long words or missed spaces will result in only two words left on your display. Frankly, I don't think scrolling makes sense with only two lines. If you are planning on using a 16x2 you will want to make some changes. This version makes use of the 4 digit parallel method of driving the display. When the bottom line is filled, all lines will scroll up one row and new text will continue to appear at the bottom. If a word extends beyond the 20 column line, it will drop down to the next line. The sketch includes funtions for word wrap and scrolling. This project is built around the 20x4 LCD display. However, if you reset and then send 'CALL ME WOODY' it will match your speed quite quickly. After a reset, the following text is very difficult to lock in on: 'SHE IS HIS SISTER' because there are only two dahs in the whole phrase and they come near the end. The more dahs you send at the beginning the sooner it locks into solid copy. The software tracks the speed of the sender's dahs to make its adjustments. If the tone decoder is not centered on the frequency of the incomming signal, you may have to fine tune the module as you lower the volume. Lowering the volume of the incoming CW can also help. If you are not seeing solid copy, press the restart button on your Arduino. The first few characters may come out wrong while it homes in on the speed. This module allows you to tune to the frequency of a specific tone while ignoring noice and other tones of different frequencies The program will automatically adjust to the speed of code that is being sent. Details of this module will eventually be posted on line. 1.5 (c) 2014, Budd Churchward - WB7FHC This is an Open Source Project Search YouTube for 'WB7FHC' to see several videos of this project as it was developed. ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |