 
Introduction.

The Packet Memo Wire view portal, is designed for use as a general Text Terminal access point for either Arduino Micro-controllers, or an USB-RS232 interface board, using the computers USB serial port to connected the data modem.

The full Microsoft keyboard is used, however the character coding known as Unicode is used for this application. This allows the use in addition the scientific characters in any text message to by sent. 


To start the Packet Memo Wire program.

Select the Link Rate of your Arduino Micro-controller data port. Then click on 'find' button to discover the comport that your Arduino tone modem or your USB-RS232 interface board, is attached too on the computer.
 

Data Modem designs. 

The Packet memo Wire can be used in two ways. 

Firstly the most basic method is the use of an USB-RS232 interface board, which are available from Amazon and Ebay, plus perhaps many other places. Using these USB-Rs232 interface boards, in its basic function, just the need for a tone encoder ( RS232 Tx pin ) and decoder ( RS232 Rx pin ) are essentially needed. 

However, the DTR and CTS lines are also used, the method to allow the radio ptt line to be triggered by the logic low DTR line, and then an ok signal to send to the CTS line as a logic low signal, thus allowing the Packet Memo Wire program to send the message data.

The principle also of the DTR and CTS lines, is to allow the radio transmitter to switch into the TX mode, which my take several 100ms or so, linear amplifier depended or so, then allow the complete transmitter assembly to settle, then for the radio to set the CTS line sent low to inform the Packet Memo Wire program that all is now fine for the data message transmission. 

The dtr line is only at a logic low for the period of the data message on the USB-RS232 Tx output pin. The DTR line returns to logic high, sending the radio into Rx mode. 

The cts line logic low signal, is kept low for the minimum period required for the data message.

It is suggested that a delay circuit is used within the radio to allow for the delayed CTS logic low signalling, this radio delay time constant circuit, thus providing the time delay required for the radio to switch from Rx to Tx mode. Once the radio ptt is returned to Rx mode by the DTR line, a further delay circuit is required to allow for an end of data message tone to be sent. 

In other words, a delay of say 250ms for the radio switch over to transmit, then a 100ms further delay for the say the modem high tone to synchronise any receiving modem tone decoder, thus after the data message, a closing 100ms end of message high tone from the radio transmitter. After this point, the radio would returned to Rx mode.

The advantage of using a USB-RS232 interface board, is that a modem data buffer is not required. The Packet Memo Wire program requires an echo feedback, which is easily arranged by allowing the USB-RS232 Tx pin to feed also the USB-RS232 Rx pin. This can also be acquired by allowing the data tone encoder to feedback into the modem tone decoder using a audio mixer circuit, creating thus the data modem echo feedback.

The echo feedback is required so that the Packet Memo Wire program can show the out going message from the post box, within the mail box. All the received data messages would also show within the mail box window.
  
Secondly, a micro-controller could be used for the data modem, thus creating a SMART data modem feature, following the similar start and end signalling high tones or so. However, a modem data buffer may be required within the SMART data modem coding. The SMART modem would also provide the echo feedback for the Packet Memo Wire program.

The Packet Memo Wire, can be used for practically any data message signalling system. The character text allowed for  a particular method, say RTTY has its own character set, so a simple SMART modem can be used here. A similar concern is with a CW Morse Code SMART modem. 


Further Info.

Unfortunately an Arduino Mega has to be used for Packet Memo. The data transfer is an ascii coded data signal, and as the Arduino Mega has several internal clocks, each of the four serial ports can be used, but serial port zero is however the USB port to the P.C. device. 

Using software serial commands will not work with an Arduino Uno, as it has limited number of internal clocks. However, an Arduino Uno can be used should say the CW encoding use a data pin, from D2 to D13, hence does not use an internal clock. 

The USB serial port data buffering is another problem, solutions of which can be varied. For the Arduino Mega, the hardware serial ( h file ) is altered to allow a 1500 character Tx / Rx buffer within the Arduino Mega. For an Arduino Uno, a input array command can be used, buffering the usb port data. However this seem to be a slowish speed alternative, but for RTTY and CW, it would be fine to use.

Below is an example code used to create a CW transmitter, while using an Arduino Uno device. It took me a while to discover this chance section of coding, using a ' a = Serial.readString(); ' command to do the job in hand. 

The SMART modem may be an Arduino Micro-controller, or say even a 'Raspberry PI', both can be programmed using Arduino 'C coding', an echo feedback to Packet Memo Terminal App is needed. 

Listening on the bands, it turns out that others have come across the same coding solution. To send any other than Packet Memo Wire message with 'send memo post', use instead the button 'send post', this will just send just the ascii text without any other add-on's to the out going message. 

By the way, I have used this coding myself, with the Uno as a CW message sender, for the Reverse Beacon Network with the Packet Memo Wire, for my radio set signal propagation studies that is. It nice to know where a 'Radio Hams' station setup can reach to.

An example form of the Arduino Mega code shown next, ' Serial.print(ch_read); '  would act as an echo feedback to the Packet Memo Wire. However the out going data message signal to the radio set, say ' Serial3.print(ch_read); ' would send the serial comport data to the tone encoder, while ' Serial3.read(ch_read); ' from the tone decoder.

Normally for an ascii transmissions, such as 1200 baud rate, the echo response thus from the data modem would be immediate, but for RTTY this would be 50 Baud or less, should the Arduino Modem be say active with a  'CW' Morse Code transmission.

Should a Raspberry PI be used as the modem, then the 'Packet Memo' USB serial ports setting should be equal to the Arduino serial ports, such as shown below :-

	DataBits = 8
	Parity = Parity.None
	StopBits = StopBits.One
	Handshake = Handshake.None

All the text windows have in-line text editing software. You are able to copy from all text windows, including the 'modem box' text window, and paste to all other message text box windows. The ' Tx PTT ' send directly out as the transmission, while the ' post ' option adds to the Tx message text window. There are also individual ' clear post box ' and ' clear modem box ' clear buttons.

The principle of the 'post chat list', is to list all the members with the 'Memo chat net' you are in 'QSO', this button used to add the text if the ' send text post ' is used instead of the ' send memo post ' button. This option is offered when say CW or RTTY is used.

The out going Packet Memo message would then comprise of all the radio hams as part of the Packet Memo chat net, apart from you own on your own P.C. , as it would be the sending Packet Memo reply return. Alternatively, the 'Chat List' could be used to add a label, such as 'RSGB 20m Memo contest'. 

However, for 'Packet Memo chat net', which requires to use the ' send memo ' button, the output message could be as follows: 


      gw0aju --> 'gw6orb, g4wrd, gw0hyl, gw6uol' : hi guys, how did the fire works display go   'k' 


perhaps the message reply may be:-


      gw6orb --> 'gw0aju, g4wrd, gw0hyl, gw6uol' : brill display   'k' 


Oh, bye the way, all the listed call-signs used, are all family members.

For a competition mode use, the output would thus perhaps say :-


     gw0aju --> 'rsgb 20m Memo contest' : gw6orb  59:'#1' : io71vu : 73's good dx 'k'


Only the 'Tx message' window needs to have the wording -  gw6orb 59  - within the post box is required, as the Packet Memo Wire App adds in the rest of the messages from each of the text windows settings. 

Click first the qso# then 'EoT' buttons. The user callsign ( gw0aju ), the 'Chat List' ( rsgb 20m Memo contest ), then the qso# contact number ( #1 ), followed by the 'EoT' ( io71vu : 73's good dx ) message text windows having been prepared before hand.

The qso#  button adds the contact number to the outgoing message, each time incrementing by one. You are also able type offset a starting number, say 109, from here the qso#  button will increment from.

The 'mail box' monitor window illustrates the overall comm contact messaging, out going as well as incoming.

To build the Arduino Mega Tone transcoder modem, refer to the websites of the list below for design ideas:-


1/   https://sites.google.com/site/radiohamtechnology/audio-data-fsk-encode-decode

2/   https://sites.google.com/site/radiohamtechnology/la3600-5-band-af-equaliser

3/   http://www.radiohamtech.com/logrithmic%20amplifier%20detector%20publish.pdf

4/   http://www.radiohamtech.com/parallel%20programming%20of%20the%20ad9850%20v2%20.pdf


The bit rate ( Baud rate ) you set the serial port 3 on the Arduino Mega, will be the data rate through the microphone connection of your radio set.

The original tone modem designs used a 555 timer as the fsk tone generator. However, I have though that a parallel programmed AD9850 dds oscillator would be perhaps best. Article reference 4/, illustrates a PICAXE 18m2 device used to parallel code the AD9850.

I have tried this method before for RTTY, directly out onto the 40mband, it works well. The principle now is to use the AD9850 DDS oscillator as an on / off keyed 2400Hz tone generator.

Article 3/ relates to the logarithmic detector, used as either a Volume unit meter, or as synchronous envelope detector. From the digital scope images, a CW morse signal is resolved in the mist of a heavy background noise level. It is planned that the same circuit principle may produce a 1200 baud data ( more likely ), or even at a push a 2400 baud data rate signal.

At this data rate level, only the lower side-band of the audio tone data signal, would pass through the radio set."

For audio filtering, article 2/ may be of use.

However to program the Arduino Mega, reference article 1/ may be used for DIY construction for one's own use.

I have written other Arduino Mega programs for the simplified Packet Radio principle, and other Visual basic Terminal programs as well. One idea tested is the remote changing of the radio comport data rate, and others regarding an individual mailing system, a general notice club posting, or a data station repeater, have been coded.

An individual dialling system, where-by calling the person you wish to QSO with, by ringing their modem alarm similar to a telephone calling. Using an 'identifier + call-sign', say '#call gw0aju', similar to the '#qsl' system.

Regarding these versions, I have not yet decided what to do, perhaps as a retail offering, perhaps via my daily work employer.

Time will tell.

The PC to modem link, listed as 'Link Rate', is now changeable. 

The reasons are many, but should a radio ham wish to use the Packet Memo Terminal App for a microwave link, then the out going serial3 port could be set to 128Kbits/sec, as well as the Arduino USB port to 128Kbits/sec, as well as the Packet Memo Wire setting to 128kbits/sec, allowing overall a 128Kbits/sec high speed data rate messaging com's link. 

The other reasons are, should the Arduino USB data rate be different to another Arduino program, then a different 'Link Rate' from the 'Packet Memo Terminal App' can be used. However, do bare in mind, the 'Link Rate' setting, would be common with any other discovered comport use, unless you alter the 'Link Rate' as when as is needed. Example, 'com 1' may be 9600 baud, while 'com 7' may be 115200 baud setting (128K Baud). As each of the two comport are used, the 'Link Rate' would need to be altered each time, but useful.

However, as data rates are increasing, perhaps a microwave link would use a 2MBit data rate, or a MF or LF band message may require a 300Bits/sec data rate.

To this end, the post box buffer can be user set, as well as the mail box buffer. 

The principle being, if your micro controller has a set limit character buffer, as the Arduino without extra coding is 63 characters, then the post box buffer can be set to 63 characters. Once the limit is reached for the post box buffer, a 600Hz tone is announced, and any further keyboard typing for the post box message is rejected, until the post box characters are deleted or the clear post button is used.

The principle for the clear post button, is to allow a message to resent, without the message being deleted automatically once transmitted. The band may have a bit of QSB or band noise, or a low level Signal meter signal, thus requiring a message resend.   

The listed design workings, are for a ham radio DIY construction, perhaps also for CB radio, thus one's own private use.

Oh by the way, I have error trapped program run error trip-ups, with an error message and an error sounding tone.

Once heard, it's not such the case of 'Houston we have a problem?', but perhaps more of to re-connected your modem.

Happy times.

Software and hardware ( web and books ) research by :- Alastair GW0AJU  

Date :-  21st March 2021
