kaefe64 / Arduino_uSDX_Pico_FFT_Proj

Hamradio SDR transceiver software
56 stars 20 forks source link

ARJAN-5

5 Band SSB/AM/CW HF Transceiver

by Klaus Fensterseifer - PY2KLA

(based on Arjan te Marvelde / uSDR-pico)

uSDR-PICO FFT

This project is a QSD/QSE Software Defined HF Transceiver (SDR), 5 Band, Low Power, based on Arjan te Marvelde / uSDR-pico, from https://github.com/ArjanteMarvelde/uSDR-pico.
Since than, Arjan made some changes on his code, so, to clarify, I started this project based on Arjan's version https://github.com/ArjanteMarvelde/uSDR-pico/blob/main/package/CODEv2.zip from 2021 with documentation at https://github.com/ArjanteMarvelde/uSDR-pico/blob/main/doc/uSDR%20-%20v2.02.pdf .

My intention was to include a Waterfall or Panadapter to the Arjan's uSDR-Pico project, for this, I included an ILI9341 240x320 2.4" TFT display, without touch, and also, changed the software to generate the Waterfall.

Initially, I used Visual Studio, but after some considerations, I ported all code to Arduino IDE. So, to compile and run this code you need the Arduino IDE installed for a Raspberry Pi Pico project (see "Arduino IDE setup and notes:" below).

I also, chose not to change the original software as much as possible, and focused on the Waterfall implementation, mostly in the dsp.c.

The Arjan-5 and uSDR-Pico DO NOT USE the uSDX Amplitude/Phase for transmission like the PE1NNZ uSDX project.

I used the word "uSDX" instead of "uSDR" to name some files. This was a mistake. My intention was to follow Arjan's project with the same names.

Basic connections for initial tests

Main Block Diagram

Initial tests video: https://youtu.be/0zGAnkRjizE
AGC and Visual Scope video: https://youtu.be/BiaS002xZfw
Transmission test video: https://drive.google.com/file/d/1Rr4CVPphtcBfMTgRN5z8F7xxByQ_1ybG/view

There are also some messages related to this project at:
https://groups.io/g/ucx
Subject: uSDR-pico on GitHUB
Initial msg: #15923 · May 26 2022

Repository folders

Arduino_I2C_BPF_RX - Code to control the Band Pass Filter (BPF) board. It runs at Arduino Pro Mini, compiled with Arduino IDE. The Arduino Pro Mini is used replacing the uSDR-Pico I2C interfaces PCF8574's to allow extra features: SWR reading and others (future). It uses the same I2C protocol, as uSDR-Pico.
Arduino_uSDX_Pico_FFT - Main code for Ajan-5, runs at Raspberry Pi Pico, compiled with Arduino IDE (look "Arduino IDE setup and notes" below).
PCB - Schematic and PCB Layout on Kicad format.
Pictures - Pictures in general used in this Readme file.
uSDX_TX - Code to test RF modulation TX using Amplitude/Phase, the same method used at the PE1NNZ uSDX project (https://github.com/threeme3/usdx) running at RP2040, only for transmission.


Main Board Block Diagram

Main Block Diagram

Band Pass Filters, Attenuators and Low Noise Amplifier Board Block Diagram

BPF RX Block Diagram

Main Board Top and Botton

Main Board Top
Main Board Botton
Obs.: Don't mind the red wires on the PCB, they are only test for separted 5V power supply.

First Prototype with TX and RX

Prototype

Second Prototype (all in a metallic box)

Prototype2


Microcontroller RP2040 notes:

Hardware changes from the original SDR-Pico and notes:

Hardware Modification

Hardware changes from initial version of my Schematic and PCB:

Software Notes

Arduino IDE setup and notes:

To implement the Waterfall I considered this:

Block diagram

ADC Aliasing filter considerations:

Input: We sample each signal I, Q and MIC at 160kHz, so it is necessary to have a hardware low pass filter for 80kHz on each input (anti-aliasing filter). If the input filter is set to lower than 80kHz, the Waterfall will show less than +-80kHz of signals. If the input filter is set to higher then 80kHz, the audio and the Waterfall could peek some signals greater than 80kHz and treat them as lower than 80kHz (this is the ADC aliasing problem).
Output: We deliver an audio signal at 16kHz sample frequency, so we need a hardware low pass filter for less than 8kHz at the output. The sample frequency will be present and needs to be removed as it is also an audio frequency.



Operational Notes

Keys description

Normal operation:
Encoder = to change the frequency at the cursor position
Left key = move the cursor to left
Right key = move the cursor to right
Enter key = We can adjust the Waterfall gain with the Encoder while pressing the Enter key.
Escape key = to enter on menu mode
Menu mode:
Escape key = to go back to normal operation
Left key = to move between the menu items
Right key = to move between the menu items
Encoder = to change menu item value
Enter key = to confirm the menu item value



Last changes and notes:

Ago20 2024

Ago03 2024

Jul29 2024

Jan05 2024

Nov12 2023

Oct13 2023

Jul19 2023

PCB assembly top

Jul16 2023

Jun2 2023

Apr30 2023

Apr29 2023

Ago17 2022

Ago07 2022

Encoder type

Ago05 2022

Hardware Modification

Jul20 2022

Jun24 2022

Jun13 2022

Reg 3v3

Reg mounted

Jun10 2022

Wish list:

Copyright notice

The code and electronic designs as well as the implementations presented in this repository can be copied and modified freely, for non-commercial use. Use for commercial purposes is allowed as well, as long as a reference to this repository is included in the product.