Portable Magic Morse Decoder - MK2

srnet

Senior Member
Its Shrunk !

I spent quite a while doing some real on-air decoding tests, rather than just looking at a scope trace, and came to the conclusion that simple is best. The NE567 manages quite well on its own.

The left picture is the decoder working on-air decoding morse at 60WPM. It uses a 08M2, and can work at 15WPM or 60WPM, selected at power up. The output is to a AXE133Y 18M2 driver (with modified code), shown connected to a 20x2 LCD. The incoming Morse scrolls up from the bottom line. A switch freezes the display on the last 40 characers.

The PCB shown on the right could be spilt into the 08M2 decoder PCB (to use with AXE133Y) and a small PCB with a SOIC 18F25K22 that could also drive the LCD\OLED, emulating the AXE133Y code. Kept together the PCB was intended to mount on the back of the LCD display.

Code and circuit diagram to follow.
 

Attachments

hamtech

Member
Hi I have built the morse decoder . I was uncertain of the wiring of the three way switch so i left it out and wire the 8M2 C.1 output direct to LCD input.

On power up the system comes up and display 60 wpm and starts to try to decode. LED on the 567 flashes away, the 567 decodes at about 1.2Khz (is this about right).

If I press the switch the other led comes on and I think it shows all that was in the buffer. Press it again and the led goes off and decodong starts again at 60wpm.

I cannot seem to be able to set it to decode at 15wpm which is where I want to be, how do I select 15wpm?? Great little project though, thanks!!

A bit more description of accesing the modes would help me and maybe others.

Thanks again.

I have pressed the button on power up but that does not do it. It seems to be trying to work but the speed is wrong.
How do I get 15wpm please. I don't have a terminal only the LCD display.
 

srnet

Senior Member
I cannot seem to be able to set it to decode at 15wpm which is where I want to be, how do I select 15wpm?? Great little project though, thanks!!

A bit more description of accesing the modes would help me and maybe others.
There is this explanation in the code;

'This runs at startup and selects the decoder function. If the switch is not pressed
'the mode displayed on the OLED\LCD (and serial terminal) is started. To skip a mode
'press the switch
functionselect:
gosub clearOLED
gosub home1OLED
Sertxd("Receive at 60WPM ?",CR,LF) 'Leave switch un-pressed and this mode is selected
gosub LCDOLED60
gosub LCDOLEDWPM

As for the NE567 being set to 1.2khz, it needs to be set to the tone frequency of the Morse you are decoding ........

And did you read the document in post #2, that describes the mode changing also .........
 

hamtech

Member
There is this explanation in the code;

'This runs at startup and selects the decoder function. If the switch is not pressed
'the mode displayed on the OLED\LCD (and serial terminal) is started. To skip a mode
'press the switch
functionselect:
gosub clearOLED
gosub home1OLED
Sertxd("Receive at 60WPM ?",CR,LF) 'Leave switch un-pressed and this mode is selected
gosub LCDOLED60
gosub LCDOLEDWPM

As for the NE567 being set to 1.2khz, it needs to be set to the tone frequency of the Morse you are decoding ........

And did you read the document in post #2, that describes the mode changing also .........
I have read the accompnying document and printed it off. But i do not seem to be able to switch modes. if i read it correctly the test modes ouput to a terminal but do not display properly on the lcd.

Pressing the switch on startup does not go into 15 wpm mode. Pressing the switch after it has gone into 60wpm mode does seem to switch to a different mode, by the blue/yellow led, in my case). Switches on when switch is pressed and off when pressed again.

The comment about the 567 tone decoder is that the adjustment means the lowest freq it can be set to lock to is 1.2 khz . As you say it is a question of adjusting e rx but i would prefer a lower tone frequency so i may change the capacitance.
 
Last edited:

srnet

Senior Member
The software published works correctly with the circuit shown, and the method for switching modes is as described.

Not sure what you mean by "I don't have a terminal only the LCD display" as if your using the code as published the Program Editor terminal will automatically start up, and show the same prompts as the LCD, right after programming.
 

hamtech

Member
SRNET - Success...... Thanks.

When I program the 8m2 the terminal window does come up and I see the messages I was not getting on the LCD, and I was able to switch to 15wpm and got some code printed on the LCD. It is a bit difficult finding someone transmitting at the correct speed Hi Hi.

I am able to change speed when the LCD display shows 60WPM, is it possible to echo the messages on the terminal onto the LCD or would that overload the 8m2??

What morse speed range do you think it will cope with on a clean signal. What is the best tone frequency for decoding as I said earlier my NE567 is tuned a slow as I can get it and it operates with a tone of about 1.2 Khz?

Thanks again.. Hamtech


Magic little project, doubt I could ever program something like that.
 
Last edited:

srnet

Senior Member
It does echo a subset of whats printed to the terminal onto the LCD, just enough to use as a portable unit.

You cant echo all of what goes to the terminal to the LCD, due to the speed the LCD has to operate at (38400baud) it can only cope with one character at time.

It wont cope with much more than a variation of +/- 3WPM away from the centre speed, it was really designed as a field portable unit to decode the 60WPM fixed rate fixed frequency Morse 'Data' transmitted form another PICAXE project, its not designed to be adaptive and there is a limit to what a humble 08M2 can do.
 

srnet

Senior Member
So, if you could not get the startup options to switch according to the code and documentation what was the problem ?
 

G-Man

New Member
Have you considered using rolling averages for the length of things? That would allow the durations of dits, dahs and silences to morph over time to match the varying speed of a human sender... That does present the issue of not knowing what durations to use to begin with. But you do know that your first dit or dah is a dit or dah... so you measure the tone's duration and then wait for a tone signal that is significantly shorter or longer than this initial one, then you know for sure which it was... That means that you may lose the first few characters while you're doping out durations (provided you don't store them for decoding after you know what's what)... The same tactic could be used to collect the durations of silences...
 

srnet

Senior Member
Have you considered using rolling averages for the length of things? That would allow the durations of dits, dahs and silences to morph over time to match the varying speed of a human sender
Nope.

The code was developed to address a particular need, to decode fixed data rate Morse as a form of data telemetry from a remote data transmitter.

No doubt an adaptive system would be possible, but I cant see the advantage of such a unit for decoding human transmitted Morse when there are free programs for the PC that do the job rather well already.
 

G-Man

New Member
Nope.

The code was developed to address a particular need, to decode fixed data rate Morse as a form of data telemetry from a remote data transmitter.

No doubt an adaptive system would be possible, but I cant see the advantage of such a unit for decoding human transmitted Morse when there are free programs for the PC that do the job rather well already.
Well it would be a nice small portable unit that if equipped with a mic and preamp could be built to be handy to be taken into the field and simply set next to the receiver's loudspeaker... Go with SMT components to make it even smaller and make a Morse decoder key chain...
 

srnet

Senior Member
Well it would be a nice small portable unit that if equipped with a mic and preamp could be built to be handy to be taken into the field and simply set next to the receiver's loudspeaker... Go with SMT components to make it even smaller and make a Morse decoder key chain...
Well it would be, but you would need to have a external tuning knob.

I was using it for decoding FM Morse coming from one of my Lost Model locators, that being FM was coming in at a fixed audio frequency. But most on-air Morse is LSB\USB\CW so the audio tone that the detector sees varies depending on the radios tuning point. Once its setup however it does decode as well as some of the PC based decoders such as FLDIGI.

I can by ear read the slow Morse numbers that the Lost Model Locator uses to transmit its location, so I dont need to carry a portable Morse decoder anymore.

One point to note, it did decode at 60WPM using the 08M2 at 32Mhz, so it ought to work at 120WPM with a 64Mhz 20X2.
 

Paix

Senior Member
@G-Man, I think that Srnet mightl suggest that you fill your boots if you want to adapt the code to adapt to a manual sending speed.

You ideally need to have a bit of control over the sending source and I suspect that your reach isn't quite as long as Srnet's.

There is difficult and then there is masochism. Srnet has scratched a good itch and knows the value of diminishing returns for the effort required.

To a degree, the lower the tones used, the less opportunity (cycles) the NE567 has to determine the presence of a valid tone from the receiver. This obviously becomes more problematical at higher sending speeds.
 

srnet

Senior Member
Its possible that you could program the Morse decoder to cope with 'ham' fisted human operators, and the program did already cope with circa 25% sending speed variation.

The current code did only used around 50% of the 08M2 capacity.

If anyone want to try you are welcome, and I can let you have PCBs if you want them, for the postage cost. They were ordered in a batch of 10 so I have a few left.
 

zs6wbt

New Member
My OLCD gets corrupt the moment the decoder starts to communicate but it seems to be Ok on the terminal program. this is before i even try to send Morse code to it. When i push the button sum caretakers go through correct but not every time. Do you have any suggestions where the problem can be.
 

srnet

Senior Member
You need to provide more information, its very difficult from that description to understand what it happening.

Start by explaining what you have built, how its all connected, what you are using for the Morse source etc.

Also describe in more detail what you mean by "My OLCD gets corrupt the moment the decoder starts"
 

zs6wbt

New Member
Sorry i have tried to build a Portable Magic Morse Decoder at start up the following happens.
* The OLED display com on withe the message "MORSE DECODER Local OLED Init"
* Then the display changes to unreadable characters while at the same time the Terminal program display the correct messages.
* The cable between the display and the Vero-board is about 10 cm of Telephone/alarm wire.
I have tried to feed it withe Morse code from the sound card on my PC but the problem stay the same. If i can get it to display the start-up massage of the Picaxe 8M2 correct, I an start fault finding on the tone decoder. Do you have any ides what can cars this problem

Do you have PCB for this project and and how much will it cost to ship 2 of the to South Africa? it might be worth wile to get rid of the Vero-board
 

srnet

Senior Member
Well the OLED should be displaying some start up messages, if you follow the code through, on of the first things the 08M2 program does is send an init to the OLED;

Code:
setOLED:
	sertxd("OLED Display Selected",CR,LF)
	serout TX, baud, (247) 	'send command for LCD setup
	pause OLEDSETUP
return
And if you check the AXEY133Y code that should result in a message being displayed on the OLED;

Code:
else if INCHAR = 247 then
		MSGNUM = 7			; message 7 (Remote init) on top line
		sertxd (CR,LF,"Remote ")
		cursorpos = 1
		low rs 	     		; change to command mode 
		let pinsB = %00000001	; Clear Display
		pulsout enable,1 	
		pause 16			; 16 = 2ms at 16MHz
		gosub OLED_init
		goto main		 ;Init for OLED	
	end if
As for why its not working,no idea, did you change the code in any way ?

Not sure about the PCBs, I will check if there are any about.
 

zs6wbt

New Member
Hi I have checked the code it is just as you show it it do not seem to me if there was any changes to the code i have reprogrammed both processors and the problem stay the same i will keep on looking for the problem and peep you posted.
 
Top