Why the Sparkfun Si4735 radio shield is all wrong

The problem is sparkfun that is not selling breakout anymore. I'll have to buy an "adapter board" and solder by myself.

Hello Krodal and Wagner,

I'm actually trying to design my own schematic to use with the Si4735. I'm trying to construct a single station radio using the Si4735 chip with an Atmega328 and an Analog Devices ssm2305 class d amp. The goal is to have a compact radio that can be tuned once in the coding and powers on to a specific FM station. Basically this project is coming from having used the Si4735 shield that Sparkfun was selling in this manner, but now trying to pair it down with fewer components. I thought this would be a good place to post a picture of my current schematic for some feedback since you guys have a lot to say on the topic.
Any comments on the design would be great!
Thanks!

Did you read the document about the antenna circuit.
The 180nH and the 18pF are for a 'tuned' antenna circuit.
It could increase the sensitivity, but if there is a mismatch, the reception gets worse.

I would like to see protection diodes for the antenna input.

Why is the green led on the SCK pin ?
You have so many unused pins, you might as well use another.

I think that sometimes a diode is used at the reset circuit. Parallel to R1. See the schematic of the Arduino Uno.

Hello, I recently made radio breakout board based on si4737. It's I2C, 3.3v and 5v compatible (jumper select), it got i2c level shifter, buffer, and automatic stuck bus repair, also decoupling capacitors, power filtration and other things.
I have modified 2 arduino si4737 libraries to work with it but had not much luck, so I wrote code myself to get make it power up and set radio frequency to station but I am experiencing exactly the same issue: radio won't tune to station. I am 101% sure that circuit is perfectly functional, I even tried with Due and Mega.
When radio powers up I hear small pop in speakers, status request responded with 0x80 (clear to send), when I try to tune to specific station or seek up it just won't do it. Doesn't matter if I use library or my own code. I got 40 radio boards and all of them behave the same, sure that I am missing something in the code but can't figure out what. I am not really good at programming but I programmed I2C devices that didn't have library for Arduino before and never had a problem that I can't solve. :~

Please help solve this issue I will supply, schematic and all necessary information that you need.
Some info to start:

  • Board doesn't have optional crystal oscillator because it's doesn't give any advantage, and occupies digital out pin.
  • SEN pin is routed to pin header to select one of two I2C addresses.
  • Short FM antenna trace is onboard (optionally can solder wire to it)

First person that solves problem will get my radio breakout mailed to you for free.

Can you post the schematic of your breakout board

Solved the mystery!!!

Datasheet failed to mention that if you don't install optional crystal oscillator you still need to feed RCLK pin from external source in order to tune or auto-seek.

I soldered short wire to RCLK pin and programmed timer 3 on atmega1280p (my other custom Sound and internet radio player project board) to set frequency to 31250 Hz with this command:

pinMode(5, OUTPUT);
TCCR3B = TCCR3B & 0b11111000 | 0x01;

Then set reference clock to 31250 Hz:

write_reg_one(0x0201, 0x7A12);

Set reference clock divider to 1
write_reg_one(0x0202, 0x1001);

Then I gave this command 10 milliseconds before tune command:

analogWrite(5, 128);
delay(10);
write_reg(0x20, 0x00, 0x26, 0xDE, 0x00);

after Seek or Tune command complete I can shutdown to reduce noise:

analogWrite(5, 0);

Works like a charm.

Greetings. I am a broadcast (and audio) engineer and may be able to help with questions concerning RF layout and design for the antenna input.
I know RF design well, but have never written a line of code in my 40 year career, so I hope you people can help me with that. I specifically am trying to learn the Arduino IDE to be able to use the Silicon Labs radio chips. When used with a decent RF input interface, these SRD chips are amazingly good radios.
To answer one question regarding switching ferrite loop antennas; reed relays are a great choice for low level RF switching. Most all of the purely electronic, non-relay, means of RF switching have issues with dynamic range and are not good design choices for one new to the art of RF design.
A pet project for me would be to get the Opus encoding codec onto a companion chip to encode compressed audio streams to play on a web page. Mp3 is plain nasty to trained ears and is wholly unacceptable for music, esp at 64 kbs, where AAC-HE and Opus rule. Opus is not as good as AAC, but beats the hell out of mPig3, and is open source.
AAC-HE is costly and unavailable to hobbits like us, but works better by far for music at 64 kbs than any other lossy codec.

Hi BillSacks.
What would you recommend for FM and AM antenna. I am redesigning my radio breakout board and I will manufacture them soon. They will be available on ebay as "Si4737 Radio Breakout" in approximately one month and will work with Arduino programming environment. I am using short pcb trace for FM antenna with optional solder point to attach a wire or antenna. For AM it got just a connections to solder Ferrite or Loop antenna.

Also radio analog audio output got decoupling capacitors of 2.2mf value, and they give really good result. Radio now able to directly drive small headphones or earbuds and it's easier to connect it to an amp.
Would you recommend different values or some type of ferrite bead to make audio sound crystal clear?

I want to know what you think and hear your advice.

Also if anybody reading this post is interested in this radio breakout and have any suggestions, now is a perfect time to tell me, I will accept suggestions for up to 2 weeks from today's date (June 7).

I would like to tune to LW, AM, FM, SW from the Arduino.
So I want to be able to switch the antenna for FM and SW, and also switch between a AM ferrite and LW ferrite antenna. At least I want to be able to add that myself.

Hi Krodal.

What do you think about solder points (surface or Thru-hole) for antennas, female pinheaders, or both. do you whant to be able to disconnect short on board trace for FM antenna? Maybe install in between onboard FM antenna trace a 0 ohm smd resistor?

Also most important It will be I2C (2-wire) interface running at up to 400 KHz, I can make I2C go up to 1MHz but would cost additional $3 more in parts. Do you think slower communication but cheaper or faster but slightly more expensive?

Surface solder points and surface scratchable/breakable traces are okay for me.

What about solder points for a single row header for an add-on board ?
The same way a shield is connected to an Arduino board.

The default Arduino 100kHz I2C bus is good enough. You are not going to stream audio via the I2C. Selecting a radio station is only done once, and reading RSSI a few times a second is all that is needed.

Are you going to use that tuned-antenna circuit (with the 18pF and 180nH) ? I hope not. I would like 100pF to the FM input with protection diodes, and perhaps an inductor 1u ... 4u7 as a filter for the SW.

I see many designs without a capacitor on the FM antenna, but I break too many FM modules by accidently touching the antenna with a DC voltage.

Just want to make it clear, Si4737 that being used in design got small difference between Si4735.

It doesn't have or support SW/LW Receiver, instead it got WB Receiver. Everything else is the same.

For the question if I will use tuned-antenna circuit, answer is no. I want to make it so people can install what they want there. Version 1 (previous design) just got PCB antenna trace and optional solder point for FM. AM got input capacitor built in so anybody can connect AM loop or ferrite antenna directly to it.

Well Alex, the subject of antenna matching is complex. Since your timetable is so short, perhaps its best for you to put just the required blocking capacitor and mandatory protection clipping diodes at the chip to a pin right there with a valid RF ground directly as a pair of 0.1 header pins near the IC for various antenna matching modules. Also, in addition I would recommend you provide a few pins to this proposed RF input sub board for later versions to include power and power ground along with a pair of pins that are SPI or I2C lines desired to to talk to this front end, so perhaps we can build on this and provide switching to multiple antennas or tuning a band pass filter along with the station selected using this piggy back antenna interface module. Skip holes for .3 pins before continuing along on the header for these utility pins, to give the needed space for the isolated two RF input pins providing the ant in and RF ground in addition to power ground on utility pins mentioned above.
The chip's line output is not a good headphone driver by any means. This subject could take many pages alone, but AC coupling a 32 ohm headphone with only 2.2 uF will roll off the low frequencies drastically. I think you mean 2.2 microfards, which is written as 2.2 µF, or sometimes 2.2 uF, because a 2.2 mF (millifard) capacitor might well be the size of a beer keg.
In order to have good bass response, you need a minimum of 470 uF which gives a -3 dB frequency of 10 Hz into 32 ohms; one octave below 20 Hz. Be aware most electrolydic capacitors do not sound good. Avoid them unless they are bipolar and made specifically for audio and use at least 1 uF of good film cap across them to help with high frequency distortion inherent in electolydics.
It is much preferred to use a bipolar power supply and DC couple headphones using a chip designed to drive this low Z- I'll post the part number for you- pinout is standard 8 pin opamp- use standard dual opamp dip 8 part in Eagle to layout. Please do not drive headphones with the Si chip directly. Also this allows you to put in a high impedance volume control in front of the headphone driver chip, either a regular log pot or digital volume control IC as the pot.
Also there are some details of headphone interface that will take too much space right here- no the ferite is unneeded, but an output isolation choke swamped with a resistor is nice for driving headphones as it isolates the FB loop from the low Z load at ultrasonic frequencies, but that's a whole subject alone. I use Eagle and will help you detail this. But my time is limited this next few weeks.You can never have enough time or RF ground vias...

Thank you for your response BillSacks.

I want to keep this board simple and cost efficient so I can sell it cheaper, but at a same time and don't want people to have any problems with it. I do have a question about ac coupling capacitors on analog audio output, I do know if I use low value it will filter low frequency's. Also I read all documentation on Si4737 and to get as familiar with this chip as possible. Question is why they recommend to install 0.39 uf capacitors on analog audio output instead of higher values? It's here on page 15:
http://www.silabs.com/Support%20Documents/Software/Minimize%20BOM%20webinar.pdf

I used 2.2 uf ceramic capacitors to be as small as possible and to filter out less of low frequency's, also because most of headphone amps (for example Texas Instruments) recommend to use 2.2 uf as ac coupling on their products.

Also why silicon labs recommends to put 0 ohm resistor (link) before FM antenna?

I do already have completed schematic, but still improving things. Maybe I will post it here so you can maybe suggest improvements or find mistakes if any. I do take my time to carefully check my schematics for mistakes.

Hi Alex; The Si app note is showing it as meant to be connected to a higher impedance than your headphones (which are defined as 32 ohms standard now). In order to get the same 10 Hz -3 dB point, the impedance of the (inferred) input it drives must be over 40 k ohms; you need to drive 32 ohms, and therefor, the capacitor required is 470 uF. There must be a volume control, or users can be harmed by it being too loud. The output of that chip is not likely designed to drive 32 ohm loads, and that should be evident by the 0,39 uF output capacitors which indicate a load of > 40 k being driven.
I'll help you get a headphone amp on this board if you wish, or show you how to produce a line level output for driving an outboard powered speaker or headphone amp. Include just the schematic of a proper headphone amp if the board size will not allow it.
Never ever use a ceramic capacitor to couple audio by the way, they introduce distortion and just plain sound really bad. Use films for up to 1 uF or so and bipolar elecrolydics specifically designed for audio coupling for higher values. Use Nichicon ES Audio rated bipolars and you cant go wrong- http://www.mouser.com/ds/2/293/e-es-3258.pdf
I strongly recommend a volume control into a proper headphone amplifier such as an SSM 2135 (best choice for you).
The zero ohm is just a jumper to allow flexibility. If you just put the pins as I suggested, no jumper is needed. No app note with a short antenna will apply unless you can tune the values with RF gear. If the user just puts a one meter wire to the input at the pins, the FM performance will be better than any small ant on the board- they are useless for this frequency; that's why there are not FM radios inside cell phones. FM needs a longer antenna than can be put on a little PCB
AM is another story, with an air core tuned loop being the best option, so leave that totally open with just a connection and allow people to make proper antenna or 75 ohm cable input interfaces to it.

Hello, I just want to post an update on the radio breakout board.

Board will consist of two half's, first is a main radio board, and second half is a customizable sub-board.

Main board is set to I2C mode and got a jumper for setting one of two I2C addresses, also it got built in logic level shifter for SDA, SCL, Reset, and Interrupt capable of speeds up to 400kHz selectable by jumper for 5v and 3.3v operation.Combination of 32.768 kHz crystal and inverting logic making a single pin clock generator to provide clock for CLK pin, making clock more stable and digital audio output usable. Voltage regulator to provide clean 3.3v power to the logic as well as sub-board.

Sub-board is like a plug-in shield for main board that is fully customizable for your needs, it got antenna inputs, optional FM trace, optional digital audio output, optional analog outputs, and optional headphone amp.
Headphone amp got Panasonic low ESR film decoupling capacitors on input, preset gain (volume control is inside Si4737 for I2C control), and MAXIM Integrated capacitor-less audio output architecture to keep board small size.

I am delaying for a week (in 3 weeks) release date because I am also designing other small boards for Arduino and want to put them all on the same panel.

Board will be compatible with Si4735 Arduino library with following simple modification to it:

  1. Use external clock source
  2. Set to I2C mode
  3. Interrupt pin is inverted (change interrupt trigger state)

Let me know what you people think about this Si4737 Radio Breakout (more like a shield).

Sorry for not updating status on Si4737 Radio Module, I was really busy with other things. Board was made and works flawless. Didn't had time to write code for it, so I modified some things in sparkfun SI4735 library to make it compatible, it does need some work to make easy use of weather band. Board have all the features described in previous post. Beats hell out of sparkfun version. Here's some pictures of the final product:

MCU Radio Modules available for sale. if anyone needs it for their projects, this is great working design. Can be used with Sparkfun's library with small modifications or without any library, I can provide sample sketches and plenty of help. Boards already been bought and tested by other people thru this forum. It's $30 via paypal or $35 thru ebay, standard shipping in USA is $3.
Send me private message and I will respond. All boards made and shipped from USA Michigan.
Thank you.
Alex.

I can't find it on Ebay.
It is okay if you post a (commercial) link to your Ebay item, after puttting so many work in it.

Hi, Krodal. Sorry but I run out of them already. I need order some parts to assemble more of them. You are 100% right about the link to the item, and I will post it, as soon as I put some more on ebay.