SIM800L on Uno unstable serial communication

Hi all,

got issues with my SIM800L board. (SIM800L)

Seems like the serial communication is unstable. sometimes I can connect with my serial monitor and sometimes not.
When I send the AT commands the response is sometimes error and sometimes it works.

I tried several examples from Vittorios library from Github (Github), as well as some codes from the Internet, see below the one that worked best.

I took regards on the power supply. It comes with 4Volts from a laboratory supply, so 2A current capability is also guaranteed.

I wasnt sure if its neccessary to adapt the signal levels between Arduino GPIO 5Volts and SIM800L 2,8Volts UART or if its already in the PCB. So I have built the interface as its written in the hardware spec on page 31 (see attachment). It didnt become better. Ive read somewhere that chip would have firmware issues on it`s serial communication. Is that true?

In such case, which board would do better? There`s also other variants of SIMcom SIM800 and also the old SIM900 ones available in Ebay.

Can anyone help?

Thanks
Eddie

#include <SoftwareSerial.h>

SoftwareSerial mySerial(10, 11); // RX, TX

void setup()
{
 // Open serial communication
 Serial.begin(9600);

 // set the data rate for the SoftwareSerial port
 mySerial.begin(9600);

 delay(1000);
 Serial.println("Testing SIM800L module");
 Serial.println();
 Serial.print("Sizeof(mySerial) = "); Serial.println(sizeof(mySerial));
 Serial.println();

}

void loop() // run over and over
{

 if( mySerial.available() )
 {
 char c = mySerial.read();
 Serial.print(c);
 }

 if(Serial.available())
 {
 String Arsp = Serial.readString();

 Serial.println("Serial available");
 Serial.println(Arsp);
 mySerial.println(Arsp);
 Serial.println("Serial available end");
 }

}

I see several possible problem sources:

Hardware: are the GNDs of SIM800L and Arduino connected? How do you power the Arduino?

Software:

  • Don't use the String class, use char arrays instead (C-strings)
  • Don't use SoftwareSerial, use AltSoftSerial or NeoSoftSerial instead. SoftwareSerial is a really bad example of how to block a complete CPU with just waiting.

When I send the AT commands the response is sometimes error and sometimes it works.

Why didn't you post these errors? (please no screen shots but simply the text output)

Hi,

sorry for late response. In the meantime I could resolve it.
Its both you wrote. The power supply wasnt clean due to missing capacitors. The String classes are the second issue.

Works now. Thanks

Br