The core components of this radio receiver are the QN8035 tuner and 32.768kHz oscillator. This entire radio design is to be powered by a 3.3V power supply. In our prototype, we drive this radio receiver using 3.3V supply terminals provided on the Raspberry Pi board.
The I2C bus has been used to interface the Raspberry Pi and QN8035 tuner IC. On Raspberry Pi, the I2C pull-ups are not necessary with this module. For other development boards, please check the pull-up resistor requirement from the documentation/schematic.
Initially, we developed a simple console application to test this tuner. This application and its source code are available at github.com/dilshan/qn8035-rpi-fm-radio. Binary executable compiled for the 32-bit Raspberry Pi operating system can also be downloaded in the release section of the above repository.
The terminal application is written using GCC and WiringPi library. Be sure to enable I2C support on Raspberry Pi using the raspi-config
tool before testing this application.
After testing the QN8035 with the above application, we developed a GUI tuner application using GTK. This application provides all the features provided in the console application and which includes:
- Manual and automatic station scanning.
- Decode RDS PS (program service) data.
- Volume control.
- Display RSSI and SNR readings receive from the tuner.
Both these GUI and terminal applications have the RDS PS decoder to display the program/service name. As we have observed, the QN8035 RDS registers populate if it receives strong signals only. In some weak points, we observed that the RDS buffer received lots of incorrect data.
In setting up our tests, we used a 30cm long wire antenna with this radio receiver and received extremely stable reception. With a proper FM antenna, we got all the stations in the FM broadcast spectrum and were able to capture almost 95% of the channels and RDS data without any problems.
We designed this receiver on a single-side PCB to minimize soldering inconvenience. The dimensions of the PCB are 58mm × 26.75mm.
The complete construction and configuration steps of this tuner are shown in the video presented in this article.
great job, i have tested it and it's working...is there any way how to modify the gui and add some presets buttons ?