ESP32 SIM800L: Enviar mensajes de texto (notificación SMS) con valores del sensor

En este artículo te enseñaremos cómo utilizar un módulo ESP32 junto con un módulo SIM800L para enviar mensajes de texto con notificaciones SMS que contienen los valores de un sensor. Con esta guía, podrás recibir alertas en tiempo real con los datos recopilados por tu sensor, ¡sé el primero en enterarte de cualquier irregularidad!

En este proyecto, creamos un sistema de notificación por SMS utilizando el módulo T-Call ESP32 SIM800L que envía un SMS cuando los valores del sensor están por encima o por debajo de un cierto umbral.

ESP32 SIM800L: Enviar mensajes de texto (notificación SMS) con valores del sensor

En este ejemplo utilizamos un sensor de temperatura DS18B20 y enviamos un mensaje de texto cuando la temperatura supera los 28ºC. Una vez que la temperatura baje del umbral, enviaremos otra notificación por SMS.

Para enviar un SMS con el módulo T-Call ESP32 SIM800L lo único que necesitas es: módem.sendSMS(SMS_TARGET, mensaje SMS) después de inicializar un módem Objeto para módulo SIM800L (usando la biblioteca TinyGSM).

Importante: El SIM800L funciona en redes 2G y, por lo tanto, solo funcionará en su país si hay redes 2G disponibles. Comprueba si tienes una red 2G en tu país, de lo contrario no funcionará.

Mira el vídeotutorial

Puede ver el video tutorial o seguir leyendo para obtener instrucciones completas del proyecto.

Descripción del proyecto

Este tutorial se divide en dos secciones:

  1. Envía SMS con el TTGO T-Call ESP32 SIM800L: Aprenderá a enviar un mensaje sencillo de «Hola mundo».
  2. Sistema de notificación por SMS con valores de sensores.: Enviar un mensaje cada vez que los valores de temperatura superen el umbral.
ESP32 SIM800L: Enviar mensajes de texto (notificación SMS) con valores del sensor
  • El ESP32 recibe nuevos valores de temperatura cada 5 segundos
  • Comprueba si la temperatura está por encima del umbral.
  • Si se supera el valor límite, envía un SMS de advertencia con el valor de temperatura actual
  • Si la temperatura cae por debajo del límite, se enviará otra alarma.
  • El ESP32 solo envía un SMS cuando los valores de temperatura superan el umbral

Puedes adaptar este proyecto a tu caso concreto. Por ejemplo, puedes poner el ESP32 en modo de suspensión profunda y enviar un SMS cada hora con los valores de temperatura actuales, etc.

También te puede interesar… ESP32 publica datos en la nube sin WiFi (TTGO T-Call ESP32 SIM800L)

TTGO T-Call ESP32 SIM800L

El TTGO T-Call es una nueva placa de desarrollo ESP32 que combina un módulo GSM/GPRS SIM800L. Puedes conseguirlo por unos 11$..

ESP32 SIM800L: Enviar mensajes de texto (notificación SMS) con valores del sensor

Además de WiFi y Bluetooth, también puedes comunicarte con esta placa ESP32 mediante SMS o teléfono o conectarla a Internet. En este tutorial aprenderá cómo enviar una notificación por SMS.

Para obtener una descripción completa de este tablero, puede leer el siguiente artículo: $11 TTGO T-Call ESP32 con SIM800L GSM/GPRS (descripción general)

requisitos

1. IDE Arduino complementario ESP32

Programamos el ESP32 con Arduino IDE. Por lo tanto, debes tener el complemento ESP32 instalado en tu IDE de Arduino. Sigue el siguiente tutorial si aún no lo has hecho.

  • Instalación de la placa ESP32 en el IDE Arduino (Windows, Mac OS X, Linux)

2. Tarjeta SIM prepago (tarifa SMS)

Para utilizar la placa TTGO T-Call ESP32 SIM800L, necesita una tarjeta Nano SIM. Recomendamos usar una tarjeta SIM con un plan prepago o mensual para que sepas exactamente cuánto gastarás.

ESP32 SIM800L: Enviar mensajes de texto (notificación SMS) con valores del sensor

3. Bibliotecas

Para este proyecto también necesitarás el Biblioteca TinyGSM para conectarse al módulo SIM800L y al Biblioteca One Wire de Paul Stoffregen y eso Biblioteca de temperatura de Dallas para obtener lecturas del sensor de temperatura DS18B20.

Instalación de la biblioteca TinyGSM

Abra su IDE de Arduino y vaya a Bosquejo > incluir biblioteca > Administrar bibliotecas. El administrador de la biblioteca debería abrirse. Estás buscando PequeñoGSM. Seleccione la biblioteca TinyGSM de Volodymyr Shymanskyy.

ESP32 SIM800L: Enviar mensajes de texto (notificación SMS) con valores del sensor

Instalación de bibliotecas DS18B20

En el Administrador de biblioteca IDE de Arduino, escriba «un solo cable”en el campo de búsqueda e instale la biblioteca OneWire de Paul Stoffregen.

ESP32 SIM800L: Enviar mensajes de texto (notificación SMS) con valores del sensor

Luego busca “dallas”e instale la biblioteca DallasTemperature de Miles Burton.

ESP32 SIM800L: Enviar mensajes de texto (notificación SMS) con valores del sensor

Después de instalar las bibliotecas, reinicie su IDE de Arduino.

Piezas requeridas

ESP32 SIM800L: Enviar mensajes de texto (notificación SMS) con valores del sensor

Para seguir este tutorial necesitarás los siguientes elementos:

Puedes utilizar los enlaces anteriores o ir directamente MakerAdvisor.com/tools ¡Para encontrar todas las piezas para tus proyectos al mejor precio!

ESP32 SIM800L: Enviar mensajes de texto (notificación SMS) con valores del sensor

Nota: Tuvimos algunos problemas con la intensidad de la señal de la antena que venía con el paquete de la placa, por lo que otra antena (como se muestra a continuación) y todos los problemas de conexión se han resuelto.

ESP32 SIM800L: Enviar mensajes de texto (notificación SMS) con valores del sensor

Enviar SMS con T-Call ESP32 SIM800L

En esta sección te mostraremos cómo enviar un SMS usando la placa T-Call ESP32 SIM800L. Creemos un ejemplo simple usando un «¡Hola desde ESP32!“mensaje a tu teléfono inteligente.

Copie el siguiente código en su IDE de Arduino. Pero no lo cargues todavía, debes agregar el número de teléfono del destinatario en el código.

/*
  Rui Santos
  Complete project details at https://RandomNerdTutorials.com/esp32-sim800l-send-text-messages-sms/
  
  Permission is hereby granted, free of charge, to any person obtaining a copy
  of this software and associated documentation files.
  
  The above copyright notice and this permission notice shall be included in all
  copies or substantial portions of the Software.
*/

// SIM card PIN (leave empty, if not defined)
const char simPIN[]   = "";

// Your phone number to send SMS: + (plus sign) and country code, for Portugal +351, followed by phone number
// SMS_TARGET Example for Portugal +351XXXXXXXXX
#define SMS_TARGET  "+351XXXXXXXXX"

// Configure TinyGSM library
#define TINY_GSM_MODEM_SIM800      // Modem is SIM800
#define TINY_GSM_RX_BUFFER   1024  // Set RX buffer to 1Kb

#include <Wire.h>
#include <TinyGsmClient.h>

// TTGO T-Call pins
#define MODEM_RST            5
#define MODEM_PWKEY          4
#define MODEM_POWER_ON       23
#define MODEM_TX             27
#define MODEM_RX             26
#define I2C_SDA              21
#define I2C_SCL              22

// Set serial for debug console (to Serial Monitor, default speed 115200)
#define SerialMon Serial
// Set serial for AT commands (to SIM800 module)
#define SerialAT  Serial1

// Define the serial console for debug prints, if needed
//#define DUMP_AT_COMMANDS

#ifdef DUMP_AT_COMMANDS
  #include <StreamDebugger.h>
  StreamDebugger debugger(SerialAT, SerialMon);
  TinyGsm modem(debugger);
#else
  TinyGsm modem(SerialAT);
#endif

#define IP5306_ADDR          0x75
#define IP5306_REG_SYS_CTL0  0x00

bool setPowerBoostKeepOn(int en){
  Wire.beginTransmission(IP5306_ADDR);
  Wire.write(IP5306_REG_SYS_CTL0);
  if (en) {
    Wire.write(0x37); // Set bit1: 1 enable 0 disable boost keep on
  } else {
    Wire.write(0x35); // 0x37 is default reg value
  }
  return Wire.endTransmission() == 0;
}

void setup() {
  // Set console baud rate
  SerialMon.begin(115200);

  // Keep power when running from battery
  Wire.begin(I2C_SDA, I2C_SCL);
  bool isOk = setPowerBoostKeepOn(1);
  SerialMon.println(String("IP5306 KeepOn ") + (isOk ? "OK" : "FAIL"));

  // Set modem reset, enable, power pins
  pinMode(MODEM_PWKEY, OUTPUT);
  pinMode(MODEM_RST, OUTPUT);
  pinMode(MODEM_POWER_ON, OUTPUT);
  digitalWrite(MODEM_PWKEY, LOW);
  digitalWrite(MODEM_RST, HIGH);
  digitalWrite(MODEM_POWER_ON, HIGH);

  // Set GSM module baud rate and UART pins
  SerialAT.begin(115200, SERIAL_8N1, MODEM_RX, MODEM_TX);
  delay(3000);

  // Restart SIM800 module, it takes quite some time
  // To skip it, call init() instead of restart()
  SerialMon.println("Initializing modem...");
  modem.restart();
  // use modem.init() if you don't need the complete restart

  // Unlock your SIM card with a PIN if needed
  if (strlen(simPIN) && modem.getSimStatus() != 3 ) {
    modem.simUnlock(simPIN);
  }

  // To send an SMS, call modem.sendSMS(SMS_TARGET, smsMessage)
  String smsMessage = "Hello from ESP32!";
  if(modem.sendSMS(SMS_TARGET, smsMessage)){
    SerialMon.println(smsMessage);
  }
  else{
    SerialMon.println("SMS failed to send");
  }
}

void loop() {
  delay(1);
}

Ver código sin formato

Cómo funciona el código

Introduce el PIN de tu tarjeta SIM en la siguiente variable. Si no está definida, puede dejar esta variable en blanco.

// SIM card PIN (leave empty, if not defined)
const char simPIN[] = "";

Luego agrega el número de teléfono al que deseas enviar el SMS. El número debe estar en formato internacional, de lo contrario no funcionará: (signo más) y código de país, para Portugal +351, seguido del número de teléfono.

Ejemplo Portugal +351XXXXXXXXXX

#define SMS_TARGET "+351XXXXXXXXXXXX"

Configurar el PequeñoGSM Biblioteca para trabajar con el módem SIM800L:

#define TINY_GSM_MODEM_SIM800    // Modem is SIM800
#define TINY_GSM_RX_BUFFER 1024  // Set RX buffer to 1Kb

Incluya las siguientes bibliotecas:

#include <Wire.h>
#include <TinyGsmClient.h>

Las siguientes líneas definen los pines utilizados por el módulo SIM800L:

#define MODEM_RST            5
#define MODEM_PWKEY          4
#define MODEM_POWER_ON       23
#define MODEM_TX             27
#define MODEM_RX             26
#define I2C_SDA              21
#define I2C_SCL              22

Inicialice una comunicación serial para interactuar con el monitor serial y otra para interactuar con el módulo SIM800L.

// Set serial for debug console (to Serial Monitor, default speed 115200)
#define SerialMon Serial
// Set serial for AT commands (to SIM800 module)
#define SerialAT Serial1

En el configuración()inicialice el monitor serie.

SerialMon.begin(115200);

Configure los pines SIM800L en el estado correcto para su funcionamiento:

pinMode(MODEM_PWKEY, OUTPUT);
pinMode(MODEM_RST, OUTPUT);
pinMode(MODEM_POWER_ON, OUTPUT);
digitalWrite(MODEM_PWKEY, LOW);
digitalWrite(MODEM_RST, HIGH);
digitalWrite(MODEM_POWER_ON, HIGH);

Inicialice una comunicación serial con el módulo SIM800L:

SerialAT.begin(115200, SERIAL_8N1, MODEM_RX, MODEM_TX);

Inicialice el módulo SIM800L y desbloquee el PIN de la tarjeta SIM si es necesario.

SerialMon.println("Initializing modem...");
modem.restart();
// use modem.init() if you don't need the complete restart

// Unlock your SIM card with a PIN if needed
if (strlen(simPIN) && modem.getSimStatus() != 3 ) {
  modem.simUnlock(simPIN);
}

Para enviar un SMS sólo necesitas el Enviar un SMS() método en el módem Objeto y pasa el número de teléfono del destinatario y el mensaje como argumentos.

modem.sendSMS(SMS_TARGET, smsMessage);

En este caso el mensaje será “¡Hola desde ESP32!“, pero se puede reemplazar con otra información, como datos de sensores.

String smsMessage = "Hello from ESP32!";
if(modem.sendSMS(SMS_TARGET, smsMessage)){
  SerialMon.println(smsMessage);
}
else{
  SerialMon.println("SMS failed to send");
}

demostración

Cuando la tarjeta Nano SIM esté insertada en el módulo, cargue el código en ella Placa T-Call ESP32 SIM800L.

Ir a Herramientas > tablón y elige Módulo de desarrollo ESP32. Ir a Herramientas > Puerto y seleccione el puerto COM al que está conectada su placa. Finalmente, haga clic en el botón «Cargar» para cargar el código en su tablero.

ESP32 SIM800L: Enviar mensajes de texto (notificación SMS) con valores del sensor

Nota: De momento no existe placa para el T-Call ESP32 SIM800L, pero nosotros hemos elegido esta Módulo de desarrollo ESP32 y funcionó bien.

Después de cargar el código, abra el monitor serie con una velocidad de transmisión de 115200 para ver qué sucede.

ESP32 SIM800L: Enviar mensajes de texto (notificación SMS) con valores del sensor

Después de unos segundos, deberías recibir un SMS al número de teléfono del destinatario.

ESP32 SIM800L: Enviar mensajes de texto (notificación SMS) con valores del sensor

Solución de problemas

Si aún no recibes un SMS, esto puede deberse a los siguientes motivos:

  • Este módulo sólo funciona si 2G es compatible en su país;
  • El número de teléfono puede contener un error tipográfico o no tener el formato correcto con el signo más (+) y el código de país.
  • Es posible que la antena no esté funcionando correctamente. En nuestro caso reemplazamos la antena por Este de aquí;
  • Es posible que deba salir para obtener una mejor cobertura de señal.
  • O es posible que no esté proporcionando suficiente energía al módulo. Si conecta el módulo a su computadora a través de un concentrador USB, es posible que no proporcione suficiente energía para funcionar.

Sistema de notificación SMS ESP32

En esta sección, le mostraremos cómo crear un sistema de notificación por SMS que envíe un mensaje de texto cuando las lecturas del sensor superen un umbral de temperatura predeterminado.

Representación esquemática

Antes de continuar, conecte el sensor de temperatura DS18B20 a la placa T-Call ESP32 SIM800L como se muestra en el diagrama de circuito a continuación. Conectamos el pin de datos DS18B20 a GPIO 13.

ESP32 SIM800L: Enviar mensajes de texto (notificación SMS) con valores del sensor

código

Copie el siguiente código en su IDE de Arduino. Ingrese el número de teléfono del destinatario y establezca el umbral. Luego puede cargar el código en la placa T-Call ESP32 SIM800L.

/*
  Rui Santos
  Complete project details at https://RandomNerdTutorials.com/esp32-sim800l-send-text-messages-sms/
  
  Permission is hereby granted, free of charge, to any person obtaining a copy
  of this software and associated documentation files.
  
  The above copyright notice and this permission notice shall be included in all
  copies or substantial portions of the Software.
*/

// SIM card PIN (leave empty, if not defined)
const char simPIN[]   = "";

// Your phone number to send SMS: + (plus sign) and country code, for Portugal +351, followed by phone number
// SMS_TARGET Example for Portugal +351XXXXXXXXX
#define SMS_TARGET  "+351XXXXXXXXX"

// Define your temperature Threshold (in this case it's 28.0 degrees Celsius)
float temperatureThreshold = 28.0;
// Flag variable to keep track if alert SMS was sent or not
bool smsSent = false;

// Configure TinyGSM library
#define TINY_GSM_MODEM_SIM800      // Modem is SIM800
#define TINY_GSM_RX_BUFFER   1024  // Set RX buffer to 1Kb

#include <Wire.h>
#include <TinyGsmClient.h>
#include <OneWire.h>
#include <DallasTemperature.h>

// GPIO where the DS18B20 is connected to
const int oneWireBus = 13;     

// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(oneWireBus);

// Pass our oneWire reference to Dallas Temperature sensor 
DallasTemperature sensors(&oneWire);

// TTGO T-Call pins
#define MODEM_RST            5
#define MODEM_PWKEY          4
#define MODEM_POWER_ON       23
#define MODEM_TX             27
#define MODEM_RX             26
#define I2C_SDA              21
#define I2C_SCL              22

// Set serial for debug console (to Serial Monitor, default speed 115200)
#define SerialMon Serial
// Set serial for AT commands (to SIM800 module)
#define SerialAT  Serial1

// Define the serial console for debug prints, if needed
//#define DUMP_AT_COMMANDS

#ifdef DUMP_AT_COMMANDS
  #include <StreamDebugger.h>
  StreamDebugger debugger(SerialAT, SerialMon);
  TinyGsm modem(debugger);
#else
  TinyGsm modem(SerialAT);
#endif

#define IP5306_ADDR          0x75
#define IP5306_REG_SYS_CTL0  0x00

bool setPowerBoostKeepOn(int en){
  Wire.beginTransmission(IP5306_ADDR);
  Wire.write(IP5306_REG_SYS_CTL0);
  if (en) {
    Wire.write(0x37); // Set bit1: 1 enable 0 disable boost keep on
  } else {
    Wire.write(0x35); // 0x37 is default reg value
  }
  return Wire.endTransmission() == 0;
}

void setup() {
  // Set console baud rate
  SerialMon.begin(115200);

  // Keep power when running from battery
  Wire.begin(I2C_SDA, I2C_SCL);
  bool isOk = setPowerBoostKeepOn(1);
  SerialMon.println(String("IP5306 KeepOn ") + (isOk ? "OK" : "FAIL"));

  // Set modem reset, enable, power pins
  pinMode(MODEM_PWKEY, OUTPUT);
  pinMode(MODEM_RST, OUTPUT);
  pinMode(MODEM_POWER_ON, OUTPUT);
  digitalWrite(MODEM_PWKEY, LOW);
  digitalWrite(MODEM_RST, HIGH);
  digitalWrite(MODEM_POWER_ON, HIGH);

  // Set GSM module baud rate and UART pins
  SerialAT.begin(115200, SERIAL_8N1, MODEM_RX, MODEM_TX);
  delay(3000);

  // Restart SIM800 module, it takes quite some time
  // To skip it, call init() instead of restart()
  SerialMon.println("Initializing modem...");
  modem.restart();
  // use modem.init() if you don't need the complete restart

  // Unlock your SIM card with a PIN if needed
  if (strlen(simPIN) && modem.getSimStatus() != 3 ) {
    modem.simUnlock(simPIN);
  }
  
  // Start the DS18B20 sensor
  sensors.begin();
}

void loop() {
  sensors.requestTemperatures();
  // Temperature in Celsius degrees 
  float temperature = sensors.getTempCByIndex(0);
  SerialMon.print(temperature);
  SerialMon.println("*C");
  
  // Temperature in Fahrenheit degrees
  /*float temperature = sensors.getTempFByIndex(0);
  SerialMon.print(temperature);
  SerialMon.println("*F");*/

  // Check if temperature is above threshold and if it needs to send the SMS alert
  if((temperature > temperatureThreshold) && !smsSent){
    String smsMessage = String("Temperature above threshold: ") + 
           String(temperature) + String("C");
    if(modem.sendSMS(SMS_TARGET, smsMessage)){
      SerialMon.println(smsMessage);
      smsSent = true;
    }
    else{
      SerialMon.println("SMS failed to send");
    }    
  }
  // Check if temperature is below threshold and if it needs to send the SMS alert
  else if((temperature < temperatureThreshold) && smsSent){
    String smsMessage = String("Temperature below threshold: ") + 
           String(temperature) + String("C");
    if(modem.sendSMS(SMS_TARGET, smsMessage)){
      SerialMon.println(smsMessage);
      smsSent = false;
    }
    else{
      SerialMon.println("SMS failed to send");
    }
  }
  delay(5000);
}

Ver código sin formato

Cómo funciona el código

En el ejemplo anterior ya hemos explicado cómo inicializar el SIM800L y qué configuraciones se requieren. Pasemos entonces a las partes relevantes de este proyecto.

Primero ingrese el PIN de su tarjeta SIM. Si no está definida, puede dejar esta variable en blanco.

const char simPIN[] = "";

Luego agrega el número de teléfono al que deseas enviar el SMS. El número debe estar en formato internacional; de lo contrario, no funcionará.

#define SMS_TARGET "+351XXXXXXXXXXX"

Defina su umbral de temperatura. Lo configuramos a 28 grados centígrados.

float temperatureThreshold = 28.0;

Cree una variable para rastrear si se ha enviado un SMS o no.

bool smsSent = false;

El sensor de temperatura está conectado a GPIO 13Pero puedes usar cualquier otro GPIO.

const int oneWireBus = 13;

Contenido relacionado: Sensor de temperatura ESP32 DS18B20 con Arduino IDE (único, múltiple, servidor web)

En el Cinta()obtener los valores de temperatura.

sensors.requestTemperatures();
// Temperature in Celsius degrees 
float temperature = sensors.getTempCByIndex(0);
SerialMon.print(temperature);
SerialMon.println("*C");

De forma predeterminada, la temperatura está en grados Celsius, pero puedes comentar las siguientes líneas para usar la temperatura en grados Fahrenheit. Entonces también deberías ajustar el valor umbral a tus unidades de temperatura.

// Temperature in Fahrenheit degrees
/*float temperature = sensors.getTempFByIndex(0);
SerialMon.print(temperature);
SerialMon.println("*F");*/

A esto le sigue una condición que comprueba si el valor de temperatura actual está por encima del límite definido y si se ha enviado un SMS de advertencia.

if((temperature > temperatureThreshold) && !smsSent){

Si se cumple esta condición, envíe un SMS con el contenido “Temperatura por encima del umbral:” y el valor de temperatura actual.

String smsMessage = String("Temperature above threshold: ") + 
           String(temperature) + String("C");
if(modem.sendSMS(SMS_TARGET, smsMessage)){
  SerialMon.println(smsMessage);
  smsSent = true;
}
else{
  SerialMon.println("SMS failed to send");
}

Como puedes ver, para enviar un mensaje de texto utilizas el Enviar un SMS() método en el módem Objeto. Sólo necesitas pasar como argumentos el número de teléfono al que quieres enviar el SMS y el contenido del mensaje.

if(modem.sendSMS(SMS_TARGET, smsMessage)){

Después de enviar el mensaje, configure el SMS enviado variable VERDADERO para evitar múltiples notificaciones por SMS cuando se alcanza el mismo umbral.

smsSent = true;

Si la temperatura cae por debajo del límite, también recibimos un SMS.

else if((temperature < temperatureThreshold) && smsSent){
  String smsMessage = String("Temperature below threshold: ") + 
           String(temperature) + String("C");
  if(modem.sendSMS(SMS_TARGET, smsMessage)){
    SerialMon.println(smsMessage);
    smsSent = false;
  }
  else{
    SerialMon.println("SMS failed to send");
  }
}

Esta vez pon el SMS enviado variable INCORRECTOpara que ya no recibamos mensajes por debajo del umbral.

Estas condiciones se verifican cada 5 segundos, pero puedes cambiar el tiempo de retraso.

Sube el código

Después de ingresar el número de teléfono y el código PIN de la tarjeta SIM del destinatario, cargue el boceto en su ESP32.

  • Ir a Herramientas > tablón y seleccione el Módulo de desarrollo ESP32
  • Después de eso, ve a Herramientas > Puerto y seleccione el puerto COM al que está conectado el ESP32
  • Luego presione el Subir botón

Después de unos segundos, el código debería cargarse correctamente.

También puede abrir el monitor en serie a una velocidad de 115200 baudios para mostrar los valores actuales del sensor.

Cuando pongo el dedo en el sensor, la temperatura empieza a subir. Si supera los 28ºC envía un mensaje de texto.

ESP32 SIM800L: Enviar mensajes de texto (notificación SMS) con valores del sensor

Si la temperatura cae por debajo del límite, recibiré otro mensaje de texto.

ESP32 SIM800L: Enviar mensajes de texto (notificación SMS) con valores del sensor

Envolver

Con este proyecto has aprendido a utilizar SMS con el Módulo T-Call ESP32 SIM800L. Ahora puedes usar este proyecto en una aplicación real y dejarlo para enviar notificaciones por SMS cuando se alcance el umbral o, por ejemplo, enviar SMS con los valores del sensor cada hora.

Para que este proyecto funcione con batería, recomiendo usar el modo de suspensión profunda y activar el ESP32 cada hora para verificar la temperatura actual. Porque si usas el código en este proyecto, tu batería se agotará rápidamente.

Más artículos/proyectos con la placa T-Call ESP32 SIM800L:

Obtenga más información sobre el ESP32 con nuestros recursos:

  • Aprende ESP32 con Arduino IDE (Curso)
  • Programación MicroPython con ESP32 y ESP8266 (libro electrónico)
  • Más proyectos y tutoriales de ESP32

Gracias por leer.

Error 403 The request cannot be completed because you have exceeded your quota. : quotaExceeded

ESP32 SIM800L: Enviar mensajes de texto (notificación SMS) con valores del sensor

En este proyecto vamos a crear un sistema de notificación por SMS con el módulo T-Call ESP32 SIM800L que envía un SMS cuando las lecturas del sensor están por encima o por debajo de un umbral determinado.

En este ejemplo, utilizaremos un sensor de temperatura DS18B20 y enviaremos un mensaje de texto cuando la temperatura esté por encima de 28ºC. Una vez que la temperatura haya bajado por debajo del umbral, enviaremos otra alerta SMS.

Para enviar un SMS con el módulo T-Call ESP32 SIM800L, solo necesitas utilizar modem.sendSMS(SMS_TARGET, smsMessage) después de inicializar un objeto modem para el módulo SIM800L (usando la biblioteca TinyGSM).

Importante: el SIM800L funciona en redes 2G, por lo que solo funcionará en tu país si las redes 2G están disponibles. Verifica si tienes redes 2G en tu país, de lo contrario no funcionará.

Puedes ver el video tutorial o continuar leyendo para obtener las instrucciones completas del proyecto.

Preguntas Frecuentes

  1. ¿Cómo puedo enviar un SMS con el módulo ESP32 SIM800L?
  2. Para enviar un SMS con el módulo ESP32 SIM800L, primero debes inicializar el módulo y luego utilizar la función modem.sendSMS() pasando como argumentos el número de teléfono del destinatario y el mensaje que deseas enviar.

  3. ¿Qué tipo de redes soporta el módulo SIM800L?
  4. El módulo SIM800L funciona en redes 2G, así que asegúrate de que tu país tenga cobertura 2G si deseas utilizar este módulo para enviar SMS.

  5. ¿Es posible modificar este proyecto para enviar mensajes de texto con otras condiciones?
  6. Sí, puedes modificar este proyecto para adaptarlo a tus necesidades específicas. Por ejemplo, puedes poner el ESP32 en modo de suspensión y enviar un SMS cada hora con las lecturas de temperatura actuales, etc.

Con este proyecto has aprendido cómo enviar SMS con el módulo T-Call ESP32 SIM800L. Ahora puedes utilizar este proyecto en una aplicación real y dejar que envíe notificaciones por SMS cuando se alcance el valor de umbral o enviar SMS con lecturas de sensores cada hora, por ejemplo.

3 comentarios en «ESP32 SIM800L: Enviar mensajes de texto (notificación SMS) con valores del sensor»

  1. ¡Wow, esto es justo lo que estaba buscando! ¡Me encanta la idea de recibir notificaciones por SMS con los datos del sensor! Gracias por compartir esta guía tan útil. ¡Voy a probarlo de inmediato! 🤖📲

Deja un comentario