Recently I bought an FM Reciver from ebay for about $3 is a RDA5807 from EIModule, no offense but their documentation is useless.  How ever it has an I2C interface and its compatible with the TEA5767. Sorry about the pics using my cellphone.





(1) RDA5807 FM Radio Module

A. Input Power2.7~3.6V

B. Frequency Range: 87.5~108MHz

C. 32Ω Load Audio Output. Can drive earphone directly

D. Control Interface: I2C

E. 3.5mm Audio Jack for audio output

F. DIP28


(2) Arduino (mega in this case)


(3) Jumper wires


(4)Headphones or 3.5mm audio cable to drive an amplifier




Step 1: The Wiring


Connecting to arduino is very simple

We have 28 pins  but we only need 4 or 5 if using an external antenna.


Module                     Arduino Mega

Pin 8 SCL                     Pin 21              

Pin 9 SDA                     Pin 20

Pin 14 GND                  GND

Pin 27  3.3V                  3.3V



Note: you can connect 5V to Pin 28 if you don’t have 3.3 available.


Note: The schematics found on the documentation say that   PIN 26 is GND if you connect pin 26 to ground the module WILL NOT WORK!! GND is PIN 14.


Note: The module uses GND from the 3.5mm jack as an antenna but you can also use an external antenna connected to PIN 15.  

What errors are you getting? What is the problem?
<p>Ok i learned you are using on tea5767 mode.</p><p>I wanna use rda5807m no tea5767, Can you help me about this ?</p><p>#include &lt;Wire.h&gt;</p><p>unsigned char x,y;</p><p>void setup()</p><p>{</p><p>Serial.begin(9600);</p><p>Wire.begin();</p><p>setFrequency();</p><p>}</p><p>void loop()</p><p>{</p><p>Wire.beginTransmission(0x11);</p><p>Wire.write (0x03); // request 6 bytes from slave device #2</p><p>Wire.endTransmission();</p><p>Wire.beginTransmission(0x11); // base address</p><p>Wire.requestFrom(0x11,2); // We want one byte</p><p>x=Wire.read();</p><p>y=Wire.read();</p><p>Serial.println(x,HEX); // print the character</p><p>Serial.println(y,HEX);</p><p>delay(1000);</p><p>}</p><p>void setFrequency()</p><p>{</p><p>delay(500);</p><p>Wire.beginTransmission(0x11);</p><p>Wire.write(0x02);</p><p>Wire.write(0xC0); Wire.write(0x0D); // write 0xC00D (RDS on etc.) into 0x02</p><p>Wire.endTransmission();</p><p>delay(500);</p><p>Wire.beginTransmission(0x11);</p><p>Wire.write(0x03);</p><p>Wire.write(0x1B);</p><p>Wire.write(0x80);</p><p>Wire.endTransmission();</p><p>}</p><p>İt is not working i dont hear anything :(</p><p>and 0x03 value not same my wrote value .</p>
Ok let me modify the code
<p><a href="http://forum.arduino.cc/index.php?topic=335766.0" rel="nofollow">http://forum.arduino.cc/index.php?topic=335766.0<br></a>My nick name &quot;WhereIsMyMind&quot;</p>

About This Instructable


24 favorites


Bio: Master Diesel Tech, in California. I love electronics and everything science .
More by verdelj: How to write a library the easy way Bootloading ATmega328 with Arduino Mega2560 FM Radio the easy way
Add instructable to: