Loading ...
Sorry, an error occurred while loading the content.

Improving the CW experience with homebrew SDR

Expand Messages
  • David Turnbull
    At Hamvention and SEA-PAC this year I had a chance to talk to a lot of hams about their interest in SDR. Most of the time I was answering questions but I also
    Message 1 of 15 , Aug 1 8:48 PM
    • 0 Attachment
      At Hamvention and SEA-PAC this year I had a chance to talk to a lot of hams about their interest in SDR. Most of the time I was answering questions but I also got a chance to ask a lot of folks about their experience. One of the most interesting things I learned was how good CW ops use SDR transceivers.

      Some of the newer SDRs have moved the DSP out of the computer and into FPGAs. This is obviously an excellent solution to the latency problem. It's also very expensive. For one of these devices the yearly software maintenance costs more than a Peaberry or SoftRock.

      It turns out a workable solution for homebrew is very simple. Use a keyer that generates its own sidetone. Even if the signal on the air is 50ms behind, you'll not notice. I decided to buy a keyer with a good sidetone generator that had open source firmware I could hack on. I couldn't find one. Most of the closed source keyers have pleasant sidetone. The open source projects use PWM (square waves).

      So this inspired me to create a keyer shield for Arduino. I used a DAC, OpAmp, speaker, buttons, and an LCD. I created software to go with it which is now on GitHub and open source. The keyer shield can be built on an Arduino prototype board. I'm also selling a kit with a custom PCB on AE9RB.com.

      The software is currently very usable. I plan on adding more features to it this month like contest numbering and others things which most people won't use everyday. Before this next code sprint begins, the question I have for everyone here, especially the CW gurus, is...

      What would you like to see in a keyer to make it more useful for homebrew SDR?

    • Sid Boyce
      ... Hi David, I use a decades old Curtis keyer using a CMOS chip with the HiQSDR and it works well. It connects into the Altera FPGA, the keyer itself has
      Message 2 of 15 , Aug 2 1:45 AM
      On 02/08/13 04:48, David Turnbull wrote:
       
      At Hamvention and SEA-PAC this year I had a chance to talk to a lot of hams about their interest in SDR. Most of the time I was answering questions but I also got a chance to ask a lot of folks about their experience. One of the most interesting things I learned was how good CW ops use SDR transceivers.

      Some of the newer SDRs have moved the DSP out of the computer and into FPGAs. This is obviously an excellent solution to the latency problem. It's also very expensive. For one of these devices the yearly software maintenance costs more than a Peaberry or SoftRock.

      It turns out a workable solution for homebrew is very simple. Use a keyer that generates its own sidetone. Even if the signal on the air is 50ms behind, you'll not notice. I decided to buy a keyer with a good sidetone generator that had open source firmware I could hack on. I couldn't find one. Most of the closed source keyers have pleasant sidetone. The open source projects use PWM (square waves).

      So this inspired me to create a keyer shield for Arduino. I used a DAC, OpAmp, speaker, buttons, and an LCD. I created software to go with it which is now on GitHub and open source. The keyer shield can be built on an Arduino prototype board. I'm also selling a kit with a custom PCB on AE9RB.com.

      The software is currently very usable. I plan on adding more features to it this month like contest numbering and others things which most people won't use everyday. Before this next code sprint begins, the question I have for everyone here, especially the CW gurus, is...

      What would you like to see in a keyer to make it more useful for homebrew SDR?

      Hi David,
      I use a decades old Curtis keyer using a CMOS chip with the HiQSDR and it works well.
      It connects into the Altera FPGA, the keyer itself has built-in sidetone and a speaker.

      There is also the K3NG keyer using an Arduino.
      73 ... Sid.


      -- 
      Sid Boyce ... Hamradio License G3VBV, Licensed Private Pilot
      Emeritus IBM/Amdahl Mainframes and Sun/Fujitsu Servers Tech Support
      Senior Staff Specialist, Cricket Coach
      Microsoft Windows Free Zone - Linux used for all Computing Tasks
      
    • Graeme Jury
      Hi Chris, I also have a HiQSDR (and softrock) and my homebrew keyer is a touch keyer with a PIC chip. I have written my software to use the the PWM output to
      Message 3 of 15 , Aug 2 4:10 AM
      • 0 Attachment
        Hi Chris,

        I also have a HiQSDR (and softrock) and my homebrew keyer is a touch
        keyer with a PIC chip. I have written my software to use the the PWM
        output to generate a sine sidetone and feed it into a TDA2822 in bridge
        mode for ultra low current consumption. I make the software start the
        tone at 0 V dc to avoid audio clicks but will also need to do a little
        shaping of the rising and falling edges.

        A latency of 150 mSecs would be more realistic for most sdr's and some
        at 250 I suspect.

        73 Graeme ZL2APV
      • digital_steve_k1rf
        ... Hi David. I said hello to you briefly at the 13 Hamvention. A keyer is a nice solution to the SDR delay problem. With regard to keyer features,
        Message 4 of 15 , Aug 2 4:53 AM
        • 0 Attachment
          > What would you like to see in a keyer to make it more useful for homebrew
          > SDR?
          >
          > 73 David http://AE9RB.com/
          >
          Hi David. I said hello to you briefly at the '13 Hamvention. A keyer is a nice solution to the SDR "delay" problem. With regard to keyer features, certainly it would need all the normal contest features with 8 readily accessible memories. It should provide for a GOOD CW tone. Many keyers use a simple square wave driving a piezo transducer. I would much prefer a real linear power amp capable of at least 1 watt output bridge-type-load amplifier such as a TDA7052a driving a real speaker and wave-shaped sine wave output as well as an adjustable tone frequency. The tone should be loud and smooth sounding. Loud so it is useable in real contests in an open air environment such as field day with or without the use of headphones.
          A lookup table could be used for waveshaping of the tone. For some reason, a good deal of attention is paid to waveshaping at RF. Indeed the ARRL always publishes spectral response of tranmitter performance at 50WPM in their transceiver reviews. Why shouldn't a keyer sound like an actual received CW signal? This has always been one of my pet peeves with most keyers on the market. I can email you a 128 point waveshape table if you wish.

          Regards,
          "Digital Steve", K1RF
        • David Turnbull
          Hi Steve, My keyer project already has clickless sine waves and a real speaker. This is done with a MCP4921 DAC so any frequency and shape you want may be
          Message 5 of 15 , Aug 2 10:32 AM
          • 1 Attachment
          • 60 KB
          Hi Steve,

          My keyer project already has clickless sine waves and a real speaker. This is done with a MCP4921 DAC so any frequency and shape you want may be generated from software. Attached is a photo of the waveform.

          It's only 0.25W but I was showing it off to the local maker club which meets in a pub and it could still be easily heard when the place got crowded and they turned up the music. Headphones are crazy loud and a jack which cuts off the speaker is included.



          On Fri, Aug 2, 2013 at 4:53 AM, digital_steve_k1rf <sbdick@...> wrote:

          > What would you like to see in a keyer to make it more useful for homebrew
          > SDR?
          >
          > 73 David http://AE9RB.com/
          >
          Hi David. I said hello to you briefly at the '13 Hamvention. A keyer is a nice solution to the SDR "delay" problem. With regard to keyer features, certainly it would need all the normal contest features with 8 readily accessible memories. It should provide for a GOOD CW tone.  Many keyers use a simple square wave driving a piezo transducer.  I would much prefer a real linear power amp capable of at least 1 watt output bridge-type-load amplifier such as a TDA7052a driving a real speaker and wave-shaped sine wave output as well as an adjustable tone frequency. The tone should be loud and smooth sounding.  Loud so it is useable in real contests in an open air environment such as field day with or without the use of headphones.
          A lookup table could be used for waveshaping of the tone. For some reason, a good deal of attention is paid to waveshaping at RF. Indeed the ARRL always publishes spectral response of tranmitter performance at 50WPM in their transceiver reviews.  Why shouldn't a keyer sound like an actual received CW signal?  This has always been one of my pet peeves with most keyers on the market. I can email you a 128 point waveshape table if you wish.

          Regards,
          "Digital Steve", K1RF


        • David Turnbull
          Hi Sid, Do you use the K3NG software? You can buy the nanoKeyer board for running this which is about the same price as mine. However, it s using square waves
          Message 6 of 15 , Aug 2 10:47 AM
          • 0 Attachment
            Hi Sid,

            Do you use the K3NG software? You can buy the nanoKeyer board for running this which is about the same price as mine. However, it's using square waves into a piezo and doesn't include an LCD.

            73 David 
            http://AE9RB.com/


            On Fri, Aug 2, 2013 at 1:45 AM, Sid Boyce <sboyce@...> wrote:
            Hi David,
            I use a decades old Curtis keyer using a CMOS chip with the HiQSDR and it works well.
            It connects into the Altera FPGA, the keyer itself has built-in sidetone and a speaker.

            There is also the K3NG keyer using an Arduino.
            73 ... Sid.

          • Sid Boyce
            Hi David, I have tried building it using arduino on openSUSE but I get syntax errors that I have not looked at to see if I can fix them. 73 ... Sid. ... --
            Message 7 of 15 , Aug 2 1:14 PM
            • 0 Attachment
              Hi David,
              I have tried building it using "arduino" on openSUSE but I get syntax errors that I have not looked at to see if I can fix them.
              73 ... Sid.

              On 02/08/13 18:47, David Turnbull wrote:
               
              Hi Sid,

              Do you use the K3NG software? You can buy the nanoKeyer board for running this which is about the same price as mine. However, it's using square waves into a piezo and doesn't include an LCD.

              73 David 
              http://AE9RB.com/


              On Fri, Aug 2, 2013 at 1:45 AM, Sid Boyce <sboyce@...> wrote:
              Hi David,
              I use a decades old Curtis keyer using a CMOS chip with the HiQSDR and it works well.
              It connects into the Altera FPGA, the keyer itself has built-in sidetone and a speaker.

              There is also the K3NG keyer using an Arduino.
              73 ... Sid.



              -- 
              Sid Boyce ... Hamradio License G3VBV, Licensed Private Pilot
              Emeritus IBM/Amdahl Mainframes and Sun/Fujitsu Servers Tech Support
              Senior Staff Specialist, Cricket Coach
              Microsoft Windows Free Zone - Linux used for all Computing Tasks
              
            • kh2br
              That is a very good idea to overcome the latency problem. If you come up with a real nice cw keyer, think about adding automatic speed detection that will
              Message 8 of 15 , Aug 2 10:00 PM
              • 0 Attachment
                That is a very good idea to overcome the latency problem.
                If you come up with a real nice cw keyer, think about adding automatic speed detection that will adjust the keyer speed.
                I haven't seen that yet.

                --- In softrock40@yahoogroups.com, Sid Boyce <sboyce@...> wrote:
                >
                > Hi David,
                > I have tried building it using "arduino" on openSUSE but I get syntax
                > errors that I have not looked at to see if I can fix them.
                > 73 ... Sid.
                >
                > On 02/08/13 18:47, David Turnbull wrote:
                > > Hi Sid,
                > >
                > > Do you use the K3NG software? You can buy the nanoKeyer board for
                > > running this which is about the same price as mine. However, it's
                > > using square waves into a piezo and doesn't include an LCD.
                > >
                > > 73 David http://AE9RB.com/ <http://ae9rb.com/>
                > >
                > >
                > > On Fri, Aug 2, 2013 at 1:45 AM, Sid Boyce <sboyce@...
                > > <mailto:sboyce@...>> wrote:
                > >
                > > Hi David,
                > > I use a decades old Curtis keyer using a CMOS chip with the HiQSDR
                > > and it works well.
                > > It connects into the Altera FPGA, the keyer itself has built-in
                > > sidetone and a speaker.
                > >
                > > There is also the K3NG keyer using an Arduino.
                > > 73 ... Sid.
                > >
                > >
                >
                >
                > --
                > Sid Boyce ... Hamradio License G3VBV, Licensed Private Pilot
                > Emeritus IBM/Amdahl Mainframes and Sun/Fujitsu Servers Tech Support
                > Senior Staff Specialist, Cricket Coach
                > Microsoft Windows Free Zone - Linux used for all Computing Tasks
                >
              • grahamg3zod
                I ve never understood why SDR CW software can t generate an audio sidetone directly in response to key input(s) and hence have no noticable latency; instead
                Message 9 of 15 , Aug 3 3:01 AM
                • 0 Attachment
                  I've never understood why SDR CW software can't generate an audio sidetone directly in response to key input(s) and hence have no noticable latency; instead software authors choose to cause sidetone latency doing it the convoluted way by decoding the I/Q audio signals from the TX.

                  73 de Graham G3ZOD

                  --- In softrock40@yahoogroups.com, "kh2br" <rholsti@...> wrote:
                  > That is a very good idea to overcome the latency problem.
                  > If you come up with a real nice cw keyer, think about adding automatic speed detection that will adjust the keyer speed.
                  > I haven't seen that yet.
                  >
                  > --- In softrock40@yahoogroups.com, Sid Boyce <sboyce@> wrote:
                  > >
                  > > Hi David,
                  > > I have tried building it using "arduino" on openSUSE but I get syntax
                  > > errors that I have not looked at to see if I can fix them.
                  > > 73 ... Sid.
                • grahamg3zod
                  I meant to the TX , but the principle is the same. 73 de Graham G3ZOD
                  Message 10 of 15 , Aug 3 3:04 AM
                  • 0 Attachment
                    I meant "to the TX", but the principle is the same.

                    73 de Graham G3ZOD

                    --- In softrock40@yahoogroups.com, "grahamg3zod" <grahamg3zod@...> wrote:
                    >
                    > I've never understood why SDR CW software can't generate an audio sidetone directly in response to key input(s) and hence have no noticable latency; instead software authors choose to cause sidetone latency doing it the convoluted way by decoding the I/Q audio signals from the TX.
                    >
                    > 73 de Graham G3ZOD
                    >
                    > --- In softrock40@yahoogroups.com, "kh2br" <rholsti@> wrote:
                    > > That is a very good idea to overcome the latency problem.
                    > > If you come up with a real nice cw keyer, think about adding automatic speed detection that will adjust the keyer speed.
                    > > I haven't seen that yet.
                    > >
                    > > --- In softrock40@yahoogroups.com, Sid Boyce <sboyce@> wrote:
                    > > >
                    > > > Hi David,
                    > > > I have tried building it using "arduino" on openSUSE but I get syntax
                    > > > errors that I have not looked at to see if I can fix them.
                    > > > 73 ... Sid.
                    >
                  • digital_steve_k1rf
                    ... Great!! Looks like a nice product!! Dightal Steve , K1RF
                    Message 11 of 15 , Aug 3 5:27 AM
                    • 0 Attachment
                      --- In softrock40@yahoogroups.com, David Turnbull <dturnbull@...> wrote:
                      >
                      > Hi Steve,
                      >
                      > My keyer project already has clickless sine waves and a real speaker.
                      > 73 David http://AE9RB.com/ <http://ae9rb.com/>
                      >
                      Great!! Looks like a nice product!!
                      "Dightal Steve", K1RF
                    • David Turnbull
                      ... How would speed detection in a keyer work? I ve never heard of such a thing and wouldn t know where to begin. Do you have the math worked out or a proof of
                      Message 12 of 15 , Aug 3 9:21 AM
                      • 0 Attachment
                        On Fri, Aug 2, 2013 at 10:00 PM, kh2br <rholsti@...> wrote:
                        That is a very good idea to overcome the latency problem.
                        If you come up with a real nice cw keyer, think about adding automatic speed detection that will adjust the keyer speed.
                        I haven't seen that yet.

                        How would speed detection in a keyer work? I've never heard of such a thing and wouldn't know where to begin. Do you have the math worked out or a proof of concept running?

                      • kh2br
                        I don t know jack about programing but was only floating a idea. There are some external devices that decode cw. It could be possible to detect the speed of a
                        Message 13 of 15 , Aug 4 7:30 AM
                        • 0 Attachment
                          I don't know jack about programing but was only floating a idea.
                          There are some external devices that decode cw. It could be possible to detect the speed of a received cw signal. This speed detection could be used to automatically adjust your cw keyers speed to match the other operator. Its just a wild idea, or how about another idea that would detect a bad fist and turn it into something readable.
                          Or a slow one that would save slow sending into a memory and play it back for you at a faster speed. Its apparent that I have nothing else to do to then come up with this useless stuff.

                          Robert KH2BR

                          --- In softrock40@yahoogroups.com, David Turnbull <dturnbull@...> wrote:
                          >
                          > On Fri, Aug 2, 2013 at 10:00 PM, kh2br <rholsti@...> wrote:
                          >
                          > > That is a very good idea to overcome the latency problem.
                          > > If you come up with a real nice cw keyer, think about adding automatic
                          > > speed detection that will adjust the keyer speed.
                          > > I haven't seen that yet.
                          >
                          >
                          > How would speed detection in a keyer work? I've never heard of such a thing
                          > and wouldn't know where to begin. Do you have the math worked out or a
                          > proof of concept running?
                          >
                          > 73 David http://AE9RB.com/
                          >
                        • Bill Cromwell
                          ... Hi Robert, Some of those ideas might be useful one time or another. But you ain t going to find anything that can sort out truly *bad* fists. If the other
                          Message 14 of 15 , Aug 4 7:56 AM
                          • 0 Attachment
                            On 08/04/2013 10:30 AM, kh2br wrote:
                            >
                            > I don't know jack about programing but was only floating a idea.
                            > There are some external devices that decode cw. It could be possible
                            > to detect the speed of a received cw signal. This speed detection
                            > could be used to automatically adjust your cw keyers speed to match
                            > the other operator. Its just a wild idea, or how about another idea
                            > that would detect a bad fist and turn it into something readable.
                            > Or a slow one that would save slow sending into a memory and play it
                            > back for you at a faster speed. Its apparent that I have nothing else
                            > to do to then come up with this useless stuff.
                            >
                            > Robert KH2BR
                            >
                            Hi Robert,

                            Some of those ideas might be useful one time or another. But you ain't
                            going to find anything that can sort out truly *bad* fists. If the other
                            ham sends "flibbledygumper##93@!" all run together your machine is also
                            going to read "flibbledygumper##93@!" (if it reads anything at all).
                            Even the Google translator isn't going to help. How about detecting a
                            bad fist and just turning off the radio/turning on the TV? <evil grin>

                            73,

                            Bill KU8H
                          • Sid Boyce
                            Both this version and K3NG_Arduino_Keyer_2013071601 give the same errors on openSUSE and Kubuntu. The prog_uchar error fix by including
                            Message 15 of 15 , Aug 5 4:35 AM
                            • 0 Attachment
                              Both this version and K3NG_Arduino_Keyer_2013071601 give the same errors on openSUSE and Kubuntu.

                              The "prog_uchar" error fix by including "-D__PROG_TYPES_COMPAT__" as recommended in header file
                              "avr/pgmspace.h" did not work.

                              Other errors follow such as EEPROM and mangling paths such as
                              lrwxrwxrwx 1 root root 12 Aug  5 11:32 /usr/include/avr -> /usr/lib/avr
                              lrwxrwxrwx 1 root root 35 Aug  5 12:02 /usr/include/EEPROM -> /usr/share/arduino/libraries/EEPROM

                              I still get the errors.
                              K3NG_Arduino_Keyer_2013072301UNSTABLE.ino:228:28: error: variable or field ‘transmit_hell_pixels’ declared void
                              K3NG_Arduino_Keyer_2013072301UNSTABLE.ino:228:28: error: ‘prog_uchar’ was not declared in this scope
                              K3NG_Arduino_Keyer_2013072301UNSTABLE.ino:228:40: error: ‘hell_pixels’ was not declared in this scope
                              K3NG_Arduino_Keyer_2013072301UNSTABLE.ino:228:58: error: expected primary-expression before ‘hellchar’
                              K3NG_Arduino_Keyer_2013072301UNSTABLE.ino:200:1: error: expected unqualified-id before ‘-’ token
                              In file included from K3NG_Arduino_Keyer_2013072301UNSTABLE.ino:202:0:
                              /usr/share/arduino/libraries/EEPROM/EEPROM.h:32:8: error: ‘EEPROMClass’ does not name a type
                              K3NG_Arduino_Keyer_2013072301UNSTABLE.ino: In function ‘void write_settings_to_eeprom(int)’:
                              K3NG_Arduino_Keyer_2013072301UNSTABLE.ino:2520:5: error: ‘EEPROM’ was not declared in this scope
                              K3NG_Arduino_Keyer_2013072301UNSTABLE.ino:2530:5: error: ‘EEPROM’ was not declared in this scope
                              K3NG_Arduino_Keyer_2013072301UNSTABLE.ino: In function ‘int read_settings_from_eeprom()’:
                              K3NG_Arduino_Keyer_2013072301UNSTABLE.ino:2543:7: error: ‘EEPROM’ was not declared in this scope

                              73 ... Sid.

                              On 02/08/13 21:14, Sid Boyce wrote:
                              Hi David,
                              I have tried building it using "arduino" on openSUSE but I get syntax errors that I have not looked at to see if I can fix them.
                              73 ... Sid.

                              On 02/08/13 18:47, David Turnbull wrote:
                               
                              HiSid,

                              Doyou use the K3NG software? You can buy the nanoKeyer board for running this which is about the same price as mine. However, it's using square waves into a piezo and doesn't include an LCD.

                              73 David 
                              http://AE9RB.com/


                              On Fri, Aug 2, 2013 at 1:45 AM, Sid Boyce <sboyce@...> wrote:
                              Hi David,
                              I use a decades old Curtis keyer using a CMOS chip with the HiQSDR and it works well.
                              It connects into the Altera FPGA, the keyer itself has built-in sidetone and a speaker.

                              There is also the K3NG keyer using an Arduino.
                              73 ... Sid.



                              -- 
                              Sid Boyce ... Hamradio License G3VBV, Licensed Private Pilot
                              Emeritus IBM/Amdahl Mainframes and Sun/Fujitsu Servers Tech Support
                              Senior Staff Specialist, Cricket Coach
                              Microsoft Windows Free Zone - Linux used for all Computing Tasks
                              


                              -- 
                              Sid Boyce ... Hamradio License G3VBV, Licensed Private Pilot
                              Emeritus IBM/Amdahl Mainframes and Sun/Fujitsu Servers Tech Support
                              Senior Staff Specialist, Cricket Coach
                              Microsoft Windows Free Zone - Linux used for all Computing Tasks
                              
                            Your message has been successfully submitted and would be delivered to recipients shortly.