// HACKER NEWS — CYBERSECURITY
Tea5767-Radio-Tuner
ESP32-based FM radio with TEA5767 tuner, KY-040 rotary encoder, PAM8403 amplifier, and 0.96" OLED display. Custom PCB design.
The project built an FM radio device using the TEA5767 radio module and the Arduino UNO in January 2026. Phase 2 includes designing a compact, custom-designed PCB board with further improvements while keeping the design simple and reproducible. The steps will be documented in this repository as I work on the PCB design (so, hopefully, I can finish this project).
The primary functions of the prototype Arduino circuit include manual and preset FM tuning, displaying the current frequency on a 16x2 LCD, and outputting audio via wired headphones. We could not use speakers to output sound as the TEA5767 module does not have a built-in speaker amplifier, which required us to solder directly onto the module. Photos of the prototype circuit and the circuit diagrams are shown in Figures 1 and 2.
To further improve the project, I decided to let it be my first PCB design while improving the radio device as well. The improvements that have been made include PAM8403 amplifier that will feed the audio into two 3-Watt, 4-Ohm speakers while working as a volume control, an ESP32 Development Board instead of the Arduino UNO to save space on the PCB, a 0.96 OLED display replacing the 16x2 Liquid Crystal Display for a similar reason, and a KY-040 rotary encoder that will serve as both the manual frequency and preset frequency control.
Before diving into the PCB design, I took my time to make sure that the circuit works on a breadboard. During this process, I realized some important things which include how although the TEA5767 module is designed to be powered by 5V, it can be (and should) be powered by 3.3V to protect the data pins on the ESP32 module. The manufacturer of the microcontroller Nulllab mentioned that a voltage larger than 3.6V on the I/O pins can cause chip damage, and powering the TEA5767 module from 5V and connecting the SCL and SDA pins to the data pins on the microcontroller will drive them up to 5V, exposing them to the risk of being burnt out. More information about the ESP32-DevKit-32E can be found at [esp32-devkit-32e] (https://github.com/nulllaborg/esp32-devkit-32e).
Furthermore, what has caught attention includes how the PAM8403 needs to be powered by a source other than the microcontroller. The speakers I used are 3-Watt speakers (6-Watts in total since I have two speakers), so assuming that we power the amplifier with 5V, the amount of current we get is I = P / V = 6W / 5V = 1.2A. This amount of current through the microcontroller pins exceeds the manufacturer's specified limit (absolute MAX per pin: 40mA) by a huge amount. Therefore, the amplifier and the microcontroller are wired in parallel to a single transformer of 5V 1.5A capacity. As the amplifier required large current to operate and even larger current to blast music, it is recommended to use adapters that can supply more than 1A to avoid brownouts in other regions of the circuit when the volume is turned up.
Having that in mind, I started drawing the circuit diagram in KiCad's schematic editor. The schematic can be seen in Figure 3.
Figure 3 [Schematic of the ESP32-based Circuit].
(To feed the audio signal from the TEA5767 module to the PAM8403 amplifier, I used a 3.5mm jack with a bare wire end, which was then connected to the L, G, and B pins on the amplifier. Note that these connections are not reflected in the schematic of the circuit as KiCad does not allow the schematic symbol of a device to have more pins than the device's footprint, which becomes a bit complicated for the TEA5767 module as it does not have designated pins for the L, G, R. One way to solve this is to draw the 3.5mm jack in the schematic editor; however, as the jack and the connection between the two modules will never actually touch the PCB, I decided to simply leave the pins on the amplifier not connected and draw the TEA5767 with only its physical pins).