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?
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ÿÿÿ ÿ ÿÿÿÿÿÿÿ ââââ