In this project I will show how to build yet another FM radio controlled by Arduino. This time the schematics was simplified and oled display implemented. The RDA5807 FM radio module and Li-ion rechargeable battery are still here.
- The Li-ion battery 18650 with USB charger is used to power the radio.
- Graphical OLED 0.96" display is used that simplify soldering.
- To save the battery power, the display is mostly turned off and the micro controller put into sleep mode. The external interrupts on rotary encoder are used to wake up the micro controller and to change radio frequency.
- The list of 4 previous stations is implemented to simplify navigation between the stations.
- RDS information (station name) is displayed in the top of the screen.
- The screen backlight is automatically adjusted.
The RDA5807 is a self-sufficient radio module. It implements 3.3V power source. the ams-1117-3.3 voltage regulator guarantees the correct voltage on the radio module and the screen. To make the volume acceptable, the simple audio amplifier is implemented. The Li-ion battery powers the amplifier directly, without any regulator.
The U8GLIB graphic library is used to display the information on the OLED display. This library is fast, reliable, expandable and very convenient for many black and white displays. I have added some new Cyrillic font to the library, so please select the font you have in the sketch.
How to control the radio
As was stated above, the OLED display is turned off and the controller is put in sleep mode in 1 minute of inactivity. The Radio is still running. When the rotary encoder changed, the controller wakes up and the display is turned on.
Still, there are two modes the tuner can run: automatic mode and manual mode. By default, automatic mode is used. In this mode the radio module seeks the stations up or down when you rotate the encoder forward or backward. The station changes to the next one with the good signal level. You can set frequency by switching to the manual mode. Just press the encoder once to switch between the modes.
The last 4 stations list is saved in the EEPROM of Arduino each time you change the station. To save the life of the EEPROM, save procedure invokes in a minute after the station have been changed. So you can freely search the favorite station without saving anything in the EEPROM.
To list the last 4 stations, press the encoder for long time (about 2 seconds). Then you can rotate the encoder to select the station from the list. To switch to the station, press the encoder.