¿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.
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».
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):
- Arduino UNO – leer Los mejores kits de inicio de Arduino
- Protección SIM900 GSM
- Fuente de alimentación de 5V 2A
- módulo de relé
- lámpara de 12V
- portalámparas de 12V
- Conector cilíndrico CC de 2,1 mm
- fuente de alimentación de 12V
- tablero de circuitos
- Cables de puente
- Opcional: fuente de alimentación de 12 V/5 V
Puedes utilizar los enlaces anteriores o ir directamente MakerAdvisor.com/tools ¡Para encontrar todas las piezas para tus proyectos al mejor precio!
Preparando el escudo GSM
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.
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.
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.
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.
8vo) Finalmente, conecte el escudo GSM SIM900 al Arduino siguiendo el diagrama a continuación.
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.
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.
Agrega el módulo de relé y el portalámparas al circuito anterior.
Por razones de seguridad, colocamos nuestro relé en una caja de plástico.
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);
}
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.
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:
- Guía para módulo de relé con Arduino
- 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:
- Necesitas una tarjeta SIM activa. Recomendamos usar una tarjeta SIM con un plan prepago para propósitos de prueba.
- 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.
- El escudo GSM debe alimentarse utilizando una fuente de alimentación externa de 5V que pueda proporcionar 2A, o 9V 1A, o 12V 1A.
- 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.
¡Qué genial! Nunca imaginé que se pudiera controlar una lámpara así, definitivamente lo voy a intentar. ¡Gracias por la inspiración!
¡Wow! Qué invento tan ingenioso, definitivamente tengo que intentarlo en mi casa. ¡Gracias por la idea!
Qué interesante! Me encantaría probarlo en casa. ¡Gracias por compartir!