Controla una lámpara de 12V vía SMS con Arduino

¿Alguna vez has querido controlar una lámpara de 12V de forma remota? ¡Con Arduino y un simple mensaje de texto es posible! En este artículo, te enseñaremos cómo llevar a cabo este proyecto utilizando tus habilidades de programación y electrónica. Sigue leyendo para descubrir cómo controlar una lámpara con tan solo enviar un SMS.

En este tutorial te mostraremos cómo controlar una lámpara de 12V vía SMS usando un Arduino UNO, un módulo de relé y el escudo GSM SIM900.

Controla una lámpara de 12V vía SMS con Arduino

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

  • Instrucciones para módulo de relé con Arduino.
  • Instrucciones para el Escudo GPRS GSM SIM900 con Arduino

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

Descripción del proyecto

Este proyecto utiliza el escudo GSM SIM900 para recibir y enviar SMS usando Arduino. Este proyecto tiene como objetivo:

  • Enciende una lámpara de 12V enviando un SMS con el texto “ON” al Arduino.
  • Apague una lámpara de 12V enviando un SMS con el texto “OFF” al Arduino.
  • Puedes consultar el estado de la lámpara enviando un SMS con el texto “ESTADO” al Arduino. El Arduino debería responder con el texto «La lámpara está encendida» o «La lámpara está apagada».

Controla una lámpara de 12V vía SMS con Arduino

Piezas requeridas

En este proyecto necesitas conectar el Arduino con el escudo GSM y un módulo de relé conectado a una lámpara de 12V. Aquí hay una lista completa de las piezas necesarias para este proyecto (haga clic en los enlaces a continuación para encontrar el mejor precio en Asesor de creadores):

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

Controla una lámpara de 12V vía SMS con Arduino

Preparando el escudo GSM

Controla una lámpara de 12V vía SMS con Arduino

Cómo utilizar el escudo GSM SIM900:

1) Necesitas una tarjeta SIM activa. Para la prueba recomendamos utilizar una tarjeta SIM con tarifa prepago.

2) Debe desactivar el bloqueo del PIN de la tarjeta SIM. Inserte la tarjeta SIM en su teléfono inteligente y desactive el bloqueo de PIN en la configuración de seguridad del teléfono.

3) El escudo GSM debe ser alimentado por una fuente de alimentación externa de 5V que pueda suministrar 2A, 9V 1A o 12V 1A.

Controla una lámpara de 12V vía SMS con Arduino

4) Usaremos el puerto serie del software para comunicarnos con el Shield. Por lo tanto, 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 puerto serie del software.

Controla una lámpara de 12V vía SMS con Arduino

5) Puedes encender y apagar el escudo presionando el botón de encendido o encenderlo automáticamente usando el Arduino a través del pin D9. Para encender y apagar el escudo automáticamente, debe soldar los conectores R13 como se muestra en la imagen a continuación.

Controla una lámpara de 12V vía SMS con Arduino

6) Si es la primera vez que utiliza GSM Shield, le recomendamos leer los pasos preparatorios en nuestra guía GSM Shield aquí.

7) Inserte la tarjeta SIM en el soporte de la tarjeta SIM.

Controla una lámpara de 12V vía SMS con Arduino

8vo) Finalmente, conecte el escudo GSM SIM900 al Arduino siguiendo el diagrama a continuación.

Controla una lámpara de 12V vía SMS con Arduino

9) Debe encender el SIM900 GSM Shield con la fuente de alimentación externa de 5V. Asegúrese de seleccionar la fuente de alimentación externa usando el interruptor de palanca al lado del conector de CC.

Controla una lámpara de 12V vía SMS con Arduino

Nota: Puede probar que el escudo funciona correctamente enviando comentarios AT desde el IDE de Arduino utilizando un programador FTDI; consulte las instrucciones del escudo GPRS GSM SIM900 con Arduino.

Cableado del módulo de relé

En este proyecto estamos controlando una lámpara de 12V. Sin embargo, este proyecto se puede personalizar fácilmente para controlar el voltaje de la red u otros dispositivos electrónicos. Lea nuestra guía de módulos de relés con Arduino para aprender a controlar la tensión de red con un relé.

Utilizamos la siguiente lámpara de 12V y su portalámparas.

Controla una lámpara de 12V vía SMS con Arduino

Agrega el módulo de relé y el portalámparas al circuito anterior.

Controla una lámpara de 12V vía SMS con Arduino

Por razones de seguridad, colocamos nuestro relé en una caja de plástico.

Controla una lámpara de 12V vía SMS con Arduino

código

A continuación se muestra el código para este proyecto. Asegúrese de editar el código con el número de teléfono al que desea que responda Arduino. Le recomendamos que lea la explicación del código antes de cargarlo.

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

// Include Software Serial library to communicate with GSM
#include <SoftwareSerial.h>

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

// Variable to store text message
String textMessage;

// Create a variable to store Lamp state
String lampState = "HIGH";

// Relay connected to pin 12
const int relay = 12;

void setup() {
  // Automatically turn on the shield
  digitalWrite(9, HIGH);
  delay(1000);
  digitalWrite(9, LOW);
  delay(5000);
  
  // Set relay as OUTPUT
  pinMode(relay, OUTPUT);

  // By default the relay is off
  digitalWrite(relay, HIGH);
  
  // Initializing serial commmunication
  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(SIM900.available()>0){
    textMessage = SIM900.readString();
    Serial.print(textMessage);    
    delay(10);
  } 
  if(textMessage.indexOf("ON")>=0){
    // Turn on relay and save current state
    digitalWrite(relay, LOW);
    lampState = "on";
    Serial.println("Relay set to ON");  
    textMessage = "";   
  }
  if(textMessage.indexOf("OFF")>=0){
    // Turn off relay and save current state
    digitalWrite(relay, HIGH);
    lampState = "off"; 
    Serial.println("Relay set to OFF");
    textMessage = ""; 
  }
  if(textMessage.indexOf("STATE")>=0){
    String message = "Lamp is " + lampState;
    sendSMS(message);
    Serial.println("Lamp state resquest");
    textMessage = "";
  }
}  

// Function that sends SMS
void sendSMS(String message){
  // AT command to set SIM900 to SMS mode
  SIM900.print("AT+CMGF=1r"); 
  delay(100);

  // REPLACE THE X's WITH THE RECIPIENT'S MOBILE NUMBER
  // USE INTERNATIONAL FORMAT CODE FOR MOBILE NUMBERS
  SIM900.println("AT + CMGS = "XXXXXXXXXX""); 
  delay(100);
  // Send the SMS
  SIM900.println(message); 
  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);  
}

Ver código sin formato

El código es bastante fácil de entender. Continúe leyendo para comprender qué se supone que debe hacer cada fragmento de código.

Importar biblioteca

El Arduino se comunica con el Shield a través de comunicación de software en serie. Así que se empieza integrando el SoftwareSerial.h Biblioteca.

// Include Software Serial library to communicate with GSM
#include <SoftwareSerial.h>

Conexión de software en serie

Luego cree un puerto serie de software en los pines 7 y 8 (el pin 7 está configurado como RX y el 8 como TX).

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

Creando variables

tu creas uno Mensaje de texto Variable que contiene el mensaje de texto recibido por el Arduino; y otra variable para almacenar el estado actual de la lámpara (estado del relé), llamada Estado de la lámpara. La variable lampState tiene el valor predeterminado ALTO porque queremos apagar el relé de forma predeterminada. El relé funciona con lógica invertida, por lo que debe configurarlo en ALTO para apagarlo.

// Variable to store text message
String textMessage;

// Create a variable to store Lamp state
String lampState = "HIGH";

También asignas el número de pin al que está conectado el relé, pin 12.

// Relay connected to pin 12
const int relay = 12;

configuración()

En la función setup() primero enciende el escudo GSM. Las siguientes líneas corresponden a presionar el botón de encendido del escudo.

digitalWrite(9, HIGH);
delay(1000);
digitalWrite(9, LOW);
delay(5000);

El relé está configurado como salida y su estado es apagado por defecto.

// Set relay as OUTPUT
pinMode(relay, OUTPUT);

// By default the relay is off
digitalWrite(relay, HIGH);

Luego inicialice la comunicación en serie con el escudo y déle algo de tiempo para iniciar sesión en la red.

// Initializing serial commmunication
Serial.begin(19200); 
SIM900.begin(19200);

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

El Shield está configurado en modo SMS de la siguiente manera:

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

Cinta()

En el bucle () lees los mensajes entrantes y comparas si contienen el texto ON, OFF o STATE. Dependiendo del contenido del mensaje, Arduino realiza diferentes tareas.

Así que primero comprueba si hay mensajes para leer. Si es así, el mensaje aparecerá en la Mensaje de texto Variable. Para fines de depuración, el mensaje se muestra en el monitor serie.

if(SIM900.available() >0) {
 textMessage = SIM900.readString();
 Serial.print(textMessage); 
 delay(10);
}

Enciende la lámpara

Si el mensaje recibido contiene el texto “ON”, el relé se encenderá y la lámpara se encenderá. Luego guarde el estado actual de la lámpara en la Estado de la lámpara Variable. Finalmente, límpialo Mensaje de texto Variable para que quede vacía para recibir nuevos SMS.

if (textMessage.indexOf("ON") >= 0){
// Turn on relay and save current state
digitalWrite(relay, LOW);
lampState = "on";
Serial.println("Relay set to ON"); 
textMessage = "";

Apaga la lámpara

Por el contrario, si el SMS recibido contiene el texto “OFF”, el relé se apaga, se guarda el nuevo estado y se limpia el mensaje de texto.

if (textMessage.indexOf("OFF") >= 0){
// Turn off relay and save current state
digitalWrite(relay, HIGH);
lampState = "off"; 
Serial.println("Relay set to OFF");
textMessage = "";

Devolver el estado de la lámpara

Si el SMS entrante finalmente contiene el texto “ESTADO”, el Arduino debería enviar un mensaje a un número de teléfono predefinido en el que informa si la lámpara está actualmente encendida o apagada.

if (textMessage.indexOf("STATE") >= 0){
  String message = "Lamp is " + lampState;
  sendSMS(message);
  Serial.println("Lamp state resquest");
  textMessage = "";

El mensaje se envía utilizando la función sendSMS() definida al final del código.

Enviar un SMS

El Enviar un SMS() La función creada al final del código acepta una cadena como argumento. Esta cadena debe ser el mensaje a enviar.

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. Por ejemplo, en Portugal el número va precedido de: +351XXXXXXXXX.

Después de agregar el número de teléfono al que desea que responda Arduino, puede copiar el código completo en su IDE de Arduino y cargarlo en su placa Arduino.

Envolver

En este proyecto le mostramos cómo usar el escudo GSM SIM900 para controlar una lámpara de 12 V y solicitar datos (el estado de la lámpara) del Arduino.

Los conceptos aprendidos en este proyecto se pueden aplicar para controlar cualquier dispositivo electrónico. También puedes usar lo que aprendiste aquí para consultar datos de sensores del Arduino, por ejemplo, las últimas lecturas de tu estación meteorológica.

También puedes construir un sistema de vigilancia con un sensor de movimiento PIR y protección GSM que te enviará un SMS cuando se detecte un movimiento inesperado.

Esperamos que este proyecto le haya resultado útil. Si te gusta este proyecto, asegúrate de consultar nuestro curso de Arduino: Proyectos Arduino paso a paso con 25 proyectos.

Gracias por leer.

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

Controla una lámpara de 12V vía SMS con Arduino

En este tutorial te mostraremos cómo puedes controlar una lámpara de 12V mediante SMS utilizando un Arduino UNO, un módulo de relé y el escudo GSM SIM900.

Recursos recomendados

Antes de comenzar con este tutorial, te recomendamos los siguientes recursos:

  1. Guía para módulo de relé con Arduino
  2. Guía para el escudo GSM GPRS SIM900 con Arduino

Video de demostración

Puedes ver la demostración en video aquí.

Visión general del proyecto

Este proyecto utiliza el escudo GSM SIM900 para recibir y enviar SMS con el Arduino. Los objetivos de este proyecto son:

  • Encender una lámpara de 12V cuando envíes un SMS al Arduino con el texto «ON».
  • Apagar una lámpara de 12V cuando envíes un SMS al Arduino con el texto «OFF».
  • Puedes solicitar el estado de la lámpara enviando un SMS al Arduino con el texto «STATE», el Arduino debería responder con el texto «lámpara encendida» o «lámpara apagada».

Partes necesarias

Para este proyecto necesitarás conectar el Arduino al escudo GSM y a un módulo de relé conectado a una lámpara de 12V. Aquí está la lista completa de las partes necesarias para este proyecto:

  • Arduino UNO
  • Escudo GSM SIM900
  • Adaptador de corriente de 5V 2A
  • Módulo de relé
  • Lámpara de 12V
  • Portalámparas de 12V
  • Jack macho DC de 2,1 mm
  • Adaptador de corriente de 12V
  • Protoboard
  • Cables puente
  • Opcional – Fuente de alimentación de 12V/5V

Preparando el escudo GSM

Para utilizar el escudo GSM SIM900:

  1. Necesitas una tarjeta SIM activa. Recomendamos usar una tarjeta SIM con un plan prepago para propósitos de prueba.
  2. Debes desactivar el bloqueo de PIN de la tarjeta SIM. Inserta la tarjeta SIM en tu teléfono inteligente y desactiva el bloqueo de PIN en la configuración de seguridad del teléfono.
  3. El escudo GSM debe alimentarse utilizando una fuente de alimentación externa de 5V que pueda proporcionar 2A, o 9V 1A, o 12V 1A.
  4. Utilizaremos el puerto serial de software para comunicarnos con el escudo. Por lo tanto, asegúrate de que la tapa del jumper esté conectada como se muestra en la figura para usar el puerto serial de software.

Para obtener más detalles sobre cómo preparar el escudo GSM, consulta la guía de escudo GSM SIM900 con Arduino.

Cableado del módulo de relé

En este proyecto controlamos una lámpara de 12V. Sin embargo, este proyecto puede adaptarse fácilmente para controlar el voltaje de CA u otros aparatos electrónicos. Consulta la guía para módulo de relé con Arduino para aprender a controlar el voltaje de CA con un relé.

Para mayor seguridad, colocamos nuestro relé dentro de una caja de plástico.

Código

A continuación, puedes encontrar el código para este proyecto. Asegúrate de editar el código con el número de teléfono al que el Arduino debe responder.

Para ver el código completo y su explicación detallada, visita el sitio web Random Nerd Tutorials.

3 comentarios en «Controla una lámpara de 12V vía SMS con Arduino»

Deja un comentario