Obtener el estado del sensor BMP180 con el módulo SIM800L

Realizar una llamada y obtener los datos del sensor BMP180 para enviarlo por SMS

...
Posteado por Aviles el 12-06-2024 a las 00:59
Categoria: Arduino
Realizado por: Jose Francisco Cat Aviles, Alejandro Yáñez Alvarado

Presentación.

El objetivo principal de este proyecto es implementar un sistema que integre el sensor BMP180 y el módulo SIM800L para monitorear condiciones ambientales y enviar los datos recolectados a través de SMS. El sistema permitirá realizar una llamada telefónica y obtener datos de presión atmosférica y temperatura del sensor BMP180, los cuales serán enviados automáticamente por SMS al numero que realizo la llamada.

Funcionamiento.

 A través de su teléfono realiza una llamada al numero de la SIM que está en el módulo, al entrar la llamada le dice que usuario no se encuentra disponible y se termina la llamada a los pocos segundos le debe llegar a su celular un sms con la información de la temperatura y hpa que el sensor ha detectado. Este proceso se puede realizar desde cualquier celular y se obtendrá el mismo resultado.

Realización.

Materiales

  • Modulo SIM800L
  • Sensor BMP180
  • 1 Protoboard
  • Cables
  • SIM Telcel
  • 1 capacitor

Diagrama de conexión:

Conexión final

??????

Programación.

#include <SoftwareSerial.h>
#include <Adafruit_BMP085.h>

SoftwareSerial mySerial(10, 11); // RX, TX

Adafruit_BMP085 bmp;

void setup() {
    Serial.begin(9600); // Iniciamos el puerto serie
    mySerial.begin(9600); // Iniciamos el puerto serie del módulo GSM
    delay(1000);
    
    // Comandos de inicialización del módulo GSM
    sendCommand("AT", 1000); // Comprueba la conexión
    sendCommand("AT+CLIP=1", 1000); // Muestra el número de la llamada entrante
    sendCommand("AT+CMGF=1", 1000); // Configurar en modo texto

    Serial.println(" ---Buscando señal--- ");

    // Inicializar el sensor BMP180
    if (!bmp.begin()) {
        Serial.println("Error al iniciar el BMP180. Verifique la conexión.");
        while (1);
    }
}

void loop() {
    if (mySerial.available()) {
        String quienLlama = mySerial.readString();

        if (quienLlama.indexOf("RING") > -1) {
            delay(1000);
            String num;
            int inicio = quienLlama.indexOf('"') + 1;
            int fin = quienLlama.indexOf('"', inicio);
            if (fin > inicio) {
                num = quienLlama.substring(inicio, fin);

                Serial.println("Número de llamada: " + num);
                delay(2000);
                // No se finaliza la llamada, simplemente se envía el mensaje
                float temperatura = bmp.readTemperature();
                float presion = bmp.readPressure() / 100.0; // Convertir a hectopascales

                endCall(); // Finalizar la llamada

                sendSMSWithData(num, temperatura, presion);
            }
        }
    }
}

void sendSMSWithData(String num, float temp, float pres) {
    Serial.println("Enviando SMS a " + num);
    sendCommand("AT+CMGS="" + num + """, 1000); // Especifica el número de destino

    mySerial.print("Temperatura: ");
    mySerial.print(temp);
    mySerial.print(" C, Presion: ");
    mySerial.print(pres);
    mySerial.println(" hPa");

    delay(100);
    mySerial.write(26); // Ctrl+Z para enviar el SMS
    delay(5000); // Aumentar el tiempo de espera para asegurar el envío del SMS

    // Leer cualquier respuesta del módulo GSM
    while (mySerial.available()) {
        Serial.write(mySerial.read());
    }
}

void sendCommand(String command, const int timeout) {
    mySerial.println(command);
    delay(timeout);
    while (mySerial.available()) {
        Serial.write(mySerial.read());
    }
}

void endCall() {
    sendCommand("ATH", 1000); // Comando AT para finalizar la llamada
}

Utilización.

Ingresamos a la aplicación de llamadas desde nuestro móvil y realizamos la llamada al siguiente numero

Se termina la llamada de manera automática y en cuestión de segundos nos llega el sms con la información que el sensor ha detectado

Mensaje recibido exitosamente

Conclusiones.

Alejandro: la integración del sensor BMP180 y el módulo SIM800L permite un monitoreo eficiente y remoto de las condiciones ambientales, ofreciendo una solución práctica y económica para aplicaciones en diversos campos como la agricultura y la gestión de infraestructuras.

Aviles: la capacidad de enviar datos precisos por SMS mediante el módulo SIM800L muestra cómo se puede lograr una comunicación efectiva en áreas con cobertura móvil, incluso cuando no hay acceso a Internet, mejorando la accesibilidad y la fiabilidad de los sistemas de monitoreo remoto.

Referencias.

  • Enviar Recibir SMS y llamar con el módulo SIM800L GSM y Arduino. (2014a, enero 3). Descubreararduino.com. Recuperado 1 de junio de 2024, de https://descubrearduino.com/sim800l-gsm/

Para comentar debes acceder Acceder

Comentarios


No hay comentarios en este post