RDA5807

Arduino Library for SINGLE-CHIP BROADCAST FM RADIO TUNER RDA5807

View on GitHub

Examples

This folder has some examples that might help you to use the RDA5807 Arduino Library in your receiver project. If you find some error or problem during your implementation, please let me know.

This project is about a library to control the RDA5807 device and the focus of this project is the library and its functionalities. Please, don’t ask me to assist you in your: displays, encoders, LED, buttons or something else out the library scope. Thanks.

The examples stored in this folder are made to assist you to build your own sketch. Therefore, it is important to say that there was no care with the layout. This part of the project stays with you.

The RDA5807_01_SERIAL_MONITOR folder shows how you can check your circuit by using just the Arduino IDE Serial Monitor to control the receiver. Check the examples with Atmega328 and ESP32. In the sketch you will find the wireup with Atmega328 or ESP32 and RDA5807 device.

The following table shows the main examples implemented in this library. These examples can guide you to build your own receiver.

Sketch Name Description
RDA5807_00_CIRCUIT_TEST Useful to check the circuit and many functions implemented in this library
RDA5807_00_MINIMAL_RECEIVER It is a minimal receicer with two push buttons (ATmega328 - Uno, Nano etc)
RDA5807_01_SERIAL_MONITOR/
RDA5807_01_ALL_TEST_SERIAL_MONITOR
More about Tune, Volume, Seek and RDS features
RDA5807_01_SERIAL_MONITOR/
RDA5807_01_RDS_TEST_SERIAL_MONITOR
Test RDS functions using Serial Monitor
RDA5807_01_SERIAL_MONITOR/
RDA5807_02_ESP32
Test and validation of RDA5807 on ESP32 board
RDA5807_01_SERIAL_MONITOR/
RDA5807_03_STM32
Test and validation of RDA5807 on STM32 board
RDA5807_02_TFT_display This sketch uses an Arduino Pro Mini, 3.3V (8MZ) with a SPI TFT ST7735 1.8
RDA5807_03_ATTINY_84_85 Test and validation of RDA5807 on ATtiny84 device
RDA5807_04_NOKIA5110 This sketch uses an Arduino Nano with NOKIA 5110 display
RDA5807_05_LCD16X02 This sketch uses an Arduino Nano with LCD16X02 DISPLAY
RDA5807_05_LCD16X02_ESP32 This sketch uses an ESP32 with LCD16X02 DISPLAY
RDA5807_05_LCD16X02_ESP32_I2S I2S setup - This sketch uses an ESP32 with LCD16X02 DISPLAY and MAX98357A I2S setup
RDA5807_06_UNO_TM1638 This sketch drives the RDA5807 FM receiver and TM1638 (seven-segment display control)
Arduino Nano and OLED with Tiny4kOLED library Nano and OLED implementation V1
Arduino Nano and OLED (Adafruit_GFX and Adafruit_SSD1306) This sketch works on Atmega328 and LGT8FX based board. It is a I2C OLED setup
LilyGO/T-Embed and RDA5807 setup This sketch was an adaptation of the Volos’s sketch and uses PU2CLR RDA5807 Arduino Library with LilyGO T-Embed.

If you find this project useful, consider making a donation so that the author of this library can purchase components and modules for improvements and testing of this library. Click here to donate.

Examples and Schematics

Basic circuit (examples RDA5807_00_CIRCUIT_TEST and RDA5807_01_SERIAL_MONITOR)

Basic Schematic

Minimalist receiver based on RDA5807

The following code illustrates a minimalist implementation of a receiver based on RDA5807 and this library. For this receiver, the user has two pushbuttons to tune station (Seek Up and Seek Down).

#include <RDA5807.h> // It is a minimal receicer with two push buttons (ATmega328 - Uno, Nano etc)
RDA5807 rx; 
void setup() {
  pinMode(4, INPUT_PULLUP); // Arduino pin 4 - Seek station down
  pinMode(5, INPUT_PULLUP); // Arduino pin 5 - Seek station up
  rx.setup(); // Starts the receiver with default parameters
  rx.setFrequency(10390); // Tunes in 103.9 MHz  - Switch to your local favorite station
}
void loop() {
  if (digitalRead(4) == LOW) rx.seek(RDA_SEEK_WRAP,RDA_SEEK_DOWN);
  if (digitalRead(5) == LOW) rx.seek(RDA_SEEK_WRAP,RDA_SEEK_UP);
  delay(200);
}

Minimalist receiver based on RDA5807 circuit

Minimalist receiver based on RDA5807

TFT Display (example RDA5807_02_TFT_display)

Schematic - Arduino and TFT Display

Attiny84 with OLED setup

Schematic - Attiny84 with oled setup

Attiny85 with OLED setup

Schematic - Attiny85 with oled setup


FM receiver based on RDA5807 and LilyGO/T-Embed panel


RDS - TFT Display

Arduino Nano and NOKIA5110 schematic

Schematic -  Arduino Nano and NOKIA5110


Source Code


RDS and RDA5807 using this library

Arduino Nano and LCD 16x02

Schematic -  Arduino Nano and LCD 16x02


Source Code

ESP32 and LCD 16x02

Schematic -  ESP32 and LCD 16x02


Source Code


Video about the RDA5807 and ESP32 board

I2S and RDA5807FP Setup

Schematic -  I2S with MAX98357A and RDA5807FP Setup


Video about the RDA5807FP and I2S Digital Audio setup

The photo below show the DAC MAX98357A device

I2S DAC MAX98357A devices photos


Source Code

The table below shows the MAX98357A device connected to the RDA5807FP.

RDA5807FP DAC MAX98357A
GPIO2 DIN
GPIO1 RC
GPIO3 BCLK

The photo below show the CJMCU-1334 module CJMCU-1334 module

Arduino UNO and display module TM1638

Schematic -  Arduino UNO and display module TM1638

Wire up on Arduino UNO, RDA5807 and TM1638

Device name Device Pin / Description Arduino Pin
TM1638    
  STB 4
  CLK 5
  DIO 6
  VCC 3.3V
  GND GND
RDA5807    
  SDIO (pin 18) A4
  SCLK (pin 17) A5
  SEN (pin 16) GND

The TM1638 painel controls

TM1638 button Description
S1 Increments the frequency (100kHz step)
S2 Decrements the frequency (100kHz Down)
S3 Seeks the next station available (The direction is defined by the last action of frequency changing)
S4 Increments the audio volume
S5 Decrements the audio volume
S6 Turnn the audio On or Off
S7 Sets the Stereo On or Off
S8 Toggles Bass on or off)


Video about the RDA5807, Arduino Uno and 7-segment display based on TM1638 device

Examples of third parties