According to some, ferrite antennas can even work on SW. Enter
Chris Trask ferrite antenna
in a search engine to see his achievements.
Chris Trask ferrite antenna
in a search engine to see his achievements.
Thank you for providing the SAQ recording. I can play it and hear the -.-..- ... I though it would be fun to decode the stream with an MCU and display the text but the file is amplitude-modulated 500hz which is satisfactory only for human ears and brains. I can clip the peaks with an LM393 and blink an LED but it is difficult to measure the carrier on-off time. Information is lost going from 58 microseconds to 2 milliseconds.Have recorded and processed the full Grimeton SAQ Christmas Message 24th December 2023 as recorded in Cardiff, Wales, UK.
It is attached as a ZIP file containing the processed wav file.
How have others got on?
CC @SAQ Grimeton
If you have the time and it is not inconvenient please provide the unprocessed file.
Attachments
@fubar3 here is screenshot of processed file in Audacity. The envelope you show is not there. Suggest you process further by calculating RMS value over say 1/516 mS or multiples of. This will give a better waveform to process for Morse code recognition.Thanks @Aridace @fowlay I am very surprised how easy it was to receive SAQ here! I have read the Morse message but on the screen not the sound file, see below:-
View attachment 1250662
From the file "Grimeton SAQ Xmas Message 24th December 2023 Processed 8K Sampling.wav"
I expanded more the Audacity view. There is obvious signal so it is possible to digitize. I plan to amplify, adjust, and rectify the audio to get non-negative pulses including some noise. Then adjust the LM393 threshold so that only clean 3v pulses goto the MCU for decoding. So there are 2 adjustments to tune for optimal.@fubar3 here is screenshot of processed file in Audacity. The envelope you show is not there. Suggest you process further by calculating RMS value over say 1/516 mS or multiples of. This will give a better waveform to process for Morse code recognition.
Usually math is needed to extract data from VLF. But my methods need a strong signal.
Morse has no clocks or markers to assist computer logic. Timing is relative to the situation. I read about a prisoner off war on camera who blinked his eyes "torture" while his captors were showing off.
Attachments
@fubar3 Suggest to process further in audacity proceed as follows:-
1. Effect - Volume and Compressor - Amplify
2. Effect - Volume and Compressor - Limiter
3. Effect - EQ and Filters - Filter Curve EQ - Apply following curve
4. Part of the new waveform (.wav) obtained for further processing.
1. Effect - Volume and Compressor - Amplify
2. Effect - Volume and Compressor - Limiter
3. Effect - EQ and Filters - Filter Curve EQ - Apply following curve
4. Part of the new waveform (.wav) obtained for further processing.
Last edited:
@fubar3 It will help if you have program to calculate a new waveform of RMS values over say 1/516 mS (or multiples of) from this waveform in new .wav file. RMS values are only positive. This will help your LM393 to get a good threshold.
"Morse has no clocks or markers to assist computer logic. Timing is relative to the situation" Yes I agree in this instance timing is by the operator. Suggest you come up with some kind of algorithm, for example keep track of dash time in milliseconds then use rule to define dot as fraction of dash something like this:-
IF new pulse is less than 0.5 dash time and more than 0.20 dash time then it is a dot.
IF new pulse is less than or equal to dash time and more than 0.75 dash time then it is a dash.
IF new pulse is less than 1.25 dash time and more than dash time then it is a dash.
IF new pulse is less than 0.20 dash time then it is noise.
IF new pulse is more than 1.25 dash time then it is noise.
Use dash time values to keep a moving average of "dash time" on the fly to match operator speed, same logic for word boundaries.
"Morse has no clocks or markers to assist computer logic. Timing is relative to the situation" Yes I agree in this instance timing is by the operator. Suggest you come up with some kind of algorithm, for example keep track of dash time in milliseconds then use rule to define dot as fraction of dash something like this:-
IF new pulse is less than 0.5 dash time and more than 0.20 dash time then it is a dot.
IF new pulse is less than or equal to dash time and more than 0.75 dash time then it is a dash.
IF new pulse is less than 1.25 dash time and more than dash time then it is a dash.
IF new pulse is less than 0.20 dash time then it is noise.
IF new pulse is more than 1.25 dash time then it is noise.
Use dash time values to keep a moving average of "dash time" on the fly to match operator speed, same logic for word boundaries.
Last edited:
Snippet from Wikipedia page
International Morse code is composed of five elements:[1]: §3
https://en.wikipedia.org/wiki/Morse_code
International Morse code is composed of five elements:[1]: §3
- short mark, dot or dit ( ▄ ): "dit duration" is one time unit long
- long mark, dash or dah ( ▄▄▄ ): three time units long
- inter-element gap between the dits and dahs within a character: one dot duration or one unit long
- short gap (between letters): three time units long
- medium gap (between words): seven time units long (formerly five[6])
https://en.wikipedia.org/wiki/Morse_code
There is a site that claims to be able to decode morse from an audio file:
https://morsecode.world/international/decoder/audio-decoder-adaptive.html
https://morsecode.world/international/decoder/audio-decoder-adaptive.html
@Aridace I am trying to create a decoder that is usable for SAQ. First there must be a receiver tuned to SAQ so that its signal is stronger than all other stations and noise. @richgwilliams provided a recording. It is modified for human ears but still usable. So I am assembling a simple decoder that will convert the recording into pulses. I am programming an MCU to convert the dit-dahs into text. This is just a whim on my part, not required for the original OP..
The site I posted does a rather bad job as it interprets the noise pulses from the recording as the letter "e" and makes a mess of the rest. The algorithm to decode variable speed morse in the presence of noise isn't easy. I did it ~35 years ago in Z80 assembler. It worked rather well once the morse pulses were made visual and a manually adjustable integrator plus comparator circuit was added. Success with your efforts!
The SAQ thing reminds me that pioneers could get amazing results without the advantage of valves and semiconductors. Marconi is well known but he "stood on the shoulders" of others whose names I forget.
https://collection.sciencemuseumgro...-magnetic-wireless-detector-wireless-detector
https://collection.sciencemuseumgro...-magnetic-wireless-detector-wireless-detector
@fubar3 It will help if you have program to calculate a new waveform of RMS values over say 1/516 mS (or multiples of) from this waveform in new .wav file. RMS values are only positive. This will help your LM393 to get a good threshold.
Another way to do something similar as RMS is by making an OpAmp circuit to "Full Wave Rectify" the signal accurately then some Low Pass filtering.
The triode valve (tube) was invented very early on.
Good luck.
Another way to do something similar as RMS is by making an OpAmp circuit to "Full Wave Rectify" the signal accurately then some Low Pass filtering.
The triode valve (tube) was invented very early on.
Good luck.
I'd Hilbert transform, take the magnitude of the resultant complex signal and Bessel low-pass filter for a nice envelope - I tend to use Python's scipy.signal and numpy for such things, there's a lot of useful signal processing stuff in there.
An interesting project!I am trying to create a decoder that is usable for SAQ. First there must be a receiver tuned to SAQ so that its signal is stronger than all other stations and noise. @richgwilliams provided a recording. It is modified for human ears but still usable. So I am assembling a simple decoder that will convert the recording into pulses. I am programming an MCU to convert the dit-dahs into text.
The receiver - its an advantage to tune the receiver to SAQ but the SAQ received signal need not be stronger than all other stations (and was not for my receiver) because the recorded file (which is large because it is sampled at 48 kSamples/sec or more) can be processed to further select the SAQ signal.
That said the stronger the received SAQ signal is the better. There are two possible setups 1. Receive, record to file, post process then decode the Morse 2. Receive, process and decode the Morse in real time.
It is possible to receive other Morse code signals on the Short Wave to test your Morse code reader on if you want.
Earlier I said that Morse Code had no clocks. Now I believe that the signal carrier freq can be used as clock. For example, 17200 is 58 microseconds. The carrier can be amplified and rectified to generate MCU interrupts. The MCU will count them to measure the duration of the latest carrier event. It also can do a sanity check because interference varies the interrupt rate.@fubar3 It will help if you have program to calculate a new waveform of RMS values...
The sender needs to loop on the same message because of random spikes in the signal. Certain words might get dropped. A human can sometimes guess what was missed but a stupid computer just gets a say again state.
Complex software is not needed. It's mainly a hardware problem to adjust the receiver output and measure it with a high-resolution counter.
Morse code was designed to be decoded by the human brain, which despite the effort to produce a good enough algorithm, remains the best decoder to the extent that for instance Winradio sells an FSK decoder, but not one for CW, because even with best algorithm available it still would produce rubbish (and rain complaints from users).
@Aridace said:- Morse code was designed to be decoded by the human brain,........
I agree, the human brain is a marvel. Perhaps an AI could be trained to read CW.
I don't need to learn CW code but I like constructing something to investigate.
Work in progress....
I agree, the human brain is a marvel. Perhaps an AI could be trained to read CW.
I don't need to learn CW code but I like constructing something to investigate.
Work in progress....
Attachments
The snag in software morse decoding is "how to eliminate noise pulses?". When done manually (for instance with integrator) it's easy when displaying the raw pulses, and adjusting the integrator in a way that they remain below the threshold of the comparator following the integrator (both of which can be done in software). Otherwise, noise pulses will get decoded as "e" and the timing algorithm will adjust to that.
Looking at the SAQ recording, I think that words will frequently be corrupted and need to be repeated. I would like to have the raw carrier for triggers but there is no way to capture it reliably with a sound card. Therefore, an interrupt driven program is not feasible.
I use an ESP8266 which is a wi-fi beacon by default. I turn off the wifi, disable the watchdog timer and interrupts, to run a fast polling loop .. like 3 microseconds. Oh wait, the ADC on those MCU is poor so I must use an external ADC with SPI bus and interrupts. I have more to decide.
I use an ESP8266 which is a wi-fi beacon by default. I turn off the wifi, disable the watchdog timer and interrupts, to run a fast polling loop .. like 3 microseconds. Oh wait, the ADC on those MCU is poor so I must use an external ADC with SPI bus and interrupts. I have more to decide.
- Home
- Amplifiers
- Solid State
- Tuned Sound Amplifier/Receiver for the VLF Christmas Eve transmission from SAQ, Grimeton, Sweden