SIM800L giving weird characters

I am working on a home automation using sim800l with arduino pro mini. I have interfaced everything ok and am using two laptop battery cells connected in parallel to power the GSM module and it blinks at every 3 secs. I have uploaded the following code to test it

#include <SoftwareSerial.h>

String Arsp, Grsp;
SoftwareSerial gsm(11, 10); // RX, TX

void setup() {
// put your setup code here, to run once:

Serial.println(“Testing GSM SIM800L”);


void loop() {
// put your main code here, to run repeatedly:

Grsp = gsm.readString();

Arsp = Serial.readString();


but when i launch the serial monitor and do an AT command i get the following response in the attach imageard

There are multiple possibilities about where you are going wrong here. lets have a look at all the ways we can trouble shoot this issue

  1. What Kind of breakout Board are you using for that sim 800L module? The Li-Ion Batteries provide 4.2 when fully charged and 3.7 when they are in used for some time. are you sure that the sim800L Doesn’t require a pure 5V at 2Amps?

  2. Did you connect the GSM TX to Pin 11 and GSM RX to Pin 10 of the arduino and is the Ground Common for Both??

  3. Are you sure that the default BaudRate of the sim800L is 9600? Sometimes its also different. To troubleshoot this, remove the atmega Chip from your arduino Board. Connect the TX of arduino board to Rx of Gsm And Rx of Arduino Board to Tx of GSM & Join The Common Ground Together. Open the Serial Monitor On the Arduino IDE and set to 38400 or 115200 or 19200 and hit “AT” every time you change the Baud Rate. Here you can find what is the Actual Suited Baud Rate used by the gsm Module.

Note: I will recommend you to buy a FTDI Breakout Board, Its useful when you do these kinds of UART based Projects.

Do Let me know if the Problem Gets Solved
Parth Temkar

1 Like

I resolved the issue and found out the signal on RX pin of the GSM module needed to be stepped down and the baudrate of the GSM is set to 115200 as default but after that when sending trying out AT command sometimes i get weird characters and sometimes it just works fine. Could the baudrate be too high? Kindly advice.

1 Like

How did you step it down?

i used a resistor divider, where i connected A 10K resistor between SIM800L Rx and Arduino D11, and 20K between SIM800L Rx and GND. Also to solve the weird characters issue i used AT Commands to set the default baudrate to 19200 which now works fine and flawless.

Doing voltage level translation using resistors is not the right way to do it. You are weakening the Signals and making them susceptible to noise. Use a proper level translator.