CW Widget

The CW Widget project is currently suspended and has been replaced by the CW Zoomer project.

——————–

The CW Widget is a tool that is primarily intended as a serve as an aid for students learning International Morse Code via intermittent tone transmission (as opposed to clickity-clack landline telegraph using sounders that were commonly used by railroads).  CW stands for continuous wave (radio transmissions) used to convey information via Morse Code and would be better described as ICW (intermittent continuous wave) because Morse code transmissions are inherently intermittent.

The Widget provides several features of interest to those learning International Morse Code.  First, it implements a multi-function electronic keyer, providing Iambic Mode-A, Iambic Mode-B, Mode-C and Mode-D.  Mode-C (my term) is an electronic keyer that is non-iambic.  In Mode-C, once a paddle contact is closed the other paddle contact is ignored until the first contact is open and the trailing spacing element has completed.  Mode-D (my term) is best described as “Bug Mode”, in that the left paddle produces dots and the right paddle functions as a straight key.  Left handed paddle operation for all of the modes above is accommodated via a user controlled configuration change. And there is a conventional straight key input for either a straight key or bug (without any electronic timing assistance, other than switch-bounce suppression).

The output of the keyer controls an audio tone generator that is implemented by the Digital to Analog Converter (DAC) output of the microcontroller, and produces a 16 point sine wave to generate a tone output.  Additionally, the envelope of the tone at start and stop times is well controlled so that there are no key-clicks.  The tone frequency and amplitude can be adjusted via the UP and DN buttons.

The tone output of the Widget appears on three ports.  The Speaker port (Tip-Sleeve 3.5mm jack), the Phones port (Tip-Ring-Sleeve 3.5mm jack) and the VHF radio port, a port similar to the TX side of a packet radio interface, allowing the Widget inject audio into the mic jack of a VHF transceiver and control the PTT.

Another feature of the Widget is the ability to use it with internet based telegraph conference bridges, such as the MorseKOB bridge supported by American Morse enthusiasts.  Although that bridge is intended for American Morse, it also supports International Morse and offers, in addition to multi-user QSO channels, broadcast channels at 15, 25 and 35 WPM featuring news of the day using international code, 24/7.  (see https://sites.google.com/site/morsekob/home and http://ad7i.net/main/morsekob-interface/  )

For a teacher-student class scenario, consider a class where all students and the teacher had a Widget that was connected to an internet telegraph conference bridge.  Video conferencing could be used for the verbal/video instruction and interaction, but the Widget would provide a means for all participants (world wide) to have a clear unfettered telegraph path between them to so that all participants could send as well as receive tone Morse code, without “glitches” when operating at 20+ WPM.

An additional feature of the Widget is that it can accept input from multi-mode communications programs that can machine generate Morse code, such as FLDIGI.  FLDIGI can send this information to the Widget over the USB port (via RTS) or over the straight key input with a suitable adapter.  This allows teachers to send machine generated code to students at well controlled speeds and optionally Farnsworthed or Wordsworthed as well.

With that as background, let’s now look at the Widget.

http://ad7i.net/main/wp-content/uploads/CW-Widget-Pictorial-Rev-1-211102.jpg

Figure 1.  Pictorial of the CW Widget Rev 1 Board

Figure 2 – Schematic of CW Widget Rev 2 – Click schematic image above for PDF

Click here for costed Bill of Materials (CBOM) for Rev 2 Board

The Widget is an open-board (no enclosure) device that’s about 3.9 x 3.9 inches (99 x 99 mm).  The ports and controls are as marked in Figure 1 above.  Areas of the board where components are not installed were test areas and are not part of the Widget project.

The USB to Serial converter IC is a CH340C which is an SOIC part with a pin pitch of 50 mils (1.27mm).  I found this IC fairly easy to solder, but some people might find it difficult to hand solder.  All other parts are conventional through-hole parts.  In several places I have used “dual footprints” so that parts from distribution (Digikey, Mouser) can be used as well as parts commonly found on Ebay or AliExpress (speed pot, 3.5mm phone jacks, pot for VHF FM signal level output).

One can buy all the parts needed from distribution, but that would be expensive.  If a club or benevolent company were to kit the project, using least cost sourcing, a kit consisting of a bare PCB and all the components that mount on the board should come in at less than $15 (see the link above, under the schematic, to open the priced BOM).  The board can be assembled and tested in under 2 hours.  The Rev 1 board includes a UPDI programmer function on-board that can be selected via the position of three jumper-shunts, to allow users to upload new firmware to the MCU without any special external programming hardware.  The firmware was developed on the Arduino IDE using Spence Konde’s DX Core https://github.com/SpenceKonde/DxCore (which supports the AVR128DB28 Microcontroller).

Operation

Operation of the Widget is fairly straight forward.  Connect a 5 volt power source to the USB jack (computer, wall wart transformer, etc.).  Connect a paddle to the paddle jack (tip is dot, ring is dash, sleeve is common).  Connect a speaker to the speaker jack (tip and sleeve, ring of this jack is not connected on the board) and/or headphones to the headphone jack (tip is typically left, ring is typically right, and sleeve is common).  One comment about headphones:  I’ve encountered some gaming headsets where the ear transducers are connected in series but the node that interconnects the two transducers is left floating.  In that case you will need to install a shorting shunt at PH9 to ground the ring contact of the phones jack.  This will then allow an audio path from the tip connection of the phones jack through both transducers and then to ground.

With this now in place, operate the paddle.  You should hear tones produced by the speaker and/or headphones.

Speed Control

The speed control is provided by a potentiometer that rotates through an arc of approximately 300 degrees.  The control is a bit unusual in that turning it fully counter-clockwise sets the keyer speed to about 3 WPM.  This is intended to be used only for testing the keyer (does the keyer work correctly in Mode B? does the keyer work correctly in Mode A?, etc). Once the speed control is rotated a little bit clockwise the speed jumps from 3 WPM to 16 WPM. As the control is rotated further clockwise the speed increase is linear with shaft rotation and tops out at about 38 WPM when fully clockwise. There is a bit of a glitch with the “better quality pot” in that at full clockwise rotation the wiper seems to contact ground, resulting in zero volts output, and the speed will drop to 3 WPM!

UP DN Buttons

The UP and DN buttons are multi-purpose buttons and are time dependent.  An action is not taken on a button operation until the button is released.  Button presses that last from 0 to 359 mS are considered “short presses” and are used to control the tone volume output of the Widget in 2 dB steps.  The tone volume control range is 0 to -40 dB.  Button presses that last from 360 ms to 1500 ms are considered “long presses” and are used to control the audio tone frequency in 50 Hz steps.  The audio tone frequency range is from 300 Hz to 1200 Hz. 

Extended duration presses of the UP and DN buttons (longer than 1.5 seconds) are used to save data to EEPROM as well as to make firmware configuration changes to the Widget. When a button is held in the active state for a extended period of time, the LED will flash to indicate how long the operator has held the button active. The LED flashes come at 1.5, 2.5, 3.5 and 4.5 seconds of button press duration. To execute any particular extended duration press you will be told to hold the button until you see a specific number of LED flashes. When you have observed the specified number of flashes, release the button and that particular function will execute.

Summary of Button Timing and Functions

The Widget can be thought to be in one of two modes: Keyer Mode or Configuration Mode. When in Configuration mode the Widget will accept user commands to configure the Widget and the keyer function will be inoperative. This section provides a quick summary of the button functions for both modes.

When in Keyer Mode

UP Short Press (0-360 ms): volume up 2 dB.
DN Short Press (0-360 ms): volume down 2 dB
UP Long Press (360-1500 ms): tone frequency up 50 Hz,
DN Long Press (360-1500 ms): tone frequency down 50 Hz.
UP Held for 1 LED Flash (1.5 to 2.5 sec): Save current tone volume and tone frequency data to EEPROM. Blink LED 2 times.
DN Held for 1 LED Flash (1.5 to 2.5 sec): read configuration data (including stored tone volume and stored tone frequency) from EEPROM and use those data as current values for the Widget. Blink LED 3 times.
UP Held for 2 LED Flashes (2.5 to 3.5 sec): copy Default Configuration bits, Default tone volume and Default tone frequency to EEPROM. Blink LED 5 times.
DN Held for 2 LED Flashes (2.5 to 3.5 sec): enter configuration mode, LED displays Flutter aspect.
UP Held for 3 LED Flashes (3.5 to 4.5 sec): no operation.
DN Held for 3 LED Flashes (3.5 to 4.5 sec): diagnostic – break checksum in EEPROM. Blink LED 7 times.

When in Configuration Mode

Short or Long Press (0-1500 ms) UP: next config bit is 1 or ON.
Short or Long Press (0-1500 ms) DN: next config bit is 0 or OFF.
After 8 bits have been entered the configuration bits, the tone volume and tone frequency are stored in EEPROM. The LED will then flash the configuration bits stored in EEPROM as an 8 bit value: short flash is 1, long flash is 0, C7 first, C0 last. The Widget will then automatically return to Keyer mode.
UP Held for 1 LED Flash (1.5 to 2.5 sec): no action. [[ +++change this because flutter is active]]
DN Held for 1 LED Flash (1.5 to 2.5 sec): [[+++change description of 1 LED flash because flutter is active]]. Exit Configuration Mode with no changes to configuration bits or EEPROM – consider this to be a Cancel Configuration command. LED will display solid ON for two seconds to confirm cancel action and will then show the firmware version number as an 8 bit value on the LED: short flash is 1, long flash is 0, MSB first, LSB last.

Details of Button Operations

Saving Current Volume and Tone Frequency Settings to EEPROM

If you want to save the current tone volume and tone frequency values to EEPROM, but not change any of the configuration bits, then press and hold the UP button until you see the LED flash once, then release the UP button. This will cause the current tone volume and tone frequency information to be stored in the EEPROM. The LED will flash 2 times.

Configuration

There are several ways to “configure” the CW Widget. The configuration process means the setting of the configuration of bits to determine the Widget’s function (Iambic mode, tone envelope rise and fall time, etc) as well as initial values for tone volume and tone frequency. In most cases, changing the configuration bits will also cause them to be stored in the MCU’s EEPROM (memory that is retained when the power is disconnected). However, changes to the tone volume and tone frequency won’t be stored in EEPROM until you take a specific action to cause them to be saved.

Establishing Default Configuration

The Default Configuration is a standard set of settings that are selected by the software programmer and are then fixed at compile time, causing them to be stored in the firmware. The Default Configuration consists of a starting point for the tone volume, tone frequency, as well as configuration bits that determine the keyer type, the tone envelope rise and fall time and other items. There are two ways to cause the Widget to load the Default Configuration as the current configuration. First is by pressing and holding the UP button until you observe the LED flash twice, then release the UP button. When you release the button the LED will be off for about a second and then you will see 5 flashes on the LED to indicate that you have commanded the Widget to load Default Configuration data into the Widget and to store that same data in the EEPROM for use next time the Widget is powered up. The second method is automatic, and is not under the user’s control. When power is applied to the Widget the contents of the EEPROM are compared to a validation value (checksum) also stored in the EEPROM. If the validation is incorrect, then the Default Configuration values that are stored in the Widget’s program memory will be copied to the EEPROM (with the correct validation variable). Additionally, the LED will display an occulting indication (on solid with momentary off periods) to inform the operator of the invalid EEPROM data and that the EEPROM has been corrected by storing default values. To stop the broken flutter lamp indication you can enter the Configuration Mode or momentary remove power and then reapply power.

User Controlled Configuration

The CW Widget provides for user configuration by means of configuration bits that the operator can set or clear.  To enter the configuration mode press and hold the DN button until you see the LED flash twice and then release the DN button. At this point you will be in the configuration mode and the LED will display a “flutter” aspect (50 ms On, 50 ms Off, repeated).  The operator then enters eight (8) configuration bits by means of short presses of either the UP button (for 1 or ON) *or* DN (for 0 or OFF). One button press equals one configuration bit and a total of eight button presses are needed to enter the eight configuration bits..  The first bit entered is C7 and the last bit entered is C0.  Immediately after the eighth button press, the configuration bits you just entered, as well as the current tone volume value and the current tone frequency value will be stored in the EEPROM for future use. Additionally, after you enter the 8th configuration bit the LED will go dark for approximately 500 ms and then will flash eight times to show the status of the configuration bits it saved to EEPROM. The bits are flashed on the LED with C7 first and C0 last, a short flash indicates On or 1, while a long flash indicates Off or 0. After these eight configuration bits have been flashed on the LED the Widget will have left the configuration mode and returned to keyer mode.

The default configuration bits result in the following function settings:

  • Keyer mode is Iambic B
    • Medium Hard keying (tone envelope)
    • Right handed paddle\
    • RTS/DSR keying is enabled
    • The default tone volume is -18 dB (18 dB down from maximum volume) and
      • The default tone frequency is 650 Hz

The configuration bits have the following meanings.

Bits C7 and C6 determine keyer mode:

C7  C6
0   0   Mode A - Iambic A
0   1   Mode B - Iambic B (*** DEFAULT VALUE)
1   0   Mode C - Non-Iambic
1   1   Mode D - Bug mode

Bits C5 and C4 determine tone envelop rise and fall time. Short is hard keying, long is soft keying.

C5  C4
0   0   Three tone cycles, hard keying
0   1   Six tone cycles, medium hard keying (*** DEFAULT VALUE))
1   0   Nine tone cycles, medium soft keying
1   1   Twelve cycles, soft keying

Bit C3 causes the paddle input to be reversed when set

C3
0   Normal Paddle input (right hand operation (*** DEFAULT VALUE)
1   Reverse Paddle input (left hand operation)

Bit C2 causes the RTS and DSR keying to be disabled when set

C2
0   Keying functions via RTS and DSR are enabled (*** DEFAULT VALUE)
1   Keying functions via RTS and DSR are disabled

Configuration bits C1 and C0 are reserved and should be set to zero.

As stated above, the default values configure the keyer for Iambic B, Medium Hard keying, paddle right hand, RTS/DSR keying is enabled, as shown in the table below.

C7  C6  C5  C4  C3  C2  C1  C0
 0   1   0   1   0   0   0   0

The default tone volume and default tone frequency are saved in other registers and are not part of the configuration bits.

An Example of How to Manually Set Configuration

It may be helpful to outline a detailed example of how to set the configuration to your liking. First, operate the paddles and adjust the volume to a comfortable level (short presses of UP and DN buttons). Then, assuming you don’t care for the current tone frequency and want to change it, then give a slightly long press to the UP or DN buttons to change the frequency (slightly long presses of UP and DN – 360ms to 1.2 seconds — just hold the buttons a little longer than normal and that should get you to the right duration). The frequency changes are in 50 Hz increments and they won’t go below 300 Hz or above 1200 Hz.

Next, determine the type of keyer you want (Iambic A, Iambic B, C Non-Iambic, or D bug). From the C7-C6 bit values listed above write on a piece of paper the UP or DN sequence needed. If you wanted Iambic A then the sequence for that would be:

DN  DN

Next, determine the type of tone envelop keying you want. I personally like Nine tone cycles, medium soft keying. From the C5-C4 bit values listed above write on a piece of paper the UP or DN sequence needed and do so to the right of the C7-C6 values that you already wrote down such that the sequence so far would be:

DN  DN  UP  DN

From the C3 bit values listed above write on a piece of paper the UP or DN sequence needed for right or left handed paddle operation, and do so to the right of the C7-C4 values that you already wrote down. If you wanted left handed paddle operation the sequence for that would be UP and when we add that to the right of the C7-C4 data, such that the sequence so far would be:

DN  DN  UP  DN  UP

From the C2 bit values listed above write on a piece of paper the UP or DN sequence needed for RTS/DSR operation, and do so to the right of the C7-C3 values that you already wrote down. If you wanted to enable RTS/DSR keying then the sequence for that would be UP and when we add that to the right of the C7-C3 data, such that the sequence so far would be:

DN  DN  UP  DN  UP  UP

Because C1 and C0 are reserved for future use (not used yet), those values should both be zero, and the sequence for that would be DN DN and when we add that to the right of the C7-C2 data, then the whole 8 bit sequence would be:

DN  DN  UP  DN  UP  UP  DN  DN

Next, to enter the configuration mode press and hold the DN button until you see the LED flash twice, then release the DN button. When the Widget is in the Configuration mode the LED will display a “flutter” aspect (50 ms On, 50 ms Off, repeated). Now it’s time to enter the eight bits. I find an easy way to do this is to put my left index finger on the UP/DN sequence I wrote on paper, starting at the left side of the sequence, then use my right index finger to enter the data on the UP and DN buttons. To enter the data I would press DN, DN, UP, DN, UP, UP, DN and finally DN to end the sequence. Use short presses and there must be a total of eight button presses. Immediately after the eighth button press, the configuration bits, the current tone volume value and the current tone frequency value will be stored in the EEPROM. The EEPROM is then read back and the EEPROM data that was just stored (and read back) will be used for the Widget’s configuration bits as well as the the tone volume and tone frequency value. Additionally, after you enter the 8th configuration bit the LED will go dark for approximately 500 ms and then will flash eight times to show the configuration bits it saved to EEPROM. The bits are flashed on the LED with C7 first and C0 last, a short flash indicates On or 1, while a long flash indicates Off or 0.

Canceling Configuration Mode – Show Firmware Version Number

If during the configuration process you wish to cancel that operation without changing any configuration values (maybe you inadvertently entered the wrong configuration data), press and hold the DN button until you see the LED flutter sequence change state and then release the DN button. The Cancel operation will be confirmed by the LED being on solid for 2 seconds to confirm cancel function followed by 8 bursts of the LED to show the firmware version number as an 8 bit value. When 8 bits of data are shown on the LED, short pulses mean 1 or ON, and long pulses mean 0 or OFF. Data are display most significant bit first and least significant bit last.

EEPROM Retention Failure

As mentioned earlier, the user data (tone volume, tone frequency and configuration bits) are stored in EEPROM within the MCU and are validated via a checksum calculated across all data stored in the EEPROM.  At power on, values are read from the EEPROM in order to set the starting point for tone volume, tone frequency and configuration bits.  If the EEPROM checksum is not valid then the Widget will load default values and set the LED to “broken flutter” (6 repetitions of 50 mS on, 50 mS off, then 600 ms off, repeated) to indicate the checksum failure.  Should this ever happen the EEPROM will be loaded with default values and the checksum in the EEPROM will be corrected.  You can decide for yourself whether you should load new configuration values or simply stay with the defaults.  Note that because the checksum will automatically be corrected the broken flutter indication will likely only occur once.  If it happens repeatedly then please report the issue to the development team. To stop the broken flutter lamp indication you can enter the Configuration Mode or momentary remove power and then reapply power.

Internet Telegraph Conference Bridge Setup and Operation

Background

The CW Widget, as initially coded, is intended to work on the MorseKOB internet based telegraph conference bridge (links provided previously).  The MorseKOB system makes use of a very ingenious program that runs on a PC under Windows to connect devices like the Widget to the remote server that provides the telegraph conference bridge function.

The MorseKOB system was designed for and is predominantly used with landline telegraph instruments (straight keys, bugs and clickity clack sounders).  To simulate typical landline telegraph circuits the MorseKOB system is designed function like a wireline telegrah system where the idle state was achieved by keeping the key contacts closed.  This would normally result in devices such as the Widget generating a continuous tone when the circuit was idle.  To make the Widget compatible with the MorseKOB system, the Widget will send a signal to MorseKOB to simulate a closed key whenever the keyer output has been idle for more than six seconds.  On the receive side the Widget will also interpret a far-end key closure that lasts for more than one second as the idle state and will turn off the Widget’s tone generator.  The net result of these two functions is that when a Widget user stops sending for more than six seconds (or immediately after you quick press the OP button), the far end Widgets will produce a solid tone for one second, which stops when their RX idle timer kicks in.  After this state is achieved, the next sending station should send a single dit to reset that Widget’s TX idle timer (and the far end Widget’s RX timer).  After a delay of approximately 500 ms the sending station can continue sending code.

At this point you should jump over to another page on this website that discusses some of the idiosyncrasies of the Windows MorseKOB program. You can see it at this link.

Setting up MorseKOB on your Windows computer is outlined in the previous links.  For initial testing, don’t use your oldest Windows computer. Use something modern until you are familiar with the operation of the Widget and the MorseKOB server at medium speed (25 WpM). One you have found that to work well, then you can experiment with more lethargic computers. The reason I mention this is that when I did my initial testing with a 10 year old lap top I found that the received tone elements had an occasional wobble to them. Moving the Widget to a 5 year old desktop computer caused the wobble to vanish.

Also, to avoid initial problems and frustrations, restart you computer and only open applications as necessary to use the Widget, at least for initial testing. When you have set up your Widget and PC to work with MorseKOB go to wire 180 and click CONNECT.  Within five seconds you should hear International Morse Code at 15 WPM. Wire 181 has the same content at 25 WPM and wire 182 has the same content at 35 WPM.

There are 32,000 wires available on MorseKOB.  A list of wires currently in use can be viewed at http://mtc-kob.dyndns.org/    In general, wires 2xx are used for password protected communications, to form private send/receive wires as well as wires where the sender must have a password but anyone can copy.  I’d suggest using wire numbers 9xx for those using International Morse Code for QSOs (that advice may change in the future).  To choose a wire number first consult http://mtc-kob.dyndns.org/ to see what wires are active.  Choose a wire number that is not currently in use, unless you intend to join a QSO already in progress.

When it comes time to communicate with another station via MorseKOB, first test your setup by listening press on wire 180 (or 181 or 182).  Then disconnect from that wire.  Next, ensure that your station ID info is in the box above the WPM window.  The text is free form, but I’d recommend that you use your callsign (or initials) your first name and your state/providence/country).  Set the MorseKOB WPM value to something close to where you think you will be operating.  It only affects the decoded text display in the upper left box of the MorseKOB window, and that decoded window is interpreting the code as American Morse.  However, the letters A, B, D, E, G, H, I, K, M, N, S, T, U and V are the same in American Morse and International Morse.  So the words or groups “VVV”, “THE”, “AND”, “DIG”, “HI”, “GET”, “BEG”, “HIM”, “TEA”, “BEN”, “STEVE” and “DAD” should be printable.  Next, on the MorseKOB window set the wire number as desired and click CONNECT.  In a few seconds you should see your station ID data be reproduced it the upper right box of the MorseKOB window (and any other station on your selected wire).  Go back to http://mtc-kob.dyndns.org/  and you should see your station listed on the wire you selected (and any other stations on that wire).

Now Send on the Wire

This section outline how a successful wire bridge connection would work. If you don’t get these results, then jump down below to Trouble Shooting.

Now it’s time to send.  Un-check the “Circuit Closer” box. You should only need to do that once after you have started the MorseKOB program.  But the important thing to keep in mind is that in order to be able to send code from your Widget the Circuit Closer box must *not* be checked.

Now that you are set up to send, send a few Vs from your paddle, bug or straight key. You should see your decoded characters in the upper right part of the MorseKOB screen. Keep in mind that the decoding function is expecting American Morse (not international) for the decoding process. So only those signals that are the same in American and International codes ( A, B, D, E, G, H, I, K, M, N, S, T, U and V) will “decode” correctly. But that’s just for the internal decoder. Whatever you send on the wire, whether it’s International, American or Wabun (Japaneses Morse), it will go over the wire timed as you keyed, even if the decoder on the program window prints gibberish.

When you have finished your transmission and you would like to let other stations send to you, you need to release the circuit (remember, the system is emulating a wireline telegraph). To release the circuit give a quick press to the OP button and that will release the circuit (and send a 1 second tone to all the other stations). Alternatively, if your key is idle for six seconds the Widget pretend that you pressed to OP button and it will automatically release the circuit for you (whether you wanted it to or not).

Troubleshooting Transmission Problems

Most problems come down to a couple of issues.

If you get a message when you start MorseKOB that says that the Serial Port you want to use is not available (but you know it is available), that usually means that a hidden instance of the MorseKOB program is still running on your PC. You should be able to see in Task Manager, but I haven’t been able to kill it when I find it. If this happens to you (and it shouldn’t be frequent) you will need to restart your computer to get a fresh start.

When you send Vs on your key do they appear in the upper right box on the MorseKOB window?  Does anything (even gibberish) show up in the upper left box?  If not, use your PC mouse to put a check in the Circuit Closer box, count to three, and then uncheck the box, and try sending again.  If you do get any text in the upper left box of the MorseKOB window ask your correspondents if they got your Vs, or whatever it was you were sending.  Next press your OP button (to release the wire) and have them send to you.  If you both hear each other’s sending then try an interactive QSO and see how it goes.  Keep in mind that when you are done sending, after you send your ending “K”, you will need to give a quick press of the OP button (or wait for the six second timeout) for the Widget to close the circuit for you, so that other stations on the circuit may send to you.  That one second tone other stations hear when you press the OP button is an artifact of using tone CW on a closed loop wireline system.

FLDIGI

FLDIGI can be configured to send CW on/off keying to external devices via a serial port using either the RTS lead or the DTR lead. Serial ports are now implemented with a USB to Serial converter, using devices such as the FTDI chip, a CP2102N or a CH340x. The CW Widget can accept CW keying input from FLDIGI either over the USB link on the RTS lead or via the straight key input. If an instructor is sending CW over the internet via a conference bridge like MorseKOB, then the USB port is committed to internet connection via computer and is not available for use by FLDIGI. In that case FLDIGI must be connected to the Widget’s straight key input via an open drain or open collector driver.

The RTS output of the USB-Serial converter IC is active low (tone on when the RTS output is low, no tone when high). An easy way to achieve that is to double invert the RTS signal with two cascaded 2n3904 transistors, with the second transistor providing the open collector output that goes to the Widget’s straight key input.

Figure 3 – Schematic Excerpt of Open Collector Buffer for RTS*

To configure FLDIGI for CW to appear on a serial port RTS lead, open the FLDIGI configuration menu: Configure->Configure_Dialog->CW->Modem->CW->DTR/RTS_Keying. At this window ensure that both SHARE radio buttons are *NOT* checked. At the CW_Keyline pull down select RTS. At the box for Use_Separate_Keying_Serial_Port click on the pull-down arrow and selected the COM port of your USB to Serial converter device. Then click Connect. You should then see a small yellow indicator at the left side of the Connect button. With this accomplished any CW send from FLDIGI should cause the Widget to produce tones at the headphone and speaker outputs, as well as send those key closures to the internet telegraph conference bridge, if the Widget and associated PC are configured to do so.

VHF/UFH FM Transceiver Port

The Widget provides a convenient port for connecting to a VHF/UHF FM transceiver to transmit tone modulated CW over an FM radio channel. Automatic PTT control is provided with a two second hang time. With this port is connected to an FM transceiver, any source that causes the Widget to produce CW tones will also activate the transceiver’s PTT and modulate the carrier. This can be useful for demonstrations of CW to the public (without resorting to HF radios operating on 80 meters), training purposes and CW ragchews on your local repeater — now that should raise some eyebrows!

Assembly

Click here for a PDF with the assembly instructions for the Rev 2 PC boards.

—ooOoo—