Electronics

FM Radio Station Transmitter Module for Arduino

AED 51.45

Low stock
1

Description

This FM transmitter is a sophisticated device constructed with a KT0803 K-based board and can be controlled by any Arduino board. This transmitter employs Frequency Modulation (FM) technology, spanning from 70MHz to 108MHz, to transmit voice signals. Powered by KTMicro's monolithic digital stereo FM transmitter IC KT0803K, this device excels in generating standard FM frequencies with remarkable efficiency.

 

Features:

  1. FM Transmission Range: Operates on FM frequencies ranging from 70MHz to 108MHz, providing a versatile communication platform.
  2. Low Power Consumption: The KT0803K boasts ultra-low power consumption, drawing only 17mA from a single power supply, ensuring energy efficiency.
  3. I2C Control: The microcontroller unit can seamlessly set the channel frequency and control the KT0803K as a slave using I2C wires (SDA, SCL), offering flexible and programmable functionality.
  4. On-Chip Audio Processing: The IC incorporates a 20-bit Audio Analog-to-Digital Converter (ADC) on-chip, enhancing the quality of audio signals. The on-chip Digital Signal Processing (DSP) core efficiently processes digital audio signals.
  5. RF Power Amplification: The output from the FM modulator is amplified by the RF power amplifier before being transmitted to the antenna through the RF out pin, ensuring a robust and reliable signal transmission.

 

Specifications:

  • I2C Interface: 5V TTL compatible, enabling easy integration with microcontrollers.
  • Plug and Play: User-friendly design for straightforward installation and operation.
  • Onboard Microphone: Equipped with an onboard microphone for speech input, enhancing versatility.
  • Power Supply: VCC Input ranging from 3.0V to 5.0V, providing flexibility in power source selection.

 

How the Module Works:

This module features a stereo input jack for audio input from external devices and includes an inbuilt microphone for capturing speech. The microphone signal is amplified and directed to the transmitter IC via a 9013 NPN transistor. The module's clock relies on a 32.768 K Crystal for accurate timing.

 

Connection and Control:

The FM module is controlled via a two-wire standard I2C interface, simplifying integration with microcontrollers like the Arduino UNO. Connection to the Arduino board involves linking the Vcc pin to the 3.3V power supply and grounding the module through the Arduino board's GND pin. The I2C pins (SDA and SCL) are connected to A4 and A5, respectively, on the Arduino UNO board, but these connections may vary depending on the microcontroller and board used.

Arduino FM transmitter Connections:

Arduino
FM Module
GND
GND
5V
VCC
SDA
A4
SCL
A5

Arduino Code – FM transmitter

First, you need to download the Library by Clicking Here

add the Library to the Arduino IDE then upload the next sample code

#include "FMTX.h"
float fm_freq = 90; // Here set the default FM frequency
void setup(void)
{
 Serial.begin(9600);
 Serial.print("FM-TX Demo\r\n");
 /**
 Initial, set FM channel and select your area:
 USA
 EUROPE
 JAPAN
 AUSTRALIA
 CHINA
 */
 fmtx_init(fm_freq, USA);
 Serial.print("Channel:");
 Serial.print(fm_freq, 1);
 Serial.println("MHz");
}
void loop(void)
{
 /** check for data setting new frequency. Users could input data from Serial monitor. Data
 must start with '&' and followed by 4 numbers, such as &8000. The first two is the integer part
 of new frequency (Unit: MHz), and the last one is the decimal part. And the channel must between 70MHz
 and 108Mhz. For example, &756 is 75.6MHz, and &666 is out of range.
 */
 if(Serial.available()){
 switch(Serial.read()){
 case '&':
 u8 i,buf[4];
 float ch;
 i=0;
 delay(30);
 while(Serial.available()&&i<4){
 buf[i]=Serial.read();
 if (buf[i]<= '9' && buf[i]>= '0') {
 i++;}
 else{
 i=0;
 break;
 }
 }
 if (i==4){
 ch = (buf[0]-'0')*100+(buf[1]-'0')*10+(buf[2]-'0')*1+0.1*(buf[3]-'0');
 if(ch>=70&&ch<=108){
 Serial.print("New Channel:");
 Serial.print(ch, 1);
 Serial.println("MHz");
 fmtx_set_freq(ch);
 }else{
 Serial.println("ERROR:Channel must be range from 70Mhz to 108Mhz.");
 }
 }else{
 Serial.println("ERROR:Input Format Error.");
 }
 while(Serial.available()){
 Serial.read();
 }
 break;
 }
 }
}