Solicitar datos del sensor vía SMS con Arduino y SIM900 GSM Shield

¿Alguna vez has querido recibir datos de tus sensores de forma remota y sencilla? En este artículo, te mostraremos cómo utilizar un Arduino y un SIM900 GSM Shield para solicitar datos del sensor a través de mensajes de texto. Sigue leyendo para descubrir cómo aprovechar esta tecnología y simplificar tu experiencia de monitoreo remoto. ¡No te lo pierdas!

En este proyecto le mostraremos cómo puede utilizar Arduino para solicitar datos del sensor mediante SMS. Como ejemplo, solicitaremos la temperatura y la humedad a un sensor DHT11. Para enviar y recibir SMS con el Arduino utilizamos el escudo GSM SIM900.

Solicitar datos del sensor vía SMS con Arduino y SIM900 GSM Shield

Cuando envías un SMS con el mensaje “ESTADO” al Arduino, este responde con las últimas lecturas de temperatura y humedad.

Antes de continuar con este tutorial, recomendamos los siguientes recursos:

  • Instrucciones para el Escudo GPRS GSM SIM900 con Arduino
  • Instrucciones para el sensor de humedad y temperatura DHT11/DHT22 con Arduino
  • Regístrate en nuestro mini curso gratuito de Arduino
  • Recomendación del curso: 25 proyectos de Arduino paso a paso

Primero, mire el vídeo de demostración.

Protección SIM900 GSM

Existen varios módulos que te permiten enviar y recibir SMS usando Arduino. Hicimos este proyecto usando el escudo GSM SIM900 y ese es el escudo que te recomendamos.

El blindaje GSM del SIM900 se muestra en la siguiente figura:

Solicitar datos del sensor vía SMS con Arduino y SIM900 GSM Shield

Para obtener una introducción al escudo GSM y su configuración, consulte el manual SIM900 GSM GPRS Shield con Arduino.

Piezas requeridas

Aquí hay una lista de todos los componentes necesarios para este proyecto:

Solicitar datos del sensor vía SMS con Arduino y SIM900 GSM Shield

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

Solicitar datos del sensor vía SMS con Arduino y SIM900 GSM Shield

Pasos preparatorios

Antes de comenzar con su módulo GSM SIM900, hay algunas cosas que debe considerar sobre la tarjeta SIM y la fuente de alimentación del escudo.

Tarjeta SIM prepago

Le recomendamos que utilice un plan prepago o un plan con SMS ilimitados para realizar pruebas. De lo contrario, si algo sale mal, podría terminar pagando una factura considerable por cientos de mensajes de texto SMS enviados accidentalmente. En este tutorial usaremos un plan prepago con SMS ilimitados.

Solicitar datos del sensor vía SMS con Arduino y SIM900 GSM Shield

El Shield utiliza el tamaño de la tarjeta SIM original, no Micro o Nano. Si tienes Micro o Nano, quizás quieras considerar uno Adaptador de tamaño de tarjeta SIM.

Desactivar el bloqueo de PIN

Para utilizar la tarjeta SIM con el Shield, debes desactivar el bloqueo de PIN. La forma más sencilla de hacerlo es insertar la tarjeta SIM en su teléfono inteligente y desactivar el bloqueo con PIN en la configuración de seguridad del teléfono.

En mi caso necesito pasar por lo siguiente: Ajustes > Ajustes avanzados > Seguridad > bloqueo de tarjeta SIM y desactive el bloqueo de la tarjeta SIM con PIN.

Solicitar datos del sensor vía SMS con Arduino y SIM900 GSM Shield

Encuentre la fuente de alimentación adecuada

El escudo tiene una toma de CC para fuente de alimentación, como se muestra en la imagen a continuación.

Solicitar datos del sensor vía SMS con Arduino y SIM900 GSM Shield

Al lado de la toma de corriente hay un interruptor para seleccionar la fuente de alimentación. Hay una flecha al lado del interruptor de palanca en el tablero que indica la posición del interruptor de palanca para usar una fuente de alimentación externa. Mueva el interruptor de palanca para usar energía externa como se muestra arriba.

Para encender el escudo, recomendamos usar una fuente de alimentación de 5V, 2A como la que se muestra a continuación.

Solicitar datos del sensor vía SMS con Arduino y SIM900 GSM Shield

Puede encontrar la fuente de alimentación adecuada para este escudo aquí Aquí. Asegúrese de seleccionar el modelo 5V 2A.

Configurar el escudo GSM SIM900

Los siguientes pasos le mostrarán cómo configurar el escudo GSM SIM900.

1) Inserte la tarjeta SIM en el soporte de la tarjeta SIM. Necesitas una tarjeta SIM de tamaño estándar. El Shield no es compatible con tarjetas micro o nano SIM. Si es necesario, puedes conseguir un adaptador para el tamaño de la tarjeta SIM. También es recomendable utilizar una tarjeta SIM con tarifa prepago o SMS ilimitados.

Solicitar datos del sensor vía SMS con Arduino y SIM900 GSM Shield

2) Asegúrese de que la antena esté conectada correctamente.

3) Al seleccionar el puerto serie, asegúrese de que la tapa del puente esté conectada como se muestra en la figura siguiente para utilizar el software serie.

Solicitar datos del sensor vía SMS con Arduino y SIM900 GSM Shield

4) Alimente el escudo con una fuente de alimentación externa de 5V. Verifique que haya seleccionado la fuente de alimentación externa como se mencionó anteriormente.

Solicitar datos del sensor vía SMS con Arduino y SIM900 GSM Shield

5) Para encender/apagar el Shield, presione el botón de encendido durante aproximadamente 2 segundos.

Solicitar datos del sensor vía SMS con Arduino y SIM900 GSM Shield

6) Luego, el LED de estado se enciende y el LED NetLight parpadea cada 800 ms hasta que se encuentra la red. Cuando se encuentre la red, el LED NetLight comenzará a parpadear cada tres segundos.

Solicitar datos del sensor vía SMS con Arduino y SIM900 GSM Shield

7) Puede probar que el escudo funciona correctamente enviando comandos AT desde el IDE de Arduino utilizando un programador FTDI, como mostramos a continuación.

Probando el escudo con el programador FTDI

No es necesario completar este paso para que Shield funcione correctamente. Este es un paso adicional para garantizar que pueda comunicarse con su escudo GSM y enviar comandos AT desde el monitor serie del IDE de Arduino. Para hacer esto necesitarás un programador FTDI como el que se muestra en la imagen a continuación.

Solicitar datos del sensor vía SMS con Arduino y SIM900 GSM Shield

1) Conecte el programador FTDI al escudo GSM como se muestra en la imagen a continuación.

Solicitar datos del sensor vía SMS con Arduino y SIM900 GSM Shield

2) Abra el IDE de Arduino y seleccione el puerto COM correcto.

3) Abra el monitor serie.

Solicitar datos del sensor vía SMS con Arduino y SIM900 GSM Shield

4) Elegir 19200 Velocidad de baudios (la configuración predeterminada del escudo es 19200) y Retorno de carro. Escribir EN Haga clic en el cuadro resaltado en rojo y luego presione Entrar. Vea la imagen a continuación.

Solicitar datos del sensor vía SMS con Arduino y SIM900 GSM Shield

5) El escudo reacciona con DE ACUERDOsi todo funciona correctamente.

Solicitar datos del sensor vía SMS con Arduino y SIM900 GSM Shield

Ahora que sabes que Shield funciona correctamente, puedes comenzar a construir el proyecto.

Esquema

La siguiente figura muestra los esquemas de este proyecto.

Debe conectar el SIM900 GSM Shield y el sensor de temperatura y humedad DHT11 al Arduino como se muestra en la siguiente imagen.

Solicitar datos del sensor vía SMS con Arduino y SIM900 GSM Shield

Instalación de la biblioteca DHT

Para leer desde el sensor DHT, se debe instalar la biblioteca DHT. Si no tiene la biblioteca DHT instalada, siga las instrucciones a continuación:

  1. Haga clic aquí para descargar la biblioteca de sensores DHT. Deberías tener una carpeta .zip en tu carpeta de Descargas.
  2. Descomprima la carpeta .zip y debería obtener Carpeta maestra de la biblioteca de sensores DHT
  3. Cambie el nombre de su carpeta de Maestro de biblioteca de sensores DHT A DHT
  4. mueve eso DHT Carpeta a la carpeta de bibliotecas de instalación de Arduino IDE
  5. Finalmente, vuelva a abrir su IDE de Arduino

Instalación de la biblioteca Adafruit_Sensor

Para utilizar el sensor de temperatura y humedad DHT, también debe utilizar el Biblioteca Adafruit_SensorSiga los siguientes pasos para instalar la biblioteca en su IDE de Arduino:

  1. Haga click aquí para descargar la biblioteca Adafruit_Sensor. Deberías tener una carpeta .zip en tu carpeta de Descargas.
  2. Extraiga la carpeta .zip y debería obtener la carpeta Adafruit_Sensor-master.
  3. Cambie el nombre de su carpeta de Maestro Adafruit_Sensor a Adafruit_Sensor
  4. mueve eso Adafruit_Sensor Carpeta a la carpeta de bibliotecas de instalación de Arduino IDE
  5. Finalmente, vuelva a abrir su IDE de Arduino

código

El siguiente código lee la temperatura y la humedad del sensor DHT y las envía vía SMS cuando envías un SMS con el texto «ESTADO» al Arduino.

Deberá cambiar el código proporcionado con el número de teléfono al que desea que su Arduino responda las lecturas. El código está bien comentado para que comprenda el propósito de cada línea de código. No cargues el código ahora. Desplácese hacia abajo y lea la explicación debajo del código.

/*
 * Rui Santos 
 * Complete Project Details https://randomnerdtutorials.com
 */


// Include DHT library and Adafruit Sensor Library
#include "DHT.h"
#include <Adafruit_Sensor.h>
//Include Software Serial library to communicate with GSM
#include <SoftwareSerial.h>

// Pin DHT is connected to
#define DHTPIN 2
  
// Uncomment whatever type of sensor you're using
#define DHTTYPE DHT11   // DHT 11 
//#define DHTTYPE DHT22   // DHT 22  (AM2302)
//#define DHTTYPE DHT21   // DHT 21 (AM2301)

// Initialize DHT sensor for normal 16mhz Arduino
DHT dht(DHTPIN, DHTTYPE);

// Create global varibales to store temperature and humidity
float t; // temperature in celcius
float f; // temperature in fahrenheit
float h; // humidity

// Configure software serial port
SoftwareSerial SIM900(7, 8);

// Create variable to store incoming SMS characters
char incomingChar;

void setup() {
  dht.begin();
  
  Serial.begin(19200); 
  SIM900.begin(19200);

  // Give time to your GSM shield log on to network
  delay(20000);
  Serial.print("SIM900 ready...");

  // AT command to set SIM900 to SMS mode
  SIM900.print("AT+CMGF=1r"); 
  delay(100);
  // Set module to send SMS data to serial out upon receipt 
  SIM900.print("AT+CNMI=2,2,0,0,0r");
  delay(100);
}

void loop(){
  if (SMSRequest()){
    if(readData()){
      delay(10);
      // REPLACE THE X's WITH THE RECIPIENT'S MOBILE NUMBER
      // USE INTERNATIONAL FORMAT CODE FOR MOBILE NUMBERS
      SIM900.println("AT + CMGS = "+XXXXXXXXXX"");
      delay(100);
      // REPLACE WITH YOUR OWN SMS MESSAGE CONTENT
      String dataMessage = ("Temperature: " + String
      // Uncomment to change message with farenheit temperature
      // String dataMessage = ("Temperature: " + String(f) + "*F " + " Humidity: " + String(h) + "%");      
      
      // Send the SMS text message
      SIM900.print(dataMessage);
      delay(100);
      // End AT command with a ^Z, ASCII code 26
      SIM900.println((char)26); 
      delay(100);
      SIM900.println();
      // Give module time to send SMS
      delay(5000);  
    }
  }
  delay(10); 
}

boolean readData() {
  //Read humidity
  h = dht.readHumidity();
  // Read temperature as Celsius
  t = dht.readTemperature();
  // Read temperature as Fahrenheit
  f = dht.readTemperature(true);

  // Compute temperature values in Celcius
  t = dht.computeHeatIndex(t,h,false);

  // Uncomment to compute temperature values in Fahrenheit
  //f = dht.computeHeatIndex(f,h,false);
  
  // Check if any reads failed and exit early (to try again).
  if (isnan(h) || isnan
    Serial.println("Failed to read from DHT sensor!");
    return false;
  }
  Serial.print("Humidity: "); 
  Serial.print(h);
  Serial.print(" %t");
  Serial.print("Temperature: "); 
  Serial.print
  Serial.print(" *C ");
  //Uncomment to print temperature in Farenheit
  //Serial.print(f);
  //Serial.print(" *Ft");
  return true;
}

boolean SMSRequest() {
  if(SIM900.available() >0) {
    incomingChar=SIM900.read();
    if(incomingChar=='S') {
      delay(10);
      Serial.print(incomingChar);
      incomingChar=SIM900.read();
      if(incomingChar =='T') {
        delay(10);
        Serial.print(incomingChar);
        incomingChar=SIM900.read();
        if(incomingChar=='A') {
          delay(10);
          Serial.print(incomingChar);
          incomingChar=SIM900.read();
          if(incomingChar=='T') {
            delay(10);
            Serial.print(incomingChar);
            incomingChar=SIM900.read();
            if(incomingChar=='E') {
              delay(10);
              Serial.print(incomingChar);
              Serial.print("...Request Received n");
              return true;
            }
          }
        }
      }
    }
  }
  return false;
}

Ver código sin formato

Importando bibliotecas

Primero, incluya las bibliotecas necesarias para este proyecto: la biblioteca DHT para leer desde el sensor DHT y la biblioteca SoftwareSerial para comunicarse con el módulo GSM SIM900.

#include "DHT.h"
#include <Adafruit_Sensor.h>
#include <SoftwareSerial.h>

sensor DHT

Luego le dice al Arduino que el pin de datos DHT está conectado al pin 2, selecciona el tipo de sensor DHT y crea una instancia DHT. El código es compatible con otros sensores DHT siempre que defina el sensor que utiliza en el código.

#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

También crea variables flotantes para almacenar los valores de temperatura y humedad.

float t; // temperature in celcius
float f; // temperature in fahrenheit
float h; // humidity

Protección GSM

La siguiente línea configura la interfaz serie del software en los pines 7 y 8. El pin 7 está configurado como RX y el pin 8 como TX.

SoftwareSerial SIM900(7, 8);

También crea una variable Char para almacenar los caracteres de SMS entrantes.

char incomingChar;

configuración()

En el configuración()Inicie el DHT y el escudo SIM900. El escudo SIM900 está configurado en modo texto y también configura el módulo para enviar los datos SMS al monitor serie cuando los recibe. Esto se hace con las siguientes dos líneas:

SIM900.print("AT+CMGF=1r"); 
SIM900.print("AT+CNMI=2,2,0,0,0r");

Características

Creamos una función para leer la temperatura y la humedad llamada leer datos(). Esta función guarda los valores en el t Y h Variables. El código utiliza la temperatura en grados Celsius, pero está preparado si en su lugar desea grados Fahrenheit; el código incluye comentarios sobre dónde debe realizar los cambios.

También creamos una función que verifica si el mensaje entrante es igual a ESTADO: el Solicitud SMS() Función. Esta función da VERDADERO cuando el Arduino recibe un mensaje con el texto ESTADO y INCORRECTO a menos que. Lees los caracteres de SMS entrantes con:

incomingChar = SIM900.read();

Cinta()

En el Cinta()comprobar si hay una solicitud de SMS con el Solicitud SMS() Función: verifica si el Arduino recibió un mensaje de ESTADO. Si VERDADEROMide la temperatura y la humedad y te las envía por SMS.

El número al que responde Arduino se establece en la siguiente línea:

SIM900.println("AT + CMGS = "XXXXXXXXXXXX"");

Reemplace eso XXXXXXXXXXXX con el número de teléfono del destinatario.

Nota: Debe agregar el número de acuerdo con el formato de número de teléfono internacional. En Portugal, por ejemplo, el número lleva el prefijo +351XXXXXXXXX.

Luego guarde el mensaje que desea enviar en el mensaje de datos Variable. Finalmente envía el mensaje de texto SMS con:

SIM900.print(dataMessage);

demostración

Cuando envías el mensaje de ESTADO al Arduino, este responde con los datos del sensor.

Solicitar datos del sensor vía SMS con Arduino y SIM900 GSM Shield

Mire el vídeo al principio de la publicación para ver una demostración más detallada del proyecto.

Envolver

Este es un gran proyecto para comenzar a trabajar con SIM900 GSM Shield. Ha aprendido a leer y enviar mensajes de texto SMS utilizando Arduino.

Puede aplicar los conceptos que aprenda a prácticamente cualquier proyecto. Aquí hay algunas ideas de proyectos:

  • Sistema de vigilancia que envía un SMS cuando detecta movimiento
  • Relés de control vía SMS
  • Solicite datos de sensores específicos de una colección de sensores agregando condiciones adicionales al código

Si te gusta Arduino, seguro que te gustarán estos 25 proyectos de Arduino paso a paso.

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

Solicitar datos del sensor vía SMS con Arduino y SIM900 GSM Shield

En este proyecto te mostraremos cómo solicitar datos del sensor a través de SMS con Arduino. Como ejemplo, vamos a solicitar la temperatura y humedad de un sensor DHT11. Para enviar y recibir SMS con Arduino, vamos a utilizar el módulo SIM900 GSM Shield.

Recursos Recomendados

  1. Guía para SIM900 GSM GPRS Shield con Arduino
  2. Guía para Sensor de Humedad y Temperatura DHT11/DHT22 con Arduino
  3. Inscríbete en nuestro curso gratuito de Arduino
  4. Curso recomendado: 25 Proyectos Paso a Paso con Arduino

Módulo SIM900 GSM Shield

Existen varios módulos que puedes utilizar para enviar y recibir SMS con Arduino. En este proyecto utilizamos el módulo SIM900 GSM Shield y es el módulo que recomendamos.

Partes Necesarias

  1. Arduino UNO
  2. SIM900 GSM Shield
  3. Adaptador de corriente de 5V 2A
  4. Programador FTDI (opcional)
  5. Tarjeta SIM
  6. Sensor de Temperatura y Humedad DHT11 o DHT22
  7. Resistor de 10 kOhm
  8. Protoboard
  9. Cables Puente

Pasos Preliminares

Antes de comenzar este tutorial, te recomendamos considerar algunos aspectos relacionados con la tarjeta SIM y la alimentación del módulo SIM900 GSM.

Tarjeta SIM Prepaga

Se recomienda utilizar un plan prepagado o un plan con SMS ilimitados para fines de prueba. Si algo sale mal, podrías recibir una gran factura por cientos de mensajes de texto enviados por error. En este tutorial estamos utilizando un plan prepagado con SMS ilimitados.

Desbloqueo del PIN

Para utilizar la tarjeta SIM con el módulo, debes desbloquear el PIN. La forma más sencilla de hacerlo es insertar la tarjeta SIM en tu teléfono inteligente y desactivar el bloqueo del PIN en los ajustes de seguridad del teléfono.

Obtención de la Alimentación Correcta

El módulo tiene un conector DC para la alimentación. Es recomendable utilizar un adaptador de corriente de 5V que pueda proporcionar 2A para alimentar el módulo de forma adecuada.

Configuración del Módulo SIM900 GSM

Los pasos a continuación te muestran cómo configurar el módulo SIM900 GSM.

  1. Inserta la tarjeta SIM en el soporte de la tarjeta SIM.
  2. Confirma que la antena esté bien conectada.
  3. En el puerto serie, asegúrate de que el jumper cap esté conectado para usar el puerto serie de software.
  4. Alimenta el módulo usando una fuente de alimentación externa de 5V.
  5. Para encender/apagar el módulo, mantén presionada la tecla de encendido durante unos 2 segundos.

Esquemático

El siguiente esquemático muestra la conexión de los componentes para este proyecto. Debes conectar el módulo SIM900 GSM y el sensor de temperatura y humedad DHT11 al Arduino según lo mostrado en el esquemático.

Instalación de la Biblioteca DHT

Para leer desde el sensor DHT, debes tener instalada la biblioteca DHT. Sigue los siguientes pasos para instalar la biblioteca en tu Arduino IDE.

Completar el Código

El código proporcionado lee la temperatura y humedad del sensor DHT y los envía por SMS cuando se recibe un SMS con el mensaje «STATE». Asegúrate de modificar el código con el número de teléfono al que Arduino debería enviar las lecturas.

Conclusión

Este proyecto es una excelente forma de empezar a trabajar con el módulo SIM900 GSM Shield. Has aprendido cómo leer y enviar mensajes de texto SMS con Arduino. Puedes aplicar los conceptos aprendidos en prácticamente cualquier proyecto relacionado con la comunicación por SMS.

No olvides ver el video al comienzo de este artículo para obtener una demostración más detallada del proyecto

Si te gusta Arduino, seguramente disfrutarás de estos 25 Proyectos Paso a Paso con Arduino.

5 comentarios en «Solicitar datos del sensor vía SMS con Arduino y SIM900 GSM Shield»

Deja un comentario