SIM800L and SIM800H:

In the SIM800 family, SIM800L and SIM800H is having FM radio function. In addition SIM800H module also having Bluetooth function.

SIM800L
SIM800L with MT6260SA and RF7176
SIM800H
SIM800H with MT6260DA and RF7176
There were many low cost 2G phones and Smartwatch design based on MT6261 or MT6260. To mention few the U8 plus and DZ09 smartwatches were based on these Mediatek ICs. DZ09 smartwatch almost uses all the available features of the MT626x IC.

This is the internal photo of the SIM800L module. The above SIM800L module is having MT6261MA and RF7198 IC and having a 26MHz oscillator. If we note the SIM800H marking seen on the bottom right corner. It looks both SIM800L and SIM800H uses the same layout and the functions are manipulated either by software or hardware with same footprint or ICs.

As we know these ICs are not single die silicon process. instead depends on what function we need, the multiple ICs were placed and bonded together.

This is the X-Ray image of MT6260 IC which clearly shows that it consists of multiple dies and bonded together inside.

A sharp eye can pick out the outline of multiple ICs among the wirebonds. Image credit: Nadya Peek

The above is a simple block diagram of MT6261 family processor. We can see this IC supports GSM/GPRS, Bluetooth and FM. 

Both SIM800L and SIM800H shares common footprint. Pin 36 for SIM800L is NC and SIM800H uses as BT antenna.

SIM800H module with FM and Bluetooth:

There are application notes available in english for both FM radio and Bluetooth with available AT commands.

SIM800 modules supports embedded AT commands which eliminates the extra host for simpler tasks. But how to program the module using Embedded AT develepment environment is unclear and poorly documented.

But there are commercially available modules with SIM800H module along with Atmega32U4 IC for easy arduino based programming.

The above board is having both SIM800H module and atmega32U4 processor. Below the module you can see the provision for connecting MIC and Speaker. The board operates on single Li-Ion battery with nominal voltage of 3.7V. The connection between the processor and the SIM module is through Tx and Rx lines along with few more control lines for power ON/OFF etc., 

Seeeduino GPRS module with SIM800H and Atmel 32U4 IC. You can also see the Bluetooth antenna apart from GSM/GPRS antenna. For FM the earphone leads acts as the FM antenna.

Bottom side view with SIM card and CR1220 battery for RTC backup.

Another module having SIM800H without any microcontroller on board. But Tx and Rx pins are available with convenient voltage level shifters to adopt to various logic levels.

One more SIM800H module used with GSM3 Click.

FM arduino code using SIM800L and SIM800H

#include <fm.h>
#include <SoftwareSerial.h>
 
int channelButton = 5; //used for changing channel
FM fm;
 
void setup() {
    pinMode(channelButton,INPUT);
    Serial.begin(9600);
    Serial.println("FM Test...");
    fm.preInit();
    while(0 != fm.powerOn()){
        Serial.println("FM power on failed, try again...");
        delay(2000);
    }
    fm.setVolume(6); //0,1,2,3,4,5,6
    fm.scanChannel();
    Serial.println("FM init success");
}
 
void loop() {
    while(HIGH == digitalRead(channelButton)){
        delay(50);
    }
    Serial.print("change Channel\r\n");
    fm.channelNext();
    while(LOW == digitalRead(channelButton)){
        delay(50);
    }
}

In this sketch we are using digital input D5 for frequency selection and the volume is fixed at level 6.

FM radio with SIM800H using Bluetooth:

#include <bluetooth.h>
#include <SoftwareSerial.h>
 
#define DEFAULT_TIMEOUT 5
#define BT_BUF_LEN      32
BlueTooth bluetooth;
 
char bluetoothBuffer[BT_BUF_LEN];
int start = 0;
 
void setup() {
    Serial.begin(9600);
    Serial.println("Bluetooth AT Command Test...");
    bluetooth.preInit();
    delay(3*1000);
    while(0 != bluetooth.powerOn()){ //bluetooth PowerOn
        Serial.println("bluetooth power on failed, try again...");
        delay(2000);
    }
}
 
void loop() {
    if(bluetooth.serialSIM800.available()) {
        start = 1;
    }else{
        delay(500);
    }
 
    if(start){
        //bluetooth.cleanBuffer(bluetoothBuffer,64);
        bluetooth.readBuffer(bluetoothBuffer,BT_BUF_LEN,DEFAULT_TIMEOUT);
        if(NULL != strstr(bluetoothBuffer,"+BTPAIRING:")){
            bluetooth.acceptPairing();
        }
        if(NULL != strstr(bluetoothBuffer,"+BTCONNECTING:")){
            bluetooth.acceptConnect();
        }
        start = 0;
    }
}

After resetting the board, we can see the status using any serial port terminal from PC. We can use Putty, Tera Terminal or Arduino serial monitor. We can use any one of them. Just we need to select the COM port number with any baudrate upto the maximum of 115200 starting from 1200.

Now you can pair with any smartphone. Once paired and connected, using the Bluetooth controller app, we can issue any AT command.

After establishing the Bluetooth connection between smart phone and the SIM800H module, it will be much easier to command and control the SIM800H module.  

There are many apps available for both Android and Apple phones. The above app was already installed for testing  HC-05 modules some time back. So I have reused the same app.  There is no other reason behind using this particular app.

This app supports both Macro Buttons and Slider bar interface for easy manipulation of fixed and variable parameters.

After turning ON the SIM800H module power followed by turning ON the Bluetooth, the module will be visible in our smart phone and we can pair it with the SIM800H module.

Once after pairing and connected with the SIM800H module, we can send AT commands by typing in the top text box. But instead we can edit the butttons and sliders with the required AT commands for one time, then it will be much easier to operate the radio without typing any single AT commands. Just pressing the Macro Buttons and Slider will do.

FM RADIO ON BUTTON:

FM RADIO OFF BUTTON:

FM SCAN:

CURRENT FREQUENCY:

This AT command returns the currently selected FM frequency

VOLUME CONTROL:

Volume control varies from 0 to 6 levels. So we can easily implement using the slider 

Similarly we can edit all of our required station frequency into a button so that we need not to type any of the AT commands to operate the FM radio.

There is a similar project for FM RADIO using Arduino Uno, OLED and potentiometers using SIM800L without bluetooth feature.