Make an Arduino FM Radio! (using TEA5767)
by electromanmx in Circuits > Arduino
53159 Views, 191 Favorites, 0 Comments
Make an Arduino FM Radio! (using TEA5767)
Hi guys from Instructables, In this tutorial i'll show you how to make a FM digital Radio easily using arduino uno (or any other arduino board), and the TEA5667 Fm Radio module, and audio amplifier and a LCD 16X2.
Let´s start !
Block Diagram & Connections.
First, the part list of needed electronic components:
-Arduino UNO, or any other similar board friendly with the arduino enviroment.
-TEA5767 FM Radio module
-16X2 LCD
-2 Buttons Normally open (NA) or push buttons
-330 ohms resistor
-2x 10 k ohms reisistor
-Jumper wires
-Switch for to power on the radio
-Led(as a power on indicator).
-A free weekend or day :)
Arduino Program & Libraries
*First you'll need to install the librarys on the arduino IDE and later compile and upload the program*
The code in text is here:
/*+-10--9--8--7--6-+
| +------+ ++ |
| | TEA | || |
| | 5767 | || |
| +------+ ++ |
+--1--2--3--4--5-+
1 ----> Arduino SDA (pin A5 arduino uno)
2 ----> Arduino SCL (pin A4 arduino uno)
3 ----> GND
5 ----> +3.3 V
6 ----> GND
7 ----> Audio out (right channel)
8 ----> Audio out (left channel)
10 ---> Antenna
* LCD RS pin to digital pin 12
* LCD Enable pin to digital pin 11
* LCD D4 pin to digital pin 5
* LCD D5 pin to digital pin 4
* LCD D6 pin to digital pin 3
* LCD D7 pin to digital pin 2
* LCD R/W pin to ground
* ends to +5V and ground
* UP SEARCH (A0)
* DOWN SEARCH (A1)
* ALL RESISTOR ARE 10K AND PUSH BUTTON IN PULL DOWN MODE
*/
#include<Wire.h>
#include <TEA5767Radio.h>
#include <LiquidCrystal.h>
TEA5767Radio radio = TEA5767Radio();
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
float frequency = 0;
int fUP = A0;
int fDOWN = A1;
int count = 0;
void setup()
{
delay(1000);
Wire.begin();
frequency = 91.1; //starting frequency
radio.setFrequency(frequency);
lcd.begin(16,2);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("FM: ");
lcd.setCursor(0, 1);
lcd.print(frequency);
}void loop()
{
if(digitalRead(fUP))
{
count=0;
while (digitalRead(fUP))
{
count++;
if(count > 0 && count <= 6)
{
frequency += 0.1;
frequencyUpdate();
delay(200);
}
else if (count > 6 && count <= 2)
{
frequency += 0.1;
frequencyUpdate();
delay(80);
}
else
{
frequency += 0.1;
frequencyUpdate();
delay(5);
}
}}
if(digitalRead(fDOWN))
{
count = 0;
while (digitalRead(fDOWN))
{
count--;
if(count < 0 && count >= -6)
{
frequency -= 0.1;
frequencyUpdate();
delay(200);
}
else if (count < -6 && count >= -12)
{
frequency -= 0.1;
frequencyUpdate();
delay(80);
}
else
{
frequency -= 0.1;
frequencyUpdate();
delay(5);
}
}
}
}
void frequencyUpdate() //this function changes the frequency of the station, is called by preset and frequency up/down conditions.
{
frequency = constrain(frequency, 88.0, 108.0);
lcd.setCursor(0,0);
lcd.print("ESTACION DE FM:");
lcd.setCursor(0,1);
lcd.print(frequency);
radio.setFrequency(frequency);
}
Final Pictures!
Here some nice pictures and teh radio with the shield totally functional!
ESPECIAL NOTES:
*Remember to use an a good audio amplifier for the output of the TEA5767 FM Radio Module
*Vcc= 3.3 TO 5 Volts maximun for the power of the TEA5767 Radio Module
*To use a good onmidirectional antenna
*The radio doesn't have an automatic searh for the FM stations but it's modifficable by the program