The purpose of this project is to interface the Sparkfun Si4735 Breakout Board to
an Arduino Uno. The Si4735 is a radio on a chip, which provides complete tuning
capabilities, AM / FM / SW reception, and RDS data stream. The user needs
to add an appropriate antenna and an audio amplifier in order to listen to the tuned
Project History / Current Status
After spending several months researching the RDS data stream that is broadcast on most stations, I decided to try to interface
one of my Arduino Uno boards to the Si4735 in order to capture / decode these signals.
One option was the Sparkfun Si4735 AM / FM Receiver Shield , which has basically
all the components on a board that will fit the Uno. I decided against that
option because of some issues I read about from owners of these boards indicating
that some modifications had to be made in order to get this hardware working properly.
My second option was to look at using the Si4735 AM / FM Breakout board, which essentially
contains the Si4735 chip only. As my main goal was to decode the RDS data
stream, audio reception was not necessary. This board would meet my needs,
and was $10.00 less than the shield. If I wanted to add the audio amplifier at a later date,
then I had that option to do so. One big difference between the breakout board
and the shield is the fact that I would need to also purchase some logic level converters
since the Si4735 uses 3.3V levels, not the 5V levels coming from the Arduino Uno.
I would also need to get a 32.768 kHz crystal.
Once I received the Si4735 board, the logic level converters and crystal, I began
setting up a breadboard with the necessary connections to the Uno. At the
time, there was very little documentation on using this board, except for the datasheet.
I spent countless hours wiring the Uno to this device, but had no luck.
Fortunately, I was able to make contact with Radu - Eosif Mihailescu who is an expert
on the subject. I came up with a connection diagram for the circuit, and he was
able to not only point out the mistakes I made, but helped me understand how this board was
designed to work. Without his help, I would probably still be working on this
In order to make this circuit easier to carry around, I moved it to a Sparkfun Arduino
and Breadboard holder, which makes the entire project look much more professional.
I use this quite often, and have added a Radio Shack portable audio amplifier to
the circuit to listen to a couple of my favorite stations.
The Si4735 Breakout Board project is comprised of several hardware components.
You will need the following items and a lot of patience:
The ATMega-328 Microcontroller
In order to controll the Si4735 chip, we need a microprocessor
that can communicate using the appropriate protocol. The Arduino Uno (R3)
meets this requirement and will be the controller for the radio.
The Sparkfun Si4735 AM / FM Radio Receiver Breakout Board
Purchase this as opposed to the Si4735 Shield - it is much simpler to work with
and does not require any board modifications.
The Sparkfun Logic Level Converter
This circuit is required in order to convert the voltage levels
coming from the Arduino Uno to the Si4735 Breakout Board, and from the
Si4735 Breakout Board to the Arduino Uno. The Uno produces a 5V signal
as output, but the Si4735 requires 3.3V.
If you are wiring this circuit for SPI mode, you will need two of these
logic level converter boards. For I2C mode, you will only need one.
A 32.768 kHz Crystal
The crystal oscillator is necessary for the external clock on the Si4735 chip.
Audio Amplifier Circuit
If you want to listen to local broadcasts, you will need to either design
your own amplifier for the Left / Right channel outputs or purchase an amplifier. There
are many design examples on the internet that cover this topic.
The Si4735 Library
You will need to download Radu's excellent Si4735 library. This can
be downloaded from the following URL:
The Si4735 chip communicates using either I2C mode or SPI bus. For this project, I have
configured the wiring to the Si4735 from the Arduino Uno in SPI mode. There have been issues with
using the Wire library, which is required for I2C mode. Radu's library makes note
of this and has the I2C support excluded.
Note that for I2C mode, we only require one of the Logic Level Converter boards. However,
if you want to connect the circuit using SPI bus, you will need two of these boards.
You will notice that I have indicated connection points for an antenna and an amplifier.
The antenna can be a short piece of hookup wire (about 6") for FM reception. AM and
Short Wave antennas will be vastly different. You should research antenna designs for
those bands. The amplifier connection is simply a wire from the audio output of the
Si4735 to an amplifier of your design.
The wiring diagrams below provide all connections necessary in order to make the Uno communicate
properly with the Si4735:
(click the image to enlarge)
I've written a sketch based on Radu's example where I added a hardware button to scan
for stations (Seek Up). The screenshot below is from that sketch:
The following will provide some assistance to the user:
Si4735 Data Sheet
For information related to Arduino products (hardware, IDE), you can
visit their site:
Also, the Arduino Forum provides a wealth of information:
The source code for this project can be found
need to download this Si4735 library and then import it into your Arduino
IDE in order to have a successful compile. Radu's sketch
(under examples/Si4735_Example/) will demonstrate tuning on the
FM band and RDS decoding from a radio station broadcasting
the RDS stream.