¿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.
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:
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:
- Arduino UNO – leer Los mejores kits de inicio de Arduino
- Protección SIM900 GSM
- Fuente de alimentación de 5V 2A
- programador FTDI (Opcional)
- tarjeta SIM
- DHT11 o DHT22 Sensor de temperatura y humedad
- Resistencia de 10 kOhmios
- tablero de circuitos
- Cables de puente
Puedes utilizar los enlaces anteriores o ir directamente MakerAdvisor.com/tools ¡Para encontrar todas las piezas para tus proyectos al mejor precio!
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.
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.
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.
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.
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.
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.
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.
5) Para encender/apagar el Shield, presione el botón de encendido durante aproximadamente 2 segundos.
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.
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.
1) Conecte el programador FTDI al escudo GSM como se muestra en la imagen a continuación.
2) Abra el IDE de Arduino y seleccione el puerto COM correcto.
3) Abra el monitor serie.
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.
5) El escudo reacciona con DE ACUERDOsi todo funciona correctamente.
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.
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:
- Haga clic aquí para descargar la biblioteca de sensores DHT. Deberías tener una carpeta .zip en tu carpeta de Descargas.
- Descomprima la carpeta .zip y debería obtener Carpeta maestra de la biblioteca de sensores DHT
- Cambie el nombre de su carpeta de
Maestro de biblioteca de sensores DHTA DHT - mueve eso DHT Carpeta a la carpeta de bibliotecas de instalación de Arduino IDE
- 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:
- Haga click aquí para descargar la biblioteca Adafruit_Sensor. Deberías tener una carpeta .zip en tu carpeta de Descargas.
- Extraiga la carpeta .zip y debería obtener la carpeta Adafruit_Sensor-master.
- Cambie el nombre de su carpeta de
Maestro Adafruit_Sensora Adafruit_Sensor - mueve eso Adafruit_Sensor Carpeta a la carpeta de bibliotecas de instalación de Arduino IDE
- 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;
}
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.
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.
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
- Guía para SIM900 GSM GPRS Shield con Arduino
- Guía para Sensor de Humedad y Temperatura DHT11/DHT22 con Arduino
- Inscríbete en nuestro curso gratuito de Arduino
- 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
- Arduino UNO
- SIM900 GSM Shield
- Adaptador de corriente de 5V 2A
- Programador FTDI (opcional)
- Tarjeta SIM
- Sensor de Temperatura y Humedad DHT11 o DHT22
- Resistor de 10 kOhm
- Protoboard
- 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.
- Inserta la tarjeta SIM en el soporte de la tarjeta SIM.
- Confirma que la antena esté bien conectada.
- En el puerto serie, asegúrate de que el jumper cap esté conectado para usar el puerto serie de software.
- Alimenta el módulo usando una fuente de alimentación externa de 5V.
- 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.
¡Qué idea tan original! Me parece increíble la forma en que se puede interactuar con un sensor a través de un simple mensaje de texto. La tecnología no deja de sorprenderme. 🤯📳
¡Impresionante! Nunca imagine que se pudiera comunicar con un sensor mediante mensajes de texto. La creatividad en la tecnología no deja de sorprenderme. 📶🛠️
¡Interesante! Me parece genial poder controlar un sensor con un simple mensaje de texto. ¡Buena idea! 📱🌡️
¡Qué ingenioso! Nunca pensé que se pudiera utilizar un Arduino y un SIM900 GSM Shield para solicitar datos de un sensor vía SMS. ¡Me encanta la creatividad en la electrónica! 🤖📶
¡Vaya invento! Nunca se me habría ocurrido usar un Arduino y un SIM900 GSM Shield de esa forma. La tecnología nunca deja de sorprenderme. 🤯📲