Radio was one of the first media of telecommunication for long distances, so it is a very old technology. However, listening to the radio or practicing the hobby of radio listening (SWL) is something that brings a lot of pleasure, especially when exploring the Shortwave Bands, where we can hear many interesting, distant and weird signals. Now, if you like Arduino and DIY, building your own radio receiver is a priceless experience. Let's go, try the project and check it out!
Features:
- Stereo FM 64-108MHz with RDS (Radio Data System) with station ID and radio text auto-scrow information on the screen.
- AM MW band for Europe (9kHz spacing) and MW band for USA (10kHz spacing).
- LW band and 14 Shortwave bands, covering from 150kHz to 30MHz, including CB band.
- Non volatile memory to store the actual frequency, band and screen theme on Arduino’s EEPROM. The data is kept even if the arduino is turned off.
- Selectable AM bandwidth filters (6, 4, 3, 2.5, 2, 1.8, 1kHz) and FM bandwidth filters (Aut, 110, 84, 60, 40kHz).
- Direct access to the FM band.
- Atractive color screen look with numbers in 7 segmens style, easy to read.
- Dual bargraph meters for Signal to Noise Meter and Signal Strength Meter plus ‘S’ values.
- Band name indication (m) on the screen.
- Selectable tuning steps of 1, 5, 9, 10kHz and the color scheme of the display (2 schemes).
- Uses the Si4732-A10 (included a breakout PCB project) or the PL102BA-S V2 modules.
- Controlled by an Arduino Nano + ST7735 TFT 1.8in display, 4 push-buttons, a SPDT switch and a rotary encoder.
- Uses the high performanceMichael J. Kennedy's Si4735-I2C-R4 library.
- Uses few componets and delivery surprisingly good performance.
- Update May, 2022: added the firmware for the Pro Version (with SSB), see below.
Video:
Aliexpress Made in China version being sold?
Apparently the Chinese are already commercializing the project on Aliexpress. See the photo below:
And another radio here:
Description and Wiring diagram (schematics):
The Si473x is a complete receiver with DSP (digital signal processing) technology, the same used in SDR (software defined radio) receivers.
The Arduino controls and 'talks' with the Si473x IC via the I2C interface, writing data in it and reading data from it. The graphic interface is made up of a 1.8in ST7735 color TFT display, which comunicates via SPI data interface. Inside the Si473x IC, the radio frequency signal is digitalyzed thru A/D converter and processed by the DSP (digital signal processor) and then converted to audio thru D/A converter and sent to the output.
There are two electrical diagrams, one for use with the PL102BA-S V2 module and the other for use with the Si4732-A10 breakout PCB.
The antenna input circuit (RF front end) is simplistic, I did not use an RF pre-amp (LNA) or even more elaborate LPF / BPF filters and even so it is possible to get good radio receptions.
The S1 switch is used to select the antenna for Shortwave (SW) or Medium Wave / Long Wave (MW / LW). When switch S1 is in the MW position, the external shortwave antenna must be disconnected to obtain a cleaner reception, as in this case the ferrite rod plays the role of an antenna.
The D1 and D2 (BAV199 - dual diodes) can be replaced by 2 x 1N4148 or even ommited for simplification, I do not use them on my receiver, but it is a protection against electricity static discharges (ESD).
The arduino is powered by 7.8V (2x18650 batteries) applied to the VIN input. The arduino also provides stabilized voltages of 5V to supply the TFT display and 3.3V to supply the Si4732 (or PLB102).
A point that always raises doubts and there is a lot of information without practical basis and tests is about the difference in logic levels between the Arduino 5V and the IC Si473x.
As the Arduino has 5V logic levels on the I2C bus and the Si473x uses 3.3V, if necessary, a 5V to 3.3V Logic Level Converter Bi-Directional can be used on the I2C SCL / SDA bus and RESET line, between the Arduino and Si473x.
However, I do not use the Logic Level Converter in my project, I do use resistors, and in various pratical experiences (that I have been doing for more than 2 years) I never had any problem, I never had any Si4730/32/35 devices damaged, not even I2C communication issue and I never noticed any instability. In practice there is a resistive divider formed by the 1k resistor and the pullup resistor connected to 3.3V, so the logic level High never exceeds 3.3V (measured) on the Si473x pins. Without the Logic Level Converter you gain circuit simplification and a gain in I2C communication speed.
The ceramic decoupling caps C3-C6 are there to reduce the irradiation of noise (EMI) generated by the display and SPI data bus.
The Arduino's EEPROM memory can be rewritten up to 100, 000 times without fail, according to technical paper (despite that in practical tests it reached more than 1 million of cycles before failing). To save the life time of the EEPROM, the data is saved once only when the PB2 push botton (SAVE) is pressed, so the memory will have a very long life, it can be said that it will never fail in normal use in this way.
An external audio amplifier must be used to amplify the sound of this radio, what can be a 'JBL' style amp box or any other audio amp that has a line input. Other choice is to assemble it yourself, see below a complete DIY LM386 audio amplifier project (schematics and PCB) that works very well on this project. Also the TDA2822 (stereo amplifier IC in a DIP-8 package) is a good option here as it is easy to find / cheap and delivery very good amount of sound.
The library used to control the Si473x:In this project I use the high performance library Si4735-I2C-R4 authored by Mr. Michael J. Kennedy, a fantastic and innovative work that was written in 2012. It is the best existing library for Si473x, very stable, fast, friendly and has the professional level RDS decoder, much better than the libraries found on the internet today (btw which were based on Kennedy's work). I just made some updates to it to include some commands and configuration of the display pins.
Pictures of the circuit I set up:Notes on the DSP radio chip (IC) used here:
1-The radio module used here was the PL102BA-S V2 (it has the IC Si4730-D60 QFN package). Only the module that comes with the Si4730-D60 IC with 3060 marking will receive shortwave bands and RDS on FM. Be aware that the module maked as NE928-10A V.01 will work only in AM/FM (not SW nor RDS). I ordered this module via Aliexpress. Below is the pictures and pinout of PL102BA-S V2 Module:
2-Recently I found this radio module on Aliexpress that might work in this project: Si4730 Si4731 Integrated High-quality FM / AM Radio Head Module
3-Si4732-A10 IC: The PLB102BA module became hard to find, so I decided to design a PCB breakout to use the Si4732-A10 IC (SOP16) which is easier to solder on the board, will receive shortwave bands and RDS on FM and is available on Aliexpress, Mouser, etc. This breakout board can be used in other radio projects with Si473x, including other libraries available on the internet.
Below are: the PCB design, schematics, pinout and BOM.
4-Additional comments: there are reports from users that RDS and Shortwave also worked with the Si4730-D60 and Si4734-D60 chips with the SSOP-24 package (not the QFN), these devices have the advantage of being cheaper, however I didn't have the opportunity to test them. Also remembering that the Si4735-D60 SSOP-24 can be used as the RDS / SW will work for sure.
5-In case you do not want to use the breakout board and/or use other MCU (microcontroller unit), below is the schematics of circuit using the Si4730-D60 / Si4734-D60 / Si4735-D60 chips with the SSOP-24 package, so that you can design your own printed circuit board. This circuit requires a MCU with I2C (Arduino Uno, Nano, ESP32, STM32, etc) in order to work.
For anyone interested in making a double conversion receiver with the SI5351 and SI4735(32), this is the block diagram of the receiver blocks that I built and it works great. Using JCR 10kHz-225MHz VFO. The mixer is the popular NE602 / SA612 IC.
***********************************************************************
Pro Version (with SSB) - UPDATE Feb/2023 (Ver. 2.7):Receiver specifications: Stereo FM 64-108MHz with RDS,LW, MW, SW bands, covering from 150kHz to 30MHz and AM/SSB demodulation.Display TFT 1.8” ST7735 Color 128x160pix and Arduino Nano (Atmega328P). With BandScope capability.
For those who want to try the version with SSB (for experienced user only), I am making available here the firmware (.hex format) with SSB and many improvements). Download it here.
In the Pro Version the push bottons have different functions, as described in the schematics and manual. See the pictures below:
To install firmware (.hex format) on Arduino UNO / Nano it is necessary to use the AVRDUDESS app and an USBasp programmer. The bootloader can be recovered using this application AVRDUDESS to load the bootloader file "optiboot_atmega328.hex". Load one of the firmware file that is on the folder.
Notes:
-Fixed some bugs and FM encoder steps fixed in 100kHz now.
-The display layout was improved, new full color block signal indicator.
-Now the code monitores and detects any change in frequency value to save the value to the EEPROM (remember the last value), it does not uses the power supply value to do it anymore, so now the radio may be powered from 3 to 8 VCC.
-This version uses the Si473x I2C address 0x63, make sure to set it correctly on your hardware.
-Update November 2023: Good news, I was successful in loading firmware 2.7 on the Arduino NANO MEGA328PU-TH, using the AVRDUDESS app and an USBasp programmer. The bootloader can be recovered using this application AVRDUDESS to load the bootloader file "optiboot_atmega328.hex", to return the Arduino Nano to its original state.
******************************************************************
LCD 16x2 + Si4730 / 35 Version:2023 updated version. A simple, inexpensive and efficient design with stereo FM, AM MW and all Shortwave bands. With scketch, open source.
This was the very first DIY project in the world I launched using the Si4730 with the Arduino. After this project the Si4730/35 became popular and the success that it is today.
******************************************************************
Instructions:- Open the scketch on Arduino IDE, install the libraries located in "install these libraries" folder and choose the correct I2C address for the Si4732 (0x11 or 0x63). The module PL102BA-S V2 uses address 0x63.
- Compile the sketch and then load it to the Arduino Nano, Uno or Pro Mini.
- Follow the schematics to wire the Arduino, display, PLB102 module or Si4732, rotary encoder, push bottons, etc.
- The first time to power up the radio circuit, the initial values must be loaded into the EEPROM memory, with the following procedure: while pressing and holding the push button PB2, turn on the Arduino power and wait for the screen shows the message “DEFAULT VALUES”, now it is ready to work.
- There are 4 push bottons and they have 2 functions each: short and long press (except PB3). Also there is one switch SPDT (S1).
- Push botton PB1: to select the AM on and AM Band browser Up/Down selector: short press AM initiation coming from FM and then UP band, long press DOWN band (14 bands).
- Push botton PB2: to ‘SAVE’* the current frequency, band, color theme to EEPROM and change the Tuning Steps (1, 5, 9, 10kHz): short press ‘SAVE’*, long press change Tstep. *Even if the arduino power is turned off and the power supply is removed, the information will be kept stored in the arduino's EEPROM memory and retrieved the moment it is turned on again.
- Push botton PB3: to change bandwidth IF Filter for AM (6, 4, 3, 2.5, 2, 1.8, 1kHz) and FM (Aut, 110, 84, 60, 40kHz).
- Push botton PB4: to select the FM on, RDS program type (station ID / radio text / auto scrow radio text) and color theme: short press FM initiation coming from AM and then RDS type change, long press will switch color theme from blue to black and vice versa.
- Rotate the rotary encoder to tune up or down the frequency to search the stations.
- The S1 switch is used to select the antenna for Shortwave (SW) or Medium Wave / Long Wave (MW / LW). When switch S1 is in the MW position, the external shortwave antenna must be disconnected to obtain a cleaner reception, as in this case the ferrite rod plays the role of an antenna.
- For Shortwave reception use a 'longwire antenna', that is made of at least 7m long of piece of electric cable stretched outside or inside the house, at a height of at least 3 meters from the floor, the longer the cable the better the reception. Other types of antennas can also be used, such as the MiniWhip and the Magnetic Loop. For those who want to know a little more, a theory and project of typical 'longwire antenna' can be found here and for 'MiniWhip antenna' here.
- An interesting and practical article about antennas for Shortwaves here.
- For good reception in MW (Medium Wave) and LW (Long Wave) band should be used a ferrite rod antenna with 12cm x 1cm. For LW the inductance of ferrite coil should be at least 1000uH (1mH) in order to improve the reception in this band. The longer the ferrite rod 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.
- Always supply the circuit with batteries. Avoid using switched power supply or DC / DC step down converter to power the this radio as these electronic power supply work with an oscillator of about 150kHz and this electromagnetic signal will interfere or even kill radio reception. Some power banks (battery modules) uses DC / DC step down converters.
- 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. Likewise, try to move the radio receiver away from computers and notebooks or laptops or turn these devices off when tuning and listening the radio.
- Avoid using any kind of class D audio amplifiers (PWM) such as PAM8403 or TPA3118, etc, as these circuits works with high frequency and will disturb and generate noise in the AM/SW 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 (EMI) 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.
A well-planned printed circuit board (PCB) with separation of the digital part from the analog RF part and with ground plane will help a lot in noise reduction.
Good luck in assemblies! Julio Cesar.
TERMS OF USE:- This is a free project I did as a hobby, it's not a professional Project and is not intended to “make money” with it. The prototypes I assembled for my use worked perfectly, however I cannot guarantee that what you assembled will work, as this will depend on factors such as your experience and knowledge, the quality / originality of the components used, variability of manufacturers and assembly errors. In no way can I be responsible for the expense or damage that you have in this assembly.
- This is a free project. The author of this project reserves the right to change, modify or do corrections to the hardware and/or software at any time without notice or obligation to persons who already assembled it.
- Don't expect this receiver to perform as well or better than professional and commercial receivers, this is an amateur home project that aims at the personal satisfaction of setting up at home and seeing it work beyond the learning that this activity provides.
Comments