Intento mandar un mensaje desde mi celular al modulo para que salga en la pantalla y al mismo tiempo (dependiendo el caso), prenda o apague un led, pero en lugar de que me salga el mensaje que envié me aparece < +CIEV: "SMSFULL",2 > además de que el led no hace nada.
Les dejo el código:
/*
*************TRABAJANDO CON EL MODULO A6*****************
*/
#include <SoftwareSerial.h>
String PHONE = ""; // Para múltiples usuarios
String msg;
// Pin RX del módulo a Arduino 9
// Pin TX del módulo a Arduino 8
#define rxPin 9 //cambie de pin
#define txPin 8 //cambie de pin
SoftwareSerial mySerial(txPin, rxPin);
#define LED_PIN 13
void setup() {
pinMode(LED_PIN, OUTPUT); //Configuración del pin 13 como salida
digitalWrite(LED_PIN, LOW);
delay(1000);
Serial.begin(115200);
Serial.println("Initializing Serial... ");
mySerial.begin(115200);
Serial.println("Initializing GSM module...");
mySerial.println("AT+CMGF=1\r"); //Modo de texto SMS
mySerial.println("AT+CNMI=1,2,0,0,0"); // agregado por mi
delay(1000);
}
void loop()
{
while (mySerial.available())
{
parseData(mySerial.readString());//Llama a la función parseData para analizar SMS
}
doAction();//Realiza la acción necesaria de acuerdo con el mensaje SMS
while (Serial.available())
{
mySerial.println(Serial.readString());
}
}
void parseData(String buff)
{
Serial.println(buff);
unsigned int index;
// Elimina el "Comando AT" enviado de la cadena de respuesta.
index = buff.indexOf("\r");
buff.remove(0, index + 2);
buff.trim();
if (buff != "OK")
{
index = buff.indexOf(":");
String cmd = buff.substring(0, index);
cmd.trim();
buff.remove(0, index + 2);
// Analizar el mensaje necesario de la cadena de búfer serie mySerialL
if (cmd == "+CMT")
{
// obtener la ubicación de la memoria recién llegada y almacenarla en temp
index = buff.lastIndexOf(0x0D);// Buscando posición de CR (retorno)
msg = buff.substring(index + 2); //, buff.length());// Escribe el mensaje en la variable "msg"
msg.toLowerCase();// El mensaje completo se cambia a minúsculas
Serial.println(msg);
index = buff.indexOf(0x22);// Buscando la posición de las primeras comillas dobles-> "
PHONE = buff.substring(index + 1, index + 14); // Escribe el número de teléfono en la variable "PHONE"
Serial.println(PHONE);
}
}
}
void doAction()
{
if (msg == "led on")
{
digitalWrite(LED_PIN, HIGH);
Reply("LED is ON");
Serial.println("¿Prendio el led?");
}
else if (msg == "led off")
{
digitalWrite(LED_PIN, LOW);
Reply("LED is OFF");
Serial.println("¿Se apago el led?");
}
PHONE = "";// Borra la cadena del teléfono
msg = "";// Borra la cadena del mensaje
}
void Reply(String text)
{
mySerial.println("AT+CMGF=1\r");
delay(1000);
mySerial.println("AT+CMGS=\"" + PHONE + "\"\r");
delay(1000);
mySerial.println(text);
delay(100);
mySerial.write(0x1A); // código ascii para ctrl + z, DEC-> 26, HEX-> 0x1A
delay(1000);
Serial.println("SMS Sent Successfully.");
}