Ramji Patel
Published © GPL3+

Digital FM Radio

Arduino Digital FM Radio Receiver

AdvancedFull instructions provided3,188
Digital FM Radio

Things used in this project

Hardware components

Arduino Nano R3
Arduino Nano R3
×1
Li-Ion Battery 100mAh
Li-Ion Battery 100mAh
×1
Antenna, Cellular / LTE
Antenna, Cellular / LTE
×1
Speaker, Piezo
Speaker, Piezo
×1
Alphanumeric LCD, 16 x 2
Alphanumeric LCD, 16 x 2
×1
Rotary Encoder with Push-Button
Rotary Encoder with Push-Button
×1
Development Board, Class D Audio Amplifier Module
Development Board, Class D Audio Amplifier Module
×1
Toggle Switch, (On)-Off-(On)
Toggle Switch, (On)-Off-(On)
×1
Philips hue tea5767 FM RADIO IC
×1
Rotary potentiometer (generic)
Rotary potentiometer (generic)
×1

Software apps and online services

Arduino IDE
Arduino IDE

Story

Read more

Schematics

digital radio circuit

you can download it from easy eda website

Code

digital radio code

Arduino
copy and paste
// This project is in public Domain //
// Project Designer... Ramji Patel376//
//visit Arduino.cc and project Hub//
#include <Wire.h>
#include <LiquidCrystal.h>
#define clk 2
#define dt 3
#define sw 4

LiquidCrystal lcd(5,6,7,8,9,10);

double frequency;
unsigned char frequencyH = 0;
unsigned char frequencyL = 0;
unsigned int frequencyB;
volatile boolean TurnDetected;
volatile boolean up;

void isr0 ()  {
  TurnDetected = true;
  up = (digitalRead(clk) == digitalRead(dt));
}
void setFrequency()  {
  frequencyB = 4 * (frequency * 1000000 + 225000) / 32768;
  frequencyH = frequencyB >> 8;
  frequencyL = frequencyB & 0XFF;
  Wire.beginTransmission(0x60);
  Wire.write(frequencyH);
  Wire.write(frequencyL);
  Wire.write(0xB0);
  Wire.write(0x10);
  Wire.write((byte)0x00);
  Wire.endTransmission(); 
} 
void displaydata(){
 lcd.setCursor(1,0);
 lcd.print("FM:");
 lcd.print(frequency);
} 
void setup() {
  Wire.begin();
  lcd.begin(16, 2);
  pinMode(clk,INPUT);
  pinMode(dt,INPUT);  
  pinMode(sw,INPUT); //frequency mode
  frequency = 92.7; //starting Frequency
  setFrequency();
  displaydata();
  attachInterrupt (0,isr0,FALLING);
}
void loop() {
if (TurnDetected){
  if(up){
    if (frequency >= 107.90){
    setFrequency();
    displaydata();}
    else{   
      frequency = frequency + 0.1;
      setFrequency();
      displaydata();}}
   else{
      if (frequency <= 87.6){
        setFrequency();
        displaydata();}
      else{
      frequency = frequency - 0.1;
      setFrequency();
      displaydata();}
      }
      TurnDetected = false;
    }
}


    
  
 

Credits

Ramji Patel
26 projects • 19 followers
Myself Ramji Patel. I am an Engineering student and pursuing my B-Tech from Institute of engineering and rural Technology Prayagraj, India.

Comments