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
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/