Ayuda, no he podido programar mi GSM. Nunca había utilizado este tipo de módulos y no logro entender
Este es mi código:
#include <Wire.h>
#include <SoftwareSerial.h> //Incluimos la libreria Software Serial
SoftwareSerial SIM800L(1, 0); //Instanciamos el objeto SIM800L y le pasamos los parametros de los pines TX y RX
String Mensaje;
int enviar = 0;
int valor = 0;
#define RELAY_ON 0
#define RELAY_OFF 1
int ESTROBOSVOLTAJE = 6;
int ESTROBOSF1 = 7;
int ESTROBOSF2 = 8;
int LUCES = 9;
int M1IZQ = 10;
int M1DER = 11;
int M2IZQ = 12;
int M2DER = 13;
void setup() {
Serial.begin(19200);
Serial1.begin(19200); //Velocidad de comunicacion con el modulo SIM800L
Serial1.println("AT+CMGF=1"); // Configurar el módulo en modo de texto
delay(500); //Tiempo de espera para que el modulo se conecte a una red
Serial1.println("AT+CNMI=2,2,0,0,0"); //Configuracion de la forma como recibir mensajes
pinMode(ESTROBOSF1, OUTPUT);
pinMode(ESTROBOSF2, OUTPUT);
pinMode(ESTROBOSVOLTAJE, OUTPUT);
pinMode(LUCES, OUTPUT);
pinMode(M1IZQ, OUTPUT);
pinMode(M1DER, OUTPUT);
pinMode(M2IZQ, OUTPUT);
pinMode(M2DER, OUTPUT);
digitalWrite (5, RELAY_OFF);
digitalWrite (6, RELAY_OFF);
digitalWrite (7, RELAY_OFF);
digitalWrite (8, RELAY_OFF);
digitalWrite (9, RELAY_OFF);
digitalWrite (10, RELAY_OFF);
digitalWrite (11, RELAY_OFF);
digitalWrite (12, RELAY_OFF);
digitalWrite (13, RELAY_OFF);
}
void loop() {
if (SIM800L.available())//Lograr que nos muestre lo que nos llega de mensaje por el monitor serial.
{
if (Mensaje.indexOf ("A") >= 0) {
digitalWrite(M1IZQ, RELAY_OFF);
digitalWrite(M1DER, RELAY_OFF);
digitalWrite(M2IZQ, RELAY_OFF);
digitalWrite(M2DER, RELAY_OFF);
Serial.println("ALTO"); //Imprime el mensaje
}
if (Mensaje.indexOf ("B") >= 0) {
digitalWrite(M1IZQ, RELAY_OFF);
digitalWrite(M1DER, RELAY_ON);
digitalWrite(M2IZQ, RELAY_OFF);
digitalWrite(M2DER, RELAY_ON);
Serial.println("IZQUIERDA"); //Imprime el mensaje
}
if (Mensaje.indexOf ("C") >= 0) {
digitalWrite(M1IZQ, RELAY_ON);
digitalWrite(M1DER, RELAY_OFF);
digitalWrite(M2IZQ, RELAY_ON);
digitalWrite(M2DER, RELAY_OFF);
Serial.println("DERECHA"); //Imprime el mensaje
}
if (Mensaje.indexOf ("D") >= 0) {
digitalWrite(M1IZQ, RELAY_ON);
digitalWrite(M1DER, RELAY_OFF);
digitalWrite(M2IZQ, RELAY_OFF);
digitalWrite(M2DER, RELAY_ON);
Serial.println("ADELANTE"); //Imprime el mensaje
}
if (Mensaje.indexOf ("E") >= 0) {
digitalWrite(M1IZQ, RELAY_OFF);
digitalWrite(M1DER, RELAY_ON);
digitalWrite(M2IZQ, RELAY_ON);
digitalWrite(M2DER, RELAY_OFF);
Serial.println("REVERSA"); //Imprime el mensaje
}
if (Mensaje.indexOf ("F") >= 0) {
digitalWrite(LUCES, RELAY_OFF);
Serial.println("REFLECTORES APAGADOS"); //Imprime el mensaje
}
if (Mensaje.indexOf ("G") >= 0) {
digitalWrite(LUCES, RELAY_ON);
Serial.println("REFLECTORES ENCENDIDOS"); //Imprime el mensaje
}
if (Mensaje.indexOf ("H") >= 0) {
digitalWrite(ESTROBOSVOLTAJE, RELAY_OFF);
Serial.println("ESTROBOS APAGADOS"); //Imprime el mensaje
}
if (Mensaje.indexOf ("I") >= 0) {
digitalWrite(ESTROBOSVOLTAJE, RELAY_ON);
digitalWrite(ESTROBOSF1, RELAY_ON);
Serial.println("ESTROBOS EN FUNCION 1 ENCENDIDOS"); //Imprime el mensaje
}
if (Mensaje.indexOf ("J") >= 0) {
digitalWrite(ESTROBOSVOLTAJE, RELAY_ON);
digitalWrite(ESTROBOSF2, RELAY_ON);
Serial.println("ESTROBOS EN FUNCION 2 ENCENDIDOS"); //Imprime el mensaje
}
}
}
void MQ2 ()
{
Serial.print("Valor del sensor: ");
Serial.println(analogRead(0));
valor = digitalRead(A0);
if (analogRead(0) > 250) // Capturo analogRead (0) que es el valor analogico del sensor
{
void SMSMQ2();
Serial.println("ALERTA: SE HA DETECTADO PRESENCIA DE MONOXIDO DE CARBONO"); //Imprime el mensaje
delay (150); // Pausa
}
}
void serialEvent() {
if (Serial.available())
{
String text = Serial.readString();
Serial1.println(text);
}
}
//Rutina de servicio a la interrupcion para el monitor serie 1
void serialEvent1() {
if (Serial1.available() > 0 )
{
Mensaje = Serial1.readStringUntil("\n");
Serial.println("Nuevo Mensaje:");
Serial.println(Mensaje);
}
}
void SMSMQ2() {
if (enviar == 0)
{
Serial1.println("AT+CMGF=1");
delay(200);
Serial1.println("AT+CMGS=\"+526143035348\"");
delay(200);
Serial1.print("ALERTA: SE HA DETECTADO PRESENCIA DE MONOXIDO DE CARBONO");
delay(200);
Serial1.print((char)26);
delay(200);
Serial1.println();
delay(200);
enviar++;
}
}
ARDUINO_GSM.ino (4.79 KB)