DIY AM/FM/SW/ DSP radio receiver, using Arduino Uno/Nano and a color display TFT ST7735 1.8in.
Estimated time: 2 hours
Items used in this project
|Rotary Encoder with Push-Button||x 1|
|Momentary Pushbutton Switch — 12mm Square||x 3|
|1000 Uf Electrolytic Capacitor||x 6|
|Si4730/31-d60 Demonstration Board And Evb. 24p Ssop. Use For Si4730-d60 Or Si4731-d60.||x 1|
|Adafruit 1.44 Color Tft Lcd Display With Microsd Card Breakout — St7735r||x 1|
|Arduino Nano V3||x 1|
|Ferrite bar antenna 300uH||x 1|
|Resistor 10k ohm||x 1|
|Inductor 10uH||x 2|
|Resistor 1k ohm||x 2|
|Resistor 2.21k ohm||x 2|
|100 Ohm Resistor 1/4 Watt||x 1|
Software apps and online services
This is my design of a AM/FM / SW radio receiver with DSP technology.
This Arduino radio receiver has an attractive look and nice features using an inexpensive color TFT / Arduino and few componets and delivery surprisingly good performance.
It includes the indication of the frequency in large numbers in the style of vintage seven segments, two bargraphs for indicating the signal strength, selection of 7 BW filters for AM and 5 BW filters for FM, indication of the wavelength of the band, change of tune step, Stereo/Mono indication, 14 bands for coverage of LW / MW / SW / CB ranging from 150kHz-30MHz / commercial FM band 64-108MHz and 2 color scheme for the display.
I used the Arduino Nano (the Pro Mini or Uno should work too) to control the Si4730-D60 integrated circuit (see notes below). The Si4730 is a complete receiver with DSP (digital signal processing) technology, the same used in SDR receivers.
The Arduino sends the control commands to the Si4730-D60 via the I2C data interface. The graphical interface is made up of a 1.8in ST7735 color TFT display, via SPI data interface.
An external audio amplifier must be used to amplify the sound of this radio. One suggestion is to use the amplified speakers used on computers or any other amplifier that has a line input.
Another option is to assemble a simple DIY audio amplifier with the LM386 IC. See below a complete project of the audio amplifier that I assembled at home using the LM386. If you want a stereo amplifier, assemble 2 of these.
I wrote this code (sketch) in a simple way, allowing beginners (and advanced) to make their own modifications and customize the radio according to their needs.
As can be seen in the wiring diagram, it is not necessary to use bi-directional Logic Level Converter, making the circuit even simpler and the circuit will works perfectly without it.
Note that the antenna input circuit (RF front end) is very simple, I did not use an RF pre-amp (LNA) or even more elaborate LPF / BPF filters and even so the results were great and surprised me. Watch the videos demonstrating the operation below.
Wiring diagram (schematics):
Here are some pictures of the circuit I set up:
The radio is operated using a rotary encoder and 4 buttons, as described below:
- Rotary encoder: used to tune to radio stations.
- Button 1: for changing bands (14 AM and 1 FM bands).
- Button 2: for changing tuning steps AM (1kHz, 5kHz, 10kHz).
- Button 2: for changing tuning steps FM (100kHz, 200kHz). NEW
- Button 3: to select the AM bandwidth filters (6, 4, 3, 2.5, 2, 1.8, 1kHz).
- Button 3: to select the FM bandwidth filters (Aut, 110, 84, 60, 40kHz). NEW
- Button 4: to select the color scheme of the display (2 schemes).
Notes on the PL102BA-S V2 and theDSPradio chip (IC):
1-The radio module used here is the PL102BA-S V2 (it has the IC Si4730-D60). Only the module that comes with the Si4730-D60 IC with 3060 marking will work in the shortwave range. Be aware that the module maked as NE928-10A V.01 will work only in AM/FM (not in SW), as it has the IC Si4730-D20 (marked as 3020).
2-Below are some picures and the pinout of a PL102BA-S V2:
3-The PL102BA-S V2 module can be purchased in Aliexpress.
4-The Si4730-D60, Si4735-D60, Si4734-D60 (SSOP24 package) and Si4732-A10 (SOP16) ICs also work with this project, but it will require a breakout board and 32.768kHz cristal oscillator and some ceramic capacitors. In case you want to assemble your own Si4730 (SSOP24) breakout at home (DIY) here is the project of what I did, using the thermal (laser print / iron for clothes) technique. See the pictures below and the schematic and layout of the printed circuit board on the Schematics section.
The audio amplifier with LM386 DIY projectthatIassembledathome, see pectures below and the Schematics and PCB layout:
DSP ICRadio Specifications:
This is the block diagram of chip (IC) Si4730(3x):
The Si473x-D60 digital CMOS AM/FM radio receiver IC integrates the complete broadcast tuner and receiver function from antenna input to audio output. It has the features as follows:
- Worldwide FM band support (64108 MHz)
- Worldwide AM band support (5201710 kHz)
- SW band support (Si4734/35 and Si4730-D60) (2.330 MHz)
- LW band support (Si4734/35 and Si4730-D60) (150510 kHz)
- Excellent real-world performance
- Automatic frequency control (AFC)
- Automatic gain control (AGC)
- Digital FM stereo decoder
- Advanced Audio Processing
- Seven selectable AM channel filters
- AM/FM/SW/LW digital tuning
Librariesinstalationandnotesaboutthesketch(special attention here):
- Must install and use the libraries located in "install these libraries" folder.
- Please below choose the correct I2C address for your Si4730/35 (0x11 or 0x63), before to start. The module PL102BA-S V2 use address 0x63.
- For ICs Si4730/31/34/35 — D60 a 10k pullup resistor must be used in each I2C lines. For PL102BA-S module pullups not required.
- Carefully read the instructions given in the sketch header.
About the antenna to be used:
- Preferably use an external Long Wire antenna and a ground connection for good shortwave reception. Other types of antennas can also be used, such as the MiniWhip and the Magnetic Loop.
- For good performance in MW (LW) band should be user a standard ferrite stick antenna with 12cm x 1cm. The bigger the ferrite bar is, the better is the reception.
- For the FM band, a whip or wire with 70cm will be sufficient. For DX reception, a commercial external VHF/FM antenna can be used.
Some tips to improve radio reception:
- Always supply the circuit with batteries. I supply the Arduino with 2x 18650 batteries connected in series, resulting in 7.8v, this voltage being applied to the “VIN” pin of the Arduino.
- Never use a switched power supply or DC / DC step down converter to power the Arduino. These electronic power supply work with an oscillator of about 150kHz and this electromagnetic signal will interfere or even kill radio reception. Be aware that some power banks (battery modules) use DC / DC step down converters. So remember, the switched power supply is the enemy of the AM radio (in some cases FM too).
- Move away or turn off the electronic lamps that are close to the radio receiver, because these lamps also generate a lot of interference. Preferably use lamps with LED technology.
- Avoid using class D audio amplifiers (PWM), as these also work with high frequency and will disturb and generate noise in the radio reception.
- Shortwave and Mediumwave reception is highly dependent on the propagation of radio waves. There are certain times that are better and others are worse for reception. Usually in the late afternoon and at night, these are the best times for good reception of distant radio stations.
Finalconsiderations about digital noise / interference generated by Arduino:
Every digital circuit with microcontroller and the I2C/SPI data/clock bus traffic generates a certain level of electromagnetic noise that interferes and disturbs the radio reception, as it has harmonics that spread to various frequencies.
One way to try to reduce this problem is to place an insulated metallic plate (steel, aluminum or copper) below the breadboard and connected to the GND (negative battery pole) of the circuit or to assemble the entire circuit inside a metal box properly connected to the GND the circuit.
You must also use wires as short as possible in the connections between the TFT display and the Arduino. You should also distance the DSP Radio chip from the Arduino as much as possible, the ideal is to place the DSP Radio chip and the Arduino + Display in compartments separated by a grounded metal plate.
Code Update 1 Nov, 2020:Newfeaturesand general code revisionto correct some bugs, make some improvements and optimizations and reduce the digital noise emission. Download version 2.1 which is the most updated.Here is the link to download the complete project, including themain sketch, libraries and the wiring diagram,click here.
Updatedvideos showing the receiver in action: