Skip to content
John Melton edited this page May 14, 2024 · 80 revisions

T41-EP Wiki

Front Panel 2 (RPi Pico)

First mechanical check of latest 7" Front Panel using the RPi Pico.

The V12 Main board uses headers for the Teensy 4.1 with 11mm extended pins so that it can be plugged onto the back of the Front Panel board.

The images below show the V12 Main board, K9HZ Hat offset board, Teensy 4.1, Teensy Audio Adapter all stacked onto the back of the front panel.

stack 1

stack 1

stack 2

Switch Matrix for RA8875 Display

I have put together a keypad replacement that can be used to connect to the Display RA8875 Controller board keypad interface (JP2).

I have a version of the RA8875 library that I added the support for the keypad.

No setup required for the switches. The library supports long pushes as well.

Note that the controller board does not come with this enabled as standard. You need to add 5 100k ohm resistors to the board.

From the Datasheet:

"Note: The keyboard is disabled by default. Please leave J1 to J5 open and R4 to R8 is with 100k ohm if you want to enable."

keypad front

keypad back

T41-EP 2nd Receiver

Early testing of code for second receiver. Currently using SW18 (User-2) to select receiver that is being controlled (i.e. tuning, AF gain, tune step, etc). The selected receiver displays the VFO in Green. A big problem is screen space. The VFO for each receiver displays the Mode and Filter and AFGain. The tune step is shown by underlining the digit in the frequency display. Currently Audio from first RX is on the left channel and second RX on the right channel.

The switch on the volume encoder is used to to change the function of the volume encoder for AFGain, RFGain, MicGain, AGCGain and Frequency correction for the selected receiver. Frequency correction currently uses an external signal source.

The switch on the tuning encoder swaps the VFO-A and VFO-B frequencies for the selected receiver.

Still very much a prototype and currently receive only.

I am using some of the original T41 code for processing the IQ samples, but have refactored it to be a C++ class which allows me to instantiate 2 copies, one for each receiver. I am also experimenting using Teensy Threads, one for each receiver, plus some others to handle the UI interface.

Dual RX

Latest version of 7 inch Pico Front Panel

Now has 20 push buttons as there is space for the 2 extra as the RA8875 supports a 4x5 matrix.

Now uses the V12 Main Board by using headers with extended pins on the Teensy (11mm) so the main board can be plugged into the Front Panel.

Also the Front Panel has a connector for the 2nd RX board so there is no requirement to make changes on the Main Board Encoder connector.

Front Panel 2 Latest

Code changes to display audio waveform when transmitting

One of my dislikes was lack of any indication that there was audio coming from the microphone other than monitoring the transmitted signal on another radio.

I have made some changes to the code to display the audio waveform when transmitting.

Voice:

Voice audio display

CW:

CW audio display

Front Panel Using Raspberry Pi Pico - Second Prototype

This is currently in development. The Front Panel is a complete pcb with the switches, encoders, audio connections and the Display directly connected to it. The back side has a Raspberry Pi Pico that is used to control the encoders and their switches, the touchscreen and the 2 LEDs. The Raspberry Pi Pico is connected to the Teensy over the i2c bus. The 18 push buttons are connected to the Keypad interface on the Display.

The Touchscreen was originally going to be connected to an i2c port on the Teensy 4.1, but the amount of code required and the fact it required firmware to be loaded into the GSL1680 each time it was powered up, I decided to offload it to the Pico to save memory space on the Teensy 4.1.

Second prototype - Main Board now integrated with Front Panel rather than a plug in board, but still using plug in Audio boards. The next version will have the Audio devices on the board like V12. This version is using the newer 5" display from BuyDisplay.com that has the touchscreen i2c interface accessible from the JP1 header pins. The display controller board has the notation "Ver 2.2 RA8875 Controller Board". Note that this has different pinout to the original display board. See below for images of the 2 boards. Also note that the Teensy Audio Adapter board is not plugged onto the back of the Teensy but to the Front Panel PCB.

Front Panel 2 Prototype

Front Panel 2 Prototype

RA8875 Display Board

Note that there are 2 different 5" RA8875 Display Boards that have been sold by buydisplay.com. This Front Panel requires the latest version that has the Capacitive Touch Screen integrated and has a different pinout. They both say Ver 2.2.

Below is the correct version for Front Panel 2:

Front Panel 2 Display

Below is the earlier version that is not pin compatible. This is the one currently described in the book. Note the touch screen i2c interface is just a hanging cable not connected to the board.:

Front Panel 2 Display

Latest version is working well. It is designed to work with the V12 RF (QSD/QSE) board but as I do not have one currently the Main board is connected to an Adafruit Si5351 board which provides the clocks for the V11 QSD and QSE boards.

Front Panel 2 Prototype

These are some additional functions I have added:

  • The touch screen is working and allows touch to select a signal on the spectrum or waterfall and also touch and drag to move the frequency up/down.

  • The Volume encoder switch will cycle through using the encoder to change Volume level, AGC Gain, Microphone level and Sidetone level.

  • The Filter encoder switch will cycle through the AGC settings.

  • The Kenwood microphone has PTT working and the Up/Down buttons to change frequency.

  • The Center Tune encoder switch is used to change between VFO-A and VFO-B.

  • User1 switch has been re-assigned to Copy VFO-A to VFO-B.

  • User2 switch has been re-assigned to Copy VFO-B to VFO-A.

  • The Fine Tune encoder switch is used to Swap VFO-A and VFO-B.

Source Code, Gerbers and Schematics

The latest code for the Raspberry Pi Pico is at https://github.com/g0orx/pico_frontpanel.

My modified RA8875 code to support the Kepad is at https://github.com/g0orx/RA8875.

My updated GSL1680 code for the Capacitive Touchscreen is at https://github.com/g0orx/GSL1680.

SDT source code to be released soon.

Gerbers and Schematics to be released soon.

Front Panel using MCP23017 port expanders.

Note that the MCP23017 Front Panel has been changed to use Wire1 I2C interface and the latest Gerbers (1.5) have been modified to use the existing IDC connector without changes to the Main Board

I have made the following changes to my version of the T41-EP SDT.

Added 5" Touch screen interface. The 5" touch screen uses the GSL1680 controller chip. I found a library but it did not work. I have made my own branch of the library at https://github.com/g0orx/GSL1680 that includes the latest firmware from buydisplay.com. It also contains one change to the begin function to define which Wire interface to use and to define the location of the firmware to be in FLASHMEM as it take a lot of space.

Having used the MCP23017 port expander in a previous project I decided to make a PCB to mount the Encoders and switches on a single board that would be interfaced using the I2C bus. The advantage is that there are less connections to the Main board (only uses one of the 10 way ribbon cables), has enough ports to include the switches on the encoders and has 2 left over that are used as outputs for LEDs. Currently I have been using the LEDs for debugging the board, but they could be used to indicate more status.

I did not like the heat generated from the original power supply and I had also blown a couple of them from shorting out one of the voltages when testing the other boards. I have used the PicoPSU in an OpenHPSDR project so designed a simple board to allow one of these to be plugged in and used. In addition it also has the speaker outputs. Note that you could use a standard ATX power supply as well. The advantage of the PicoPSU is that there are versions that will run from 13.8v.

Below are some images of the boards.

The front panel consists of 2 MCP23017 16 bit I/O port expanders. Each device is controlled through the I2C bus and the devices use the I2C address 0x20 and 0x21.

The device at 0x20 has switches 1..16 connected to it.

The device at 0x21 has the switches 17 and 18, encoder 1..4 switches, encoder 1..4 A and B and 2 output LEDS.

An interrupt is generated when an I/O port input changes state.

The device at 0x20 generates an interrupt on pin 14 (pulls it low) - Pin 6 of the IDC connector. The device at 0x21 generates an interrupt on pin 15 (pulls it low) - Pin 8 of the IDC connector.

The code uses Wire1 which uses SCL1 on pin 16 - Pin 5 of the IDC connector and SDA1 on Pin 17 - Pin 7 of the IDC connector

The IDC connector is connected to Tune/Filter IDC connector of the Main Board.

The PCB is designed to fit the 3D printed front panel.

Front Panel - Front FrontPanel Front

FrontPanel Front

Front Panel - Back FrontPanel Back

FrontPanel Back

Power supply for ATX 20 pin supply

Power Supply - Front PowerSupply Front

Power Supply - Back PowerSupply Front

PicoPSU - DC DC Converter PowerSupply PicoPSU

Touchscreen

To connect the 5" touchscreen, on the original display, I bought a small 0.5mm FPC breakout board and soldered 6 header pins on the reverse side to the connector. I also soldered a 2.2K pullup resistor between the SDA and SCL pins to 3.3v. I then used the center mounting hole on the display to attach the breakout board.

FPC Breakout1

FPC Breakout2

FPC Breakout3