You are a genius! Seriously... I've done lots of hardware and software and what you do is super impressive. Your mindset towards balancing cost and simplicity is perfect. I rewatched your videos while day dreaming of you combining this with your SDR receiver. We have a small TH-cam channel too. We interact with lots of new CW operators or people knew who want to learn. I really think that a super low cost option based on your projects could be transformative! Picturing a complete PCB that you simply plug a pico pi into to get a super low cost but very capable radio. My primary interest is CW, but the fact that you've got this all worked out with voice means an even wider audience!
Brilliant work! I've been using the PIO feature for things like encoder and tone decoding and knew it had the capability to generate HF-range waveforms - you've done a great job of putting it all together!
Thanks for your kind comment. Your project sounds very interesting. I think the PIO feature opens up a lot of possibilities, and there are many still to explore.
Thank you, love it! If it was not for illness (and lack of a decent opamp) I would have been tinkering with the Pi Pico Rx these holidays. I am surprised that it has slipped under the radar for so long - It was always my dream to make a minimalist device using accessible components - exploiting jellybean components without exotics removes huge barriers for the experimenters. Now with this transmitter it will be even easier to test and tweak the Pi Pico Rx (and filters). Personally I am glad they are separate projects - nice to have a base to allow further experimentation without complexity.
Thanks very much, I would be very happy to see people tinkering with these ideas for themselves. I can't think of a better compliment! Good luck with your projects.
Thank you for making me feel mentally unqualified to even have a pet Hamster. :) This is the kind of things I need for my budget. Big Name radios are no longer an option.
Many thanks to share your work. Add amplifer , filter is not the most difficult part of this project ( done many times ) . The most beautiful is the very impressive software solution arround internal IC features....Congratulations !
I'm a ham returning to the hobby with an interest in learning construction. This is a very well made and informative video which will help a lot of learners. Thanks and I've subscribed and will follow your progress with interest.
Thanks very much for your kind comment! In terms of study material, this article www.arrl.org/files/file/Technology/tis/info/pdf/020708qex013.pdf (and the other other parts) might be a good place to start. It assumes a PC is doing the SDR stuff, but the hardware and the general principles are still valid.
Thanks for sharing this. It's a great project! I was surprised with the capabilities of the raspberry pi pico. What about putting this together with the receiver you describe in the blog? It seems posible to build a complete all mode low cost transceiver based on your design.
The output is approximately a square wave so harmonics are output add odd multiples of the fundamental, 3x at 1/3 power, 5x at 1/5 power, 7x at 1/7 power and so on, you can see the effect on the spectrum analyser at 4:55. In this first video I haven't made any attempt to filter the output, at this stage its a proof-of-concept demonstrating how the different types of modulation can be generated. In the second video I build a class-E amplifier with suitable filtering which does a good job of reducing the out-of band harmonics. I did still have some issues with spurious emissions close to the fundamental, so still some more work to do before I can try this on-the-air...
I just ordered some of your Pico Rx boards and also a variant of my own Pico class E tx board that I plan to use for experimenting with your code. I did the initial testing of the gate modulation scheme for the uSDX and am very interested in trying this as well as conventional drain amplitude control with your approach go generating the phase-amplituce waveforms. I may try to move the code the Arduino IDE since it's my comfort zone. I've been successful in compiling most code and libraries, and the Earle Philhower Arduino core now supports both Pico cores so I think it is feasible. Your knowledge of DSP and coding skills have provided the SDR learning tool that many of us have been seeking, and working within the Arduino IDE would bypass the need to master the Pico SDK and/or VSCode for us hardware guys!
Thanks, your comments are appreciated. Your ideas sound very interesting. I would be interested to know if the gate modulation scheme gives good results, the idea is appealing because it results in such a simple design. I'm all for porting the design to the Arduino IDE too, anything that lowers the barriers for experimenters has to be a good thing.
Thank you for sharing this! Do you think you could drop the CORDIC routine if you used the new RP2350 with its FPU? I assumed you needed this particular function for a faster fixed point arctan function.
@@101Things-ds8tc Thank you. Forgive this question as I don't know anything about these PIO state machines. I implemented a CORDIC hardware version using Verilog -some years ago and was thinking could you could do the same on the Pico - so long as you can shift and add and pass on results to another state-machine. You're probably restricted in the number of bits you can shift by and the precision would be low due to the limit on the number of 'machines'. Perhaps nest a few Picos? :) Your PICO TCX and RCX projects have inspired me to investigate further on using PIOs! I'm very excited about producing signals using a 1-bit DAC. I will be taking a peek at your source so I can replace my R-2R ladders.
Can you consider adding two buttons or touching the screen to select which frequency band to send and receive, such as UV, HF, SSB.CW, and adjust the volume? I look forward to your results.
Can I ask your background (electronics-wise). This seems brilliant .....I have little idea how this is all working, even with the explanations! 🤣. How would you know the frequency of operation....does it need a PC attached? 73 de VK2AOE
My background is in digital design, I'm no expert in radios or signal processing, it's just something I have always been interested in. The transmitter is more of a proof of concept than a finished project. I have written a simple transmitter library and a couple of example applications. One is a standalone transmitter using a microphone. The transmit frequency and mode ar hard coded at compile time. The other uses USB for audio streaming and to set the frequency and mode. It should be fairly straightforward to add an encoder/display etc to control the frequency or to embed the code into an existing device.
@@101Things-ds8tcThanks for the reply. As a proof of concept it has so much promise. As for the small amount of people who criticised the audio quality, copy for me was fine (especially taking to account the small parts count and modest mic). I have too many much simpler projects but look forward to seeing further progress at which point I will definitely give it a crack! 73 OM de VK2AOE
Good Questions! Generally, yes SSB does need control of amplitude. There are however some types of signals that will have a constant amplitude. A single tone for example will have a constant amplitude, that's why a two-tone test is often used to check the linearity of SSB transmitters. Some digital mode e.g. FT8 (which uses one tone at a time) have a constant amplitude and could be transmitted without modulating the amplitude. An accumulator is used to correct for frequency errors in the long term, the frequency precision (i.e minimum step size) is a fraction of a Hz, although the accuracy is dependent on accuracy of the crystal oscillator.
@@101Things-ds8tc Frequency changes are controlled by fractional clock divider of RP2040. It's 16 integer and 8 fractional bits divider. I'm not sure it's good enough.
@@AlexejSvirid Yes, you are absolutely right. Using the clock divider on its own wouldn't even get you within 100KHz at 30MHz. To work around this, I left the clock divider set to 1 and used the DMA to stream a pre-generated waveform at 125MHz 1 bit at a time. The software has to make adjustments to the start point so that the waveforms align nicely, but using DMA chaining keeps the CPU loading down to about 10%. The clock period can only be an integer number of clock cycles so the software accumulates any errors this introduces so that it can be corrected in the long term, while also ensuring that the transition is never more than a clock away from where it should be. A 32-bit accumulator allows a precision of 0.029Hz.
Good idea, its not something I have tried but I can't see why it wouldn't work. I have heard that the pico can be overclocked by a considerable amount.
Out of interest, why is the lower limit 500kHz? Hardware limitations? Only once 198kHz BBC R4 stops I'm wanting to make a very low powered RF modulator to feed directly in to an old radio receiver (via attenuators, not OTA) Any thoughts? 73 GM5AUG
Hi, that will be a sad day... I'm using DMA transfers from pre-generated waveforms to generate the RF oscillator. The waveform needs to be at least 1 RF cycle long, so lower frequencies need longer buffers. I chose 500kHz because it seemed like a good compromise. Lower frequencies could easily be achieved using a longer buffer or a clock divider. Cheers Jon
Great very good project.. Can you help sending text on the same setup I would like to use 5mz in Himalayan region of India for connecting the un connect community in digital dark areas. I appreciate your help
Maybe a low power digital mode like FT8 would work for you? You could look at this project github.com/kholia/DDX or perhaps the QDX transceiver from QRP labs? qrp-labs.com/qdx.html
Thanks, I was quite pleased with the sound quality considering the minimalist approach. The oscillator is quite crude, and it does have its limitations, but it's still fun to explore the possibilities.
I'm not sure if it's just the mic, but I wouldn't call this "good quality", lol still pretty cool project, tho, but up until the SDR view, I didn't even have a clue what the audio was supposed to be saying, lol
I know what you mean, the quality of the recording has certainly got something to do with it, the sdr view is more representative. Glad you like the project though 😃
Thanks, that raises a couple of interesting points. The phase noise performance is pretty rubbish, especially compared to a PLL such as an Si3253. This manifests itself as a spreading (rather than a sharp peak) when viewed on a spectrum scope. The effect is more significant at higher frequencies. This is a fundamental limitation of the design, the level of the pin can only be changed on a clock edge which leads to a jitter of +/- 8ns. In a "propper" transmitter, I would use the Si3253 (or similar), they are fairly inexpensive, perform well and could easily interface to a pi-pico. This project github.com/ArjanteMarvelde/uSDR-pico went this route. The stability is dependent on the oscillator. The pi-pico uses a 30PPM oscillator. This amounts to a error of about 30Hz at 1MHz or 900Hz at 30MHz. Although in practice the performance is much better than this, especially at room temperature. Although the stability isn't amazing, it is fairly typical of a crystal oscillator based design, although nowhere near as good as a TCXO which can achieve better than 0.1ppm. Unlike the phase noise, there are things we could do to improve the stability of the design, the pi-pico has inbuilt counters that make it possible to calibrate or discipline the oscillator using the 1PPS pulse from a GPS receiver. This project hackaday.io/project/193897-raspberry-pi-pico-based-wspr-beacon takes this approach.
You are a genius! Seriously... I've done lots of hardware and software and what you do is super impressive. Your mindset towards balancing cost and simplicity is perfect. I rewatched your videos while day dreaming of you combining this with your SDR receiver.
We have a small TH-cam channel too. We interact with lots of new CW operators or people knew who want to learn. I really think that a super low cost option based on your projects could be transformative!
Picturing a complete PCB that you simply plug a pico pi into to get a super low cost but very capable radio. My primary interest is CW, but the fact that you've got this all worked out with voice means an even wider audience!
Thanks. Just subscribed to your channel!
Very innovative! I'm glad someone started thinking about the PICO's GPIO functions!
Thanks very much, really appreciate the feedback!
Brilliant work! I've been using the PIO feature for things like encoder and tone decoding and knew it had the capability to generate HF-range waveforms - you've done a great job of putting it all together!
Thanks for your kind comment. Your project sounds very interesting. I think the PIO feature opens up a lot of possibilities, and there are many still to explore.
Thank you, love it!
If it was not for illness (and lack of a decent opamp) I would have been tinkering with the Pi Pico Rx these holidays. I am surprised that it has slipped under the radar for so long - It was always my dream to make a minimalist device using accessible components - exploiting jellybean components without exotics removes huge barriers for the experimenters.
Now with this transmitter it will be even easier to test and tweak the Pi Pico Rx (and filters). Personally I am glad they are separate projects - nice to have a base to allow further experimentation without complexity.
Thanks very much, I would be very happy to see people tinkering with these ideas for themselves. I can't think of a better compliment! Good luck with your projects.
What is a "pi pico rx" ?
That's another project, similar idea but a receiver instead of a transmitter. github.com/dawsonjon/PicoRX
The problem with the PicoRX is the chip used for the Tayloe Detector . The St3253 is a surface mount chip. My soldering skills are not up to it.
That should have read FST3253. Sorry
very cool project! I love the minimalist approach.
Thanks very much!
Thanks 👍
Thank you for making me feel mentally unqualified to even have a pet Hamster. :) This is the kind of things I need for my budget. Big Name radios are no longer an option.
Thanks 👍
This would be a great Heathkit like in the 70's
Fantastic video former amateur
Many thanks!
Absolutely fantastic work! Simple is beautiful. BIG THANKS for sharing!
Thank you! Cheers!
Many thanks to share your work. Add amplifer , filter is not the most difficult part of this project ( done many times ) . The most beautiful is the very impressive software solution arround internal IC features....Congratulations !
Thanks for your kind comment. Much appreciated 👍
I'm a ham returning to the hobby with an interest in learning construction. This is a very well made and informative video which will help a lot of learners. Thanks and I've subscribed and will follow your progress with interest.
Glad you enjoyed it!
Thank you, this project is awesome. It may save LIVES one day. 👍
Thanks for the kind comment 🙂
Amazing work. You have my admiration. Could you please give me a tip for some study material about modulations and mixers? Thank you.
Thanks very much for your kind comment! In terms of study material, this article www.arrl.org/files/file/Technology/tis/info/pdf/020708qex013.pdf (and the other other parts) might be a good place to start. It assumes a PC is doing the SDR stuff, but the hardware and the general principles are still valid.
Thanks for sharing this. It's a great project! I was surprised with the capabilities of the raspberry pi pico. What about putting this together with the receiver you describe in the blog? It seems posible to build a complete all mode low cost transceiver based on your design.
Thanks for you comment, much appreciated! Yes, I can't see any reason why it couldn't be combined with the receiver to build a low cost transceiver.
Don't hurry, OMs.
How many harmonic multiples of the fundamental are being broadcast?
The output is approximately a square wave so harmonics are output add odd multiples of the fundamental, 3x at 1/3 power, 5x at 1/5 power, 7x at 1/7 power and so on, you can see the effect on the spectrum analyser at 4:55. In this first video I haven't made any attempt to filter the output, at this stage its a proof-of-concept demonstrating how the different types of modulation can be generated. In the second video I build a class-E amplifier with suitable filtering which does a good job of reducing the out-of band harmonics. I did still have some issues with spurious emissions close to the fundamental, so still some more work to do before I can try this on-the-air...
I just ordered some of your Pico Rx boards and also a variant of my own Pico class E tx board that I plan to use for experimenting with your code. I did the initial testing of the gate modulation scheme for the uSDX and am very interested in trying this as well as conventional drain amplitude control with your approach go generating the phase-amplituce waveforms. I may try to move the code the Arduino IDE since it's my comfort zone. I've been successful in compiling most code and libraries, and the Earle Philhower Arduino core now supports both Pico cores so I think it is feasible. Your knowledge of DSP and coding skills have provided the SDR learning tool that many of us have been seeking, and working within the Arduino IDE would bypass the need to master the Pico SDK and/or VSCode for us hardware guys!
Thanks, your comments are appreciated. Your ideas sound very interesting. I would be interested to know if the gate modulation scheme gives good results, the idea is appealing because it results in such a simple design. I'm all for porting the design to the Arduino IDE too, anything that lowers the barriers for experimenters has to be a good thing.
@@101Things-ds8tc I will wait with baited breath for you to port the design to Arduino. There are a lot of us Arduino nuts out here, N2SN.
Thank you for sharing this! Do you think you could drop the CORDIC routine if you used the new RP2350 with its FPU? I assumed you needed this particular function for a faster fixed point arctan function.
Thanks 👍 Yes, quite possibly. Pretty much a faster replacement for atan, but also calculates magnitude too. Might try it on the pico2.
@@101Things-ds8tc Thank you. Forgive this question as I don't know anything about these PIO state machines. I implemented a CORDIC hardware version using Verilog -some years ago and was thinking could you could do the same on the Pico - so long as you can shift and add and pass on results to another state-machine. You're probably restricted in the number of bits you can shift by and the precision would be low due to the limit on the number of 'machines'. Perhaps nest a few Picos? :)
Your PICO TCX and RCX projects have inspired me to investigate further on using PIOs! I'm very excited about producing signals using a 1-bit DAC. I will be taking a peek at your source so I can replace my R-2R ladders.
Nice I have been wanting to do a ham radio from a pico for a while now.
Thanks, glad you like it :-)
Congratulations 🎉 What a fantastic introductory podcast. I look forward to your next video. 👍🏻
Thanks for the comment. I hope to have the next video out in the next few weeks.
Can't wait!
Thanks, very kind!
Very nice and very helpful
Glad you think so! Thanks very much :-)
i don't have a pico, but i have a normal raspberry pi, would you be able to help me use that instead
i want to build a full transciever really
If you are using a normal raspberry pi, you should take a look at rpitx github.com/F5OEO/rpitx
May I ask the physical size of your Pi pico RX?? Very nice demo on that also!
Thanks! The Pi Pico RX is 90mm X 55mm (approximately credit card size). It's quite deep at 28mm, mostly to accommodate the AAA battery holder.
Neat. I'd like to see something similar done with an ATTiny44
That would be cool!
Can you consider adding two buttons or touching the screen to select which frequency band to send and receive, such as UV, HF, SSB.CW, and adjust the volume? I look forward to your results.
Great idea!
Can I ask your background (electronics-wise). This seems brilliant .....I have little idea how this is all working, even with the explanations! 🤣. How would you know the frequency of operation....does it need a PC attached? 73 de VK2AOE
My background is in digital design, I'm no expert in radios or signal processing, it's just something I have always been interested in.
The transmitter is more of a proof of concept than a finished project. I have written a simple transmitter library and a couple of example applications. One is a standalone transmitter using a microphone. The transmit frequency and mode ar hard coded at compile time. The other uses USB for audio streaming and to set the frequency and mode.
It should be fairly straightforward to add an encoder/display etc to control the frequency or to embed the code into an existing device.
@@101Things-ds8tcThanks for the reply. As a proof of concept it has so much promise. As for the small amount of people who criticised the audio quality, copy for me was fine (especially taking to account the small parts count and modest mic). I have too many much simpler projects but look forward to seeing further progress at which point I will definitely give it a crack! 73 OM de VK2AOE
Are you sure SSB mode needs control of the amplitude?
Another problem is a Step of frequency changes. Can you maintain a 10Hz or 100Hz step?
Good Questions!
Generally, yes SSB does need control of amplitude. There are however some types of signals that will have a constant amplitude. A single tone for example will have a constant amplitude, that's why a two-tone test is often used to check the linearity of SSB transmitters. Some digital mode e.g. FT8 (which uses one tone at a time) have a constant amplitude and could be transmitted without modulating the amplitude.
An accumulator is used to correct for frequency errors in the long term, the frequency precision (i.e minimum step size) is a fraction of a Hz, although the accuracy is dependent on accuracy of the crystal oscillator.
@@101Things-ds8tc Frequency changes are controlled by fractional clock divider of RP2040. It's 16 integer and 8 fractional bits divider. I'm not sure it's good enough.
@@AlexejSvirid Yes, you are absolutely right. Using the clock divider on its own wouldn't even get you within 100KHz at 30MHz. To work around this, I left the clock divider set to 1 and used the DMA to stream a pre-generated waveform at 125MHz 1 bit at a time. The software has to make adjustments to the start point so that the waveforms align nicely, but using DMA chaining keeps the CPU loading down to about 10%. The clock period can only be an integer number of clock cycles so the software accumulates any errors this introduces so that it can be corrected in the long term, while also ensuring that the transition is never more than a clock away from where it should be. A 32-bit accumulator allows a precision of 0.029Hz.
Could one potentially overclock the RP2040 (say, to 250 MHz instead of 125) and up the high end transmit frequency range?
Good idea, its not something I have tried but I can't see why it wouldn't work. I have heard that the pico can be overclocked by a considerable amount.
Very nice. Thank you.
Most welcome
Out of interest, why is the lower limit 500kHz? Hardware limitations? Only once 198kHz BBC R4 stops I'm wanting to make a very low powered RF modulator to feed directly in to an old radio receiver (via attenuators, not OTA)
Any thoughts? 73 GM5AUG
Hi, that will be a sad day... I'm using DMA transfers from pre-generated waveforms to generate the RF oscillator. The waveform needs to be at least 1 RF cycle long, so lower frequencies need longer buffers. I chose 500kHz because it seemed like a good compromise. Lower frequencies could easily be achieved using a longer buffer or a clock divider.
Cheers Jon
Great very good project..
Can you help sending text on the same setup
I would like to use 5mz in Himalayan region of India for connecting the un connect community in digital dark areas.
I appreciate your help
Maybe a low power digital mode like FT8 would work for you? You could look at this project github.com/kholia/DDX or perhaps the QDX transceiver from QRP labs? qrp-labs.com/qdx.html
very cool project.
Thanks very much, more to come soon!
I think. This is great.. i don't care about phase noise.. while the sound quality is acceptable and great frequency stability...
Thanks, I was quite pleased with the sound quality considering the minimalist approach. The oscillator is quite crude, and it does have its limitations, but it's still fun to explore the possibilities.
So you want to transmit hams?
Yeah, that's right :-)
I'm not sure if it's just the mic, but I wouldn't call this "good quality", lol
still pretty cool project, tho, but up until the SDR view, I didn't even have a clue what the audio was supposed to be saying, lol
I know what you mean, the quality of the recording has certainly got something to do with it, the sdr view is more representative. Glad you like the project though 😃
Make this a radio that everyone can use, like the FT-710
Yes, good idea. The eventual aim is to build a low cost transceiver, needs a bit more work first though...
Sorry, but this is a bad idea. Stability and phase noise will be very poor with this design.
Thanks, that raises a couple of interesting points.
The phase noise performance is pretty rubbish, especially compared to a PLL such as an Si3253. This manifests itself as a spreading (rather than a sharp peak) when viewed on a spectrum scope. The effect is more significant at higher frequencies. This is a fundamental limitation of the design, the level of the pin can only be changed on a clock edge which leads to a jitter of +/- 8ns. In a "propper" transmitter, I would use the Si3253 (or similar), they are fairly inexpensive, perform well and could easily interface to a pi-pico. This project github.com/ArjanteMarvelde/uSDR-pico went this route.
The stability is dependent on the oscillator. The pi-pico uses a 30PPM oscillator. This amounts to a error of about 30Hz at 1MHz or 900Hz at 30MHz. Although in practice the performance is much better than this, especially at room temperature. Although the stability isn't amazing, it is fairly typical of a crystal oscillator based design, although nowhere near as good as a TCXO which can achieve better than 0.1ppm. Unlike the phase noise, there are things we could do to improve the stability of the design, the pi-pico has inbuilt counters that make it possible to calibrate or discipline the oscillator using the 1PPS pulse from a GPS receiver. This project hackaday.io/project/193897-raspberry-pi-pico-based-wspr-beacon takes this approach.
Don't curse the darkness, just light the candle and let others improve the design. Atleast he tried👊🏿👊🏿👊🏿
Don't curse the darkness, just light the candle and let others improve the design. Atleast he tried👊🏿👊🏿👊🏿
Don't curse the darkness, just light the candle and let others improve the design. Atleast he tried👊🏿👊🏿👊🏿
Don't curse the darkness, just light the candle and let others improve the design. Atleast he tried👊🏿👊🏿👊🏿
Very nice. Thank you.
Most welcome