0

I am using Arduino Uno R3 and a SIM800L (voltage regulator built in). My initial setup included a 10kΩ resistor soldered between the lower end of the RX and GND pins on the SIM800L, and a 4.6kΩ resistor soldered on the jumper connecting SIM800L's RX and Arduino's declared TX (pin 7). SIM800L has its own power supply (5v-2A). This is a setup I have used previously on two different SIM800L modules, and everything worked fine without any (visible) problems.

Baud rate is set to 9600 in Arduino IDE, PC port (via Device manager), and the module, through the sketch.

After loading the sketch (first one) shown on this site, the SIM800L connects to the GSM network (I can tell by the delay between blinks), but the module does not respond to AT commands send via serial monitor.

The sketch

#include <SoftwareSerial.h>

//SIM800 TX is connected to Arduino D8
#define SIM800_TX_PIN 8

//SIM800 RX is connected to Arduino D7
#define SIM800_RX_PIN 7

//Create software serial object to communicate with SIM800
SoftwareSerial serialSIM800(SIM800_TX_PIN,SIM800_RX_PIN);

void setup() {
  //Begin serial comunication with Arduino and Arduino IDE (Serial Monitor)
  Serial.begin(9600);
  while(!Serial);

  //Being serial communication witj Arduino and SIM800
  serialSIM800.begin(9600);
  delay(1000);
}

void loop() {
  //Read SIM800 output (if available) and print it in Arduino IDE Serial Monitor
  if(serialSIM800.available()){
    Serial.write(serialSIM800.read());
  }
  //Read Arduino IDE Serial Monitor inputs (if available) and send them to SIM800
  if(Serial.available()){
    serialSIM800.write(Serial.read());
  }
}

Things tried

Thinking that the resistors might be causing this, I removed all of them, and made a clean connection with Arduino. And the problem persisted.

I tried resetting the module, by passing the ATW command into a sketch:

serialSIM800.write("ATW\r\n");

and that also gave no results. Further testing with:

if(!serialSIM800.available()) {
    Serial.println("Not working");
}

indicated where the problem might be.

I have also tried changing the baud rate to 48000, 57600, and 115200, but that did not solve my problem.

The question

Am I right in assuming that a reset to factory settings could solve my problem? If so, how can I reset the module, without the AT commands? If resetting would do me no good, what else could I try?

  • Serial communications (UART/USART) requires the RX/TX pins of the sender and receiver be swapped. So connect the TX from the Uno to the RX of the Sim800L, and RX from Uno to TX on module. (Or, just swap the pin numbers for your softwareserial setup above...) – lornix Dec 27 '16 at 11:53
  • You're right about the sending and receiving, of course - even the SoftwareSerial.h says, when defining the method - SoftwareSerial(receivePin, transmitPin, inverse_logic=false). But, the setup already works like that, it's the original sketch that swaps the naming for attempted clarity (SIM's TX to Arduino's D8 - Arduino receives on D8, SIM's RX to Arduino's D7 - Arduino sends through D7). I've tried swapping the pins, just to be on the safe side, and, as expected, there was garbled output in Serial monitor. Something along the lines of ÿÿÿ ÿ ÿÿÿÿÿÿÿ ââââ – FiddlingAway Dec 28 '16 at 9:00
1

This is widely happen problem - serial communication with SIM800L stopped working. You can do reset, but in my case it didn't help: on powered SIM800L module shortcut "RST" pin with the ground for half of second - unit should reset and restart. I think it's defective architecture/firmware, but unfortunately SIMCOM dropped support for this model, so best advise is to avoid SIMCOM until they study how to make quality products.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.