try this simple send/receive character test using AltSoftSerial which works OK with SIM800 and SIM900
// UNO SIM800l AltSoftSerial basic AT commands test
#include <AltSoftSerial.h>
// UNO SIM800l connection for basic AT command test
// use external power supply for transmit/receive communications
//SIM800L 5V POWER to UNO 5V
//SIM800L GND POWER to UNO GND
//SIM800L VDD to UNO 5V
//SIM800L TXD to UNO RX pin 8
//SIM800L RXD to UNO TX pin 9
//SIM800L UART TTL GND and RST not connected
// Mega SIM800 test - note preferable to use a hardware serial port
//SIM800L TXD to Mega RX pin 48
//SIM800L RXD to Mega TX pin 46
// taking the RST pin to GND for a couple of seconds which will reset the device
// RS232 shield
// RS232 TXD to UNO pin 9
// RS232 RXD to UNO pin 8
// basic AT commands
// AT returns OK
// AT+CGMI returns the manufacturer's name
// AT+CGMM returns the MODEM model number
// AT+CGMR returns details of the software and model revision level
// AT+CGSN returns the MODEM's serial number
AltSoftSerial simSerial;
void setup() {
Serial.begin(115200);
Serial.println("AltSoftSerial test");
//Begin serial communication with Arduino and SIM800L
simSerial.begin(9600); // set to default baudrate
Serial.println("SIM module intialized");
}
void loop() {
if (Serial.available()) {
char command = Serial.read();
//Serial.println(command);
simSerial.print(command);
}
while (simSerial.available()) {
char reponse = simSerial.read();
Serial.print(reponse);
}
}
connected to a UNO the SIM800 response to AT commands
AT
OK
AT+CGMI
SIMCOM_Ltd
OK
AT+CGMM
SIMCOM_SIM800L