For some of us who like physical knobs and switches on a radio

1,512 views
Skip to first unread message

Prem A

unread,
Oct 21, 2023, 10:57:03 PM10/21/23
to Radioberry
Hello folks!

This is just a tiny step towards building a fully functional control (console) panel for the Radioberry SDR TRX.

The video is here: https://youtu.be/QLZ2_jSVezs

Again, thanks to all the noble people for sharing their knowledge and hard-work - so freely on GitHub - so we could experiment and enjoy.
In particular, thanks to Johan, PA3GSB, and John Melton, G0ORX.

Almost there...

73,
Prem, VA3UMA

pa3gsb

unread,
Oct 22, 2023, 5:49:40 AM10/22/23
to Radioberry
Hi Prem

Nice work. real nice to see people doing al sort of developments.

In know that Dileep, VU2DLE also from India did almost the same; maybe you can have a look at:  https://www.youtube.com/watch?v=Wp12q2RIvMo

Have fun

73 Johan
PA3GSB



Op zondag 22 oktober 2023 om 04:57:03 UTC+2 schreef va3...@gmail.com:

Prem

unread,
Oct 22, 2023, 6:45:58 AM10/22/23
to pa3gsb, Radioberry
Hello Johan! Thanks for your response - and the encouragement.

Yes, I'm in touch with Dileep. In fact I'll be talking to him later today.
The basic idea (inspiration) is from his GitHub, although his code fails to compile because of the older wiringPi dependency.... (Based on older OS). 
I have informed him.

He's in Germany, and I'm in Canada :-)

73,
Prem, VA3UMA.

--
You received this message because you are subscribed to the Google Groups "Radioberry" group.
To unsubscribe from this group and stop receiving emails from it, send an email to radioberry+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/radioberry/44978183-a86c-4378-af01-a019aeb230f2n%40googlegroups.com.

Remi echange

unread,
Nov 8, 2023, 8:16:19 AM11/8/23
to Radioberry

Hi.

 I'm using Dileep software and i build hardware. It works on OS32, with some errors. Dileep add some modification in Pihpsdr source to use cat command.


We can use midi command to control Pihpsdr: 

https://f5npv.wordpress.com/pihpsdr/

https://github.com/g0orx/pihpsdr/blob/master/midi.h

 HB9BLA Wireless Ytub add midi controller to sdr console

 

With RP2040 new code and hardware Dilleep schematic why not use midi command solution?

 

73

Rémi

Prem

unread,
Nov 8, 2023, 10:29:30 AM11/8/23
to Radioberry
Hi Remi!

Thanks for your feedback.
Yes, we can try that. I'll be traveling soon and back in action only after Christmas.
Will give it a shot then.

Again, thanks for taking the time to offer information.

73,
Prem, VA3UMA.

You received this message because you are subscribed to a topic in the Google Groups "Radioberry" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/radioberry/WvNKvEm2hPs/unsubscribe.
To unsubscribe from this group and all its topics, send an email to radioberry+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/radioberry/4579a4b4-4e16-4adf-968f-5551d56a34a5n%40googlegroups.com.

Remi echange

unread,
Nov 9, 2023, 3:55:25 AM11/9/23
to Radioberry
some like to start  :

Remi echange

unread,
Dec 21, 2023, 9:30:53 AM12/21/23
to Radioberry
I use hardware schematic from VU2DLE. Code is a 
very simple midi controller in Cpython ( adafruit ) with Pico RP2040

Remi echange

unread,
Jan 4, 2024, 9:21:37 AM1/4/24
to Radioberry
In Pihpsdr I use the Learning mode in midi  file. I'm not able to change the RX-gain : with Wheel mode  and midi ctrl event sended by RP2040 : I don"t see any change on RXgain slider ( -12 to 48).  It works with AF gain, AGC,  ( 0 to N).
I change midi value  from 0 to 127 without success. 

I read pihpsdr code; midi controller arduino code, midi doc,  midi file example : I dont have this kind of file after end learning mode :
very far from midi doc explanation

May be some body can tel me which value are sended by midi controller  to change RX-gain?
I will add in my cpython example.

Thanks

SNAIL

unread,
May 1, 2025, 3:10:27 PMMay 1
to Radioberry
Hello everyone. I want to share my experience in repeating the console. I ordered the printed circuit boards and all the necessary parts and everything was easy. But there were difficulties with the software.
Probably a lot depends on what OS is used, what compiler is used. The MIDI controller option, despite all the apparent simplicity, did not work. Only once there was a reaction to one button, but mostly no reaction at all. Trying to change settings in MIDI menu resulted in PIHPSDR crash. So, this idea was abandoned.
VU2DLE console variant. There were also difficulties with the VU2DLE variant. The WiringPi library it used now no longer available, and I used WiringPi/WiringPi from GitHub. The program then did not want to compile because the compiler did not accept incorrect multiple definition. The code was fixed and now everything is working properly except encoders. When you turn encoder CW the value will decrease and vice versa. CCW will increase value. Can do it easy for VFO encoder by switching wires A and B but the rest are problem. 
Did try to change RP2040 pin assignment in rb_controller.c file.
 **************************************/
#include <stdio.h>
#include "pico/stdlib.h"
#include "pico/sync.h"


#define ENC1A 11
#define ENC1B 10

#define ENC2A 18
#define ENC2B 19

#define ENC3A 17
#define ENC3B 16

#define ENC4A 13
#define ENC4B 12

#define ENC5A 14
#define ENC5B 15
 It doesn't work.
I'm almost ZERO in programming and will appreciate someone help.
I have extra PCB for this project if someone want it.
Thank you.  
Message has been deleted

SNAIL

unread,
Jul 11, 2025, 9:07:37 AMJul 11
to Radioberry
Have you figured out RX GAIN problem?

On Thursday, January 4, 2024 at 7:21:37 AM UTC-7 Remi echange wrote:
Message has been deleted

SNAIL

unread,
Jul 13, 2025, 6:34:56 PMJul 13
to Radioberry
I'm not programmer but I think it's as it should work. My VFO sends 63 or 65 depends on direction but as long as you turning it in same direction it will send same code. Check section MIDI in PIHPSDR manual.

On Sunday, July 13, 2025 at 10:38:39 AM UTC-6 Yado-san wrote:
Hi Remi, All

I am interested in MIDI controllers with Raspberry Pi PICO, so I tried it out.

Attached are the MIDI outputs for key input and encoder up/down.
Even when the encoder is continuously moved up or down, only 41/3f is output.

RPi-PICO_MIDI 2025-07-14 005952.png

I made a MIDI controller with Teency4, but Teency is expensive :(
Yado-san, jg1twp

2025年7月11日金曜日 22:07:37 UTC+9 SNAIL:

Yado-san

unread,
Jul 14, 2025, 8:36:14 AMJul 14
to Radioberry
Hi Remi, SNAIL, Group,


I am interested in MIDI controllers with Raspberry Pi PICO, so I tried it out.
https://framagit.org/remis732/pico2040midicontroller

Your controller works fine. :)  and AF Gain fine also.
... I saw SNAIL's latest post and actually tested it on RB2_pihpsdr tonight.

RPi-PICO_MIDI 2025-07-14 pihpsdr.png

MIDI outputs here. ( same as i posted last night)

RPi-PICO_MIDI 2025-07-14 005952.png

Tnx! Yado-san, jg1twp
2025年7月14日月曜日 7:34:56 UTC+9 SNAIL:

Yado-san

unread,
Jul 18, 2025, 12:18:24 PMJul 18
to Radioberry
> Remi echange 2023/12/21  <-- Wow! I noticed that Remi posted was from more than half a year ago! -->

>> I use hardware schematic from VU2DLE. Code is a very simple midi controller in Cpython ( adafruit ) with Pico RP2040

Hi Group,

I added some features to Remi's simple MIDI controller, and share it for reference. -> attached code.py
  Replace Remi's code.py.
  https://framagit.org/remis732/pico2040midicontroller

Specifications:
_4x4 keypad: No change
_Rotary encoder 1: Acceleration function added for VFO (CC values: 0-63/64/65-127)
_Rotary encoders 2 and 3: Changed to sliders (CC values: 0-127)
_Rotary encoders 4 and 5: No change (63/64/65)
_Potentiometers 1, 2, 3: Added for slider use (CC values: 0-127)


Trial circuit diagram: (Dileep, VU2DLE's circuit with added 3 potentiometers)
Pico MIDI Controller trial.png

Prototype:
RPi-PICO_MIDI prot.png

pihpsdr_MIDI settings in progress:
RPi-PICO_MIDI 2025-07-18 pihpsdr.png


This 'code.py' was created using generative AI (Copilot).
The original program is written in Circuit Python, but since I have never used Python before, I decided to try using generative AI (Copilot).
Actually, I didn't write a single line of code, but  attaching it for reference.

73 Yado-san, jg1twp

2025年7月14日月曜日 21:36:14 UTC+9 Yado-san:
code.py

SNAIL

unread,
Jul 23, 2025, 9:36:17 PMJul 23
to Radioberry
My few words regarding Yado-san post. 
Yado-san uses DL1YCF PIHPSDR. This is important because its MIDI behave differently than G0orx/ n6lyt by John Melton PIHPSDR. IMO DL1YCF MIDI is better for me. You can assign buttons to switch bands directly, no needs to scroll thru band - or band +. The gem of DL1YCF MIDI is shut down OC button.  All knobs work as it supposed to work without any program editing. Here is the end of good things.
The bad thing is: after reboot MIDI doesn't work and you need to reload CircuitPython usb_midi.por in MIDI menu.
Hint -  if you are using original VU2DLE design PC board and Remi midi program you could experience knobs misbehave. CCW increase and CW decreased action. To fix it simply edit code.py file changing -1 to 1 in line 51 thru line 55
reverse1=-1 # 1 ou -1 pour selectionner le sens de rotation
reverse2=-1
reverse3=-1
reverse4=-1
reverse5=-1

Wim PE1PWR

unread,
Jul 27, 2025, 7:10:27 AMJul 27
to Radioberry
Hi All.
I have trying to program the Pico 2040. 
Is there an example how its looks like. I can activate Midi on Pihpsdr. Nothing happens.
I think that the library is the problem. I can get not enough information what you have to place in the Lib. 
I have use three versions of CircuitPython. 8, 9 and latest 10.
Hopes that one of you can tell me what I have to program on my Pico to makes it work. 
Wim 
PE1PWR
73s

Op donderdag 24 juli 2025 om 03:36:17 UTC+2 schreef SNAIL:
Root.jpg
Lib.jpg

Wim Gmail

unread,
Jul 27, 2025, 3:10:05 PMJul 27
to SNAIL, Radioberry
Thanks
That's the info I needed.
Let you all now how things go.
Wim


Op 27 jul 2025, om 18:38, SNAIL <snailex...@gmail.com> schreef:
Use older Circuit python 8 bundle. I placed whole Adafruit library in folder "lib" on RP 2040



Mario Vano

unread,
Jul 27, 2025, 8:08:34 PMJul 27
to Radioberry
I did something similar using two different Adafruit products. Although I didn't implement the RxGain control, the source code for the tuning knob might provide some guidance.

The first one was for a complete USB device ready to plug in called a Trinkey. It has limited program space but I implemented a keyer and an interface for a high resolution encoder. (it works with a cheaper generic encoder as well). The encoder uses the external I2C connector on the trinkey. Here's the code and the option control file. It requires manually dropping a few files from the adafruit circuitpython library into a "lib" folder. Consult the Adafruit website for more details.

The second example is for  a tiny RPi Pico 2040 called a QT Py 2040. It's fairly complicated because it has a mode switch and can be used as a midi paddle interface with extra buttons, or as a standalone keyer providing a contact closure that has speed up and down and monitor volume keys for a piezo speaker. It uses many more circuit python libraries - but has more  room for them.

The source files for both projects have most of the needed details...

You'll need to visit the Adafruit Website's tutorial pages to understand how to install CircuitPython on these devices and how to add libraries. There are links to the "getting started tutorials" on the product pages for the two devices...

enjoy!
Trinkey 2025-25-05 CP.zip
CIRCUITPY_18-Apr-2025.zip

wim schilperoort

unread,
Jul 28, 2025, 1:56:29 PMJul 28
to Mario Vano, Radioberry

Also thanks Mario.

I give it a first try but it wont works on my site.

I think I have to clear everything on the Pico2040 and start all over again.

I also read that you has to look for the right firmware version.

So anyway stil under construction.

Wim

PE1PWR

73s

Op 28-7-2025 om 02:08 schreef Mario Vano:

Mario Vano

unread,
Jul 28, 2025, 2:21:02 PMJul 28
to Radioberry
I uploaded my two controller files as examples only to give some more ideas about how to write the needed code. They will work immediately  on the specified boards with CircuitPython 9 and it's associated library bundle. Other versions/micros require matching library bundles and GPIO bit name changes.

To get started you need to go to https://circuitpython.org/downloads and pick your board, download and install the circuit python version you require. My uploded code is for the current version 9 (10 has not been released yet).

You then need to make sure the matching library files needed are dragged into the folder called "lib" (you may need to make it). In most cases the pi pico 2040 has enough memory for the entire library to be loaded at once.

Your selected pins for each switch will have pin names that you need to put in place of the pin names in my files for the board you are using and the way you have it wired.

For some knobs you need to decide how you plan to use them to control the radio - for example will you turn the controller to move the value up and down, or try to keep a "virtual" position in the code and send the absolute position.

The best way to do this is start with a board that allows the midi and serial terminal to both be used at the same time and start simply and then add things gradually.

Some people prefer to use a more comprehensive IDE like Thonny or Visual Studio Code - but each of these then has it's own learning curve.


Hope this helps a little. There's a lot more info at Adafruit in the following tutorial:
They've done a really great job of making this easy!

Good Luck.

M

Yado-san

unread,
Jul 29, 2025, 7:50:55 AMJul 29
to Radioberry
Hi Wim,  Group

This may already be resolved, but the libraries I used and the CPython download URL are listed below.
 also attached the files I transferred to the Raspi PICO's CPython root directory.

Download URL:
- CircuitPython9.2.8 for PICO,PICO2:
  https://circuitpython.org/board/raspberry_pi_pico/
  https://circuitpython.org/board/raspberry_pi_pico2/
   How to install, Flash Resetting:
   https://learn.adafruit.com/getting-started-with-raspberry-pi-pico-circuitpython/circuitpython

- Used Library:  
  https://circuitpython.org/libraries  ( downlod adafruit-circuitpython-bundle-9.x-mpy-202507xx.zip)
  or  https://github.com/adafruit/Adafruit_CircuitPython_MIDI,
        https://github.com/adafruit/Adafruit_CircuitPython_MatrixKeypad
       (https://learn.adafruit.com/matrix-keypad/python-circuitpython)
  Drag and drop the required libraries to the PICO root/lib/...

Also, I debugged with terminal software when debugging, and found that Mu and other code editor make it very easy to create, run and modify Python programs.
 https://codewith.mu/en/

Mu_cpython_.png

And..
SNAIL>> The gem of DL1YCF MIDI is shut down SD button.
 It could be stopped at the touch of a button, FB :) Tnx!

Mario>> the source code for the tuning knob might provide some guidance.
  I will study your code to make it easier to use, e.g. the CW keyer function and the encoder acceleration process. Tnx!

Yado-san, jg1twp

ps.
 This code.py was created using a generated AI (Copilot).  
 I asked the AI a lot of questions about the causes of the errors and how to fix them, as I happened to face errors in the libraries etc.  
 So the AI could be a powerful support tool, especially for people like me who are learning to program.  
 I recommend asking the free generated AI many questions.
//
lib.zip
code_simple_midi.py
code.py

Wim Gmail

unread,
Jul 29, 2025, 9:30:15 AMJul 29
to Yado-san, Radioberry
Very nice information Yado-San
With this information it must be working for me.
I try it this evening.
Thanks all for your responding.
Wim
PE1PWR 73s


Op 29 jul 2025, om 13:50, Yado-san <shuk...@gmail.com> schreef:
--
You received this message because you are subscribed to the Google Groups "Radioberry" group.
To unsubscribe from this group and stop receiving emails from it, send an email to radioberry+...@googlegroups.com.

Mario Vano

unread,
Jul 29, 2025, 10:55:21 AMJul 29
to Radioberry
Thank you yado-san. I did not wish to "hijack" this thread, but I thought that my code had a few interesting features CircuitPython users might find useful - especially the startup and option features.

The version I use all the time has a large knob and 4 buttons in easy reach that I program as band up, band down, VFO step + and VFO step -. I find the VFO Step control buttons handy for speeding around the band and then fine tuning easily.

I also hoped people would look into the "Trinkey" device. It's a very interesting piece of hardware. It was designed for adding up to 5 GPIO or other connections (the headset plug has 4 pins) for Assistive technology devices, but it's cheap, rugged (a box is available to fit it) and easy to program. Unfortunately it has very limited flash storage limiting the number of libraries it can use - but fortunately a lot of them are "built-in" to the firmware.

73, Mario AE0GL

Image 2.jpeg

Image.jpeg
Image 3.jpeg

Yado-san

unread,
Jul 30, 2025, 2:10:11 AMJul 30
to Radioberry
Hi Mario,

Thank you for your message and the image of your MIDI controller. FB!
I am glad to receive a post from someone with technical skills like Mario. (Your page on QRZ.com is very interesting. RadioHAT too.)

Looking closely, this thread has been viewed over 1,100 times, so it seems to be a topic that many people are interested in.
I would also like to have a MIDI controller like the ICOM RC-28 Remote Encoder, so I think I will try making one with a Trinky board.

And,
Wim>> Thanks all for your responding.
 hope that  helps :)

Tnx. Yado-san, jg1twp

Mario Vano

unread,
Jul 30, 2025, 6:33:23 AMJul 30
to Radioberry
Thank you for your nice compliments Yado-San! I appreciate them!

Yes, I think the Trinkey can probably do the RC-28 as it has enough inputs (just) for that. The only thing I'm not sure how to do is how to show the Transmit Light I see in the picture of the controller. I suspect piHPSDR doesn't really send any output signal like that via midi.

I like these smaller "mouse-sized" controllers. They're much handier to toss in my back for an outing to the park than a big controller that does everything.

There are also a lot of nice inexpensive boxes with a big volume knob and nothing else available from the usual mail order sources. I have one, but they use the USB keyboard multimedia outputs to control volume, so they can't generate midi. I have one, and I'm trying to figure out how to discard the circuit board and repurpose the weighted box and knob and add my own controller board with a few buttons sticking out to make a nicely packaged controller.

Let us all know what luck you have with your RC-28 style controller...

Mario, AE0GL

Wim PE1PWR

unread,
Aug 3, 2025, 5:50:13 AMAug 3
to Radioberry
Hi Yudo-San.
Finaly everything is working now. I was having some trouble between Code.py and code simpel.
I see something happing now when I turn the knobs. Clock wise is wrong so I have to change the code a little bit. 
For now thanks for your information and effort. Glad the knobs are working on my transmitter.
Wim
PE1PWR 73s

Op woensdag 30 juli 2025 om 12:33:23 UTC+2 schreef Mario Vano:

Yado-san

unread,
Aug 3, 2025, 8:52:14 AMAug 3
to Radioberry
Hi Wim,

Thank you for letting me know that your debugging and corrections were necessary, and working. :)
→ sorry for the error regarding the A and B terminals of the rotary encoder.
incremental rotary encoder.png

p.s.
Looking at Amazon, I saw that there are small MIDI controllers and USB keys with knob and switches.
It seems like a good idea to make use of these.  

usb_knob_keyboard2.png

Tnx, Yado-san
2025年8月3日日曜日 18:50:13 UTC+9 Wim PE1PWR:

Ronald Nicholson

unread,
Aug 3, 2025, 10:46:59 AMAug 3
to Radioberry
For a nice Midi control knob made by a ham, there's the Lynovation CTR2-Midi controller, by ku7q. Comes both in kit form and pre-assembled.  I have one of his knobs working with my HL2 connected to my SDR iPhone app.  But should work with the Radioberry as well.  73, Ron, n6ywu

Mario Vano

unread,
Aug 3, 2025, 11:07:34 AMAug 3
to Radioberry
Hey Ron: That Lynovation controller looks like a really nice option. Thanks for pointing it out!

M

Message has been deleted

Mario Vano

unread,
Aug 3, 2025, 7:01:45 PMAug 3
to Radioberry
Ed:

I’m not sure why you sent me a Teensy Advocacy message, apparently in response to this thread!

I don’t disagree that you can do many interesting things with other computers and microcontrollers - most of us are here for that reason - there’s no reason to be a teensy “advocate”. If you like it, go ahead and implement an interface to the RadioBerry using it!

I like the teensy and have several and it’s descendants, but my own (and many other people’s) interest in the RadioBerry is that it is hosted by the Pi. That allows me to do several interesting things - like immediately leverage off of all of the GnuRadio, WSJTX, SSTV, Digital Voice, and many other pieces of Pi software available that I use regularly without having to write one line of code (even though I certainly know how to do that).

I have another mailing list of my own, where in fact another Radio I designed - the “RadioHat” Pi card set is documented and in fact, part of that github details my experiments using that radio with the PJRC Teensy boards - so I’m certainly not trying to damp your enthusiasm for the Teensy.

If you were hoping to get me or anyone else interested in helping you port things the Teensy, then you’re looking in the wrong place. The most advanced Teensy Radio software out there right now is in other projects and you should go talk to them.

The thread I THINK you are answering is about making simple UI devices to improve usability of existing Hermes Lite 2 and Radoiberry application programs like Quisk, piHPSDR, and Thetis (or in fact any other Ham software that can use midi commands for UI interfacing).

In fact, I don’t use them that way, but all of my Teensy Boards are compatible with AdaFruit Circuit Python and the code we are discussing will run on them. I generally don’t use CircuitPython on the Teensy as the Teensy is overkill for this kind of simple UI project. It’s most useful with much cheaper and simpler microcontrollers. Right now the Pi Pico is a great choice for simple UI devices like this…


M

Here’s the text of the message you sent me - I think you sent it at as private message:

----------------------------


This may be a bit of a strong opinion, but using a PJRC Teensy board(Arduino derivative in terms of code, with their own smaller physical footprint closer to the size of a stick of chewing gum) would be ideal for this use.

Cost ranges from 20-40 USD depending on version and features. Some have many more input/ouputs. The top end has has 600 or 700 MHz 32 bit arm processor with hardware floating point and around 50 or so I/O, with serial, canbus, Ethernet, spi, I2C, i2S audio and more.


There’s prebuilt USB HID gaming device example code and composite devices can also be made. Something in principle could be say several encode knobs for volume, have some status LEDs and expose a serial port to drive a two line LCD display for tune frequency or other things. If you need huge numbers of IO for switches and LEDs, then use an I2C mux with board mounted switches to add the rest. One device should be enough for everything for a whole radio front panel rather than just a knob or two. With a suitable choice of ID string for the device it should be driverless but something than the SDR software can recognize and use.

The only shortcoming, last I looked was lack of prebuilt USB audio class 2 support and the prebuilt sound libraries not really intended for >16 bit sample depth. Paul Stoffegren (not sure I have spelling exactly correct) seems to help support things pretty well. The 10/100 Ethernet support requires a magjack and a few passive components.

Finally, if you need to integrate the teensy into a prototype on your own board or guarantee longer term availability, you can purchase the bootloader chips for a very reasonable cost.

I’d highly recommend using those and as a second choice the pi pico unless there’s a very good use case for something else.

I’ll even say that if we went all the way back to N2ADR SDR board days, that implementing everything but the UDP transmission/reception of the actual input/output data from the DDC/DUC blocks on a teensy by masquerading with same hardware address and letting it handle ping and dhcp would have simplified code…ping/arp could be done on teensy and we could’ve had bounjour detection of devices on the network by simply matching the frame header to see if it matched UDP and audio port numbers and forwarding everything the fpga wasn’t going to handle directly would’ve considerably simplified development. At the same time, the extra IO would’ve been handy.

---------------------------

Ed Marciniak

unread,
Aug 5, 2025, 12:51:47 PMAug 5
to Mario Vano, Radioberry
This may be a bit of a strong opinion, but using a PJRC Teensy board(Arduino derivative in terms of code, with their own smaller physical footprint closer to the size of a stick of chewing gum) would be ideal for this use.

Cost ranges from 20-40 USD depending on version and features. Some have many more input/ouputs. The top end has has 600 or 700 MHz 32 bit arm processor with hardware floating point and around 50 or so I/O, with serial, canbus, Ethernet, spi, I2C, i2S audio and more.


There’s prebuilt USB HID gaming device example code and composite devices can also be made. Something in principle could be say several encode knobs for volume, have some status LEDs and expose a serial port to drive a two line LCD display for tune frequency or other things. If you need huge numbers of IO for switches and LEDs, then use an I2C mux with board mounted switches to add the rest. One device should be enough for everything for a whole radio front panel rather than just a knob or two. With a suitable choice of ID string for the device it should be driverless but something than the SDR software can recognize and use.

The only shortcoming, last I looked was lack of prebuilt USB audio class 2 support and the prebuilt sound libraries not really intended for >16 bit sample depth. Paul Stoffegren (not sure I have spelling exactly correct) seems to help support things pretty well. The 10/100 Ethernet support requires a magjack and a few passive components.

Finally, if you need to integrate the teensy into a prototype on your own board or guarantee longer term availability, you can purchase the bootloader chips for a very reasonable cost.

I’d highly recommend using those and as a second choice the pi pico unless there’s a very good use case for something else.

I’ll even say that if we went all the way back to N2ADR SDR board days, that implementing everything but the UDP transmission/reception of the actual input/output data from the DDC/DUC blocks on a teensy by masquerading with same hardware address and letting it handle ping and dhcp would have simplified code…ping/arp could be done on teensy and we could’ve had bounjour detection of devices on the network by simply matching the frame header to see if it matched UDP and audio port numbers and forwarding everything the fpga wasn’t going to handle directly would’ve considerably simplified development. At the same time, the extra IO would’ve been handy.


From: radio...@googlegroups.com <radio...@googlegroups.com> on behalf of Mario Vano <mpv...@gmail.com>
Sent: Sunday, August 3, 2025 10:07:34 AM
To: Radioberry <radio...@googlegroups.com>
Subject: Re: simple Midi controller with RP2040 : midi code for Rxgain
 
--
You received this message because you are subscribed to the Google Groups "Radioberry" group.
To unsubscribe from this group and stop receiving emails from it, send an email to radioberry+...@googlegroups.com.

Yado-san

unread,
Sep 1, 2025, 12:29:51 PM (11 days ago) Sep 1
to Radioberry
Hi,

I've built this based on Mario's (AE0GL) program for a "standalone keyer-included MIDI controller" using QT Py 2040 and CircuitPython.
https://groups.google.com/g/radioberry/c/WvNKvEm2hPs/m/pq9hXrvjBAAJ

Having repurposed a cheap USB volume controller available on sites like Aliexpress, I found it did rather well, so I'm sharing it for reference.
Functional specifications have been changed. 
And program modifications were made using DeepSeek, not Copilot. (Due to character limit)
There may still be bugs or specification errors, but I have attached the code and the libraries used.

_ Circuit diagram (easy)
MIDI_Keyer_Cir.png
In Local keyer mode, the speed and volume buttons control the built-in keyer.
Connect the key-output to Radioberry2's CN301-pin14 to transmit CW.
Rotating the rotary encoder outputs MIDI, enabling its use as a VFO.

In MIDI mode, the speed and volume buttons become MIDI outputs.
They can be assigned to necessary functions in software such as pihpsdr. 

_ Case reuse: (add three holes)
It can be easily constructed by reusing components like rotary encoders, push switches, and stereo jacks.
It looks very cool, surprisingly.
MIDI_Keyer1.png

internal wiring
MIDI_Keyer2.png
Yado-san, jg1twp

MIDI_Keyer.pdf
DeepSeek_MIdiKeyer_r1.0.zip
CircuitPython MIDI Keyer Functional Specification.pdf
Reply all
Reply to author
Forward
0 new messages