El teléfono móvil es un invento revolucionario del siglo. Fue diseñado principalmente para hacer y recibir llamadas y mensajes de texto, pero se ha convertido en todo el mundo después de que el teléfono inteligente entra en escena. En este proyecto estamos construyendo un sistema de automatización del hogar, donde uno puede controlar los electrodomésticos, usando un simple teléfono basado en GSM, simplemente enviando SMS a través de su teléfono. En este proyecto, no se necesita un teléfono inteligente, solo el viejo teléfono GSM funcionará para encender y apagar cualquier aparato electrónico doméstico, desde cualquier lugar. También puede consultar algunos proyectos más de automatización del hogar inalámbrico aquí: Automatización del hogar con control remoto por infrarrojos usando Arduino, Automatización del hogar controlada por Bluetooth junto con Automatización del hogar basada en DTMF, Automatización del hogar controlada por PC usando Arduino.
Explicación de trabajo
En este proyecto, Arduino se utiliza para controlar todo el proceso. Aquí hemos utilizado la comunicación inalámbrica GSM para controlar los electrodomésticos. Enviamos algunos comandos como "# A.light on *", "# A.light off *" y así sucesivamente para controlar los electrodomésticos de CA. Después de recibir los comandos dados por Arduino a través de GSM, Arduino envía una señal a los relés, para encender o apagar los electrodomésticos mediante un controlador de relé.
Componentes del circuito:
- Arduino UNO
- Módulo GSM
- ULN2003
- Relé de 5 voltios
- Bombilla con soporte
- Cables de conexión
- Tabla de pan
- LCD de 16x2
- Fuente de alimentación
- Teléfono móvil
Aquí hemos utilizado un prefijo en la cadena de comandos que es "#A". Este prefijo se usa para identificar que el comando principal viene a su lado y * al final de la cadena indica que el mensaje ha finalizado.
Cuando enviamos SMS al módulo GSM por móvil, GSM recibe ese SMS y lo envía a Arduino. Ahora Arduino lee este SMS y extrae el comando principal de la cadena recibida y lo almacena en una variable. Después de esto, Arduino compara esta cadena con una cadena predefinida. Si se produjo una coincidencia, Arduino envía una señal al relé a través del controlador de relé para encender y apagar los electrodomésticos. Y el resultado relativo también se imprime en una pantalla LCD de 16x2 utilizando los comandos apropiados.
Aquí, en este proyecto, hemos utilizado 3 bombillas de cero vatios para la demostración que indica Ventilador, Luz y TV.
A continuación se muestra la lista de mensajes que enviamos por SMS, para encender y apagar el ventilador, la luz y la TV:
S.no. |
Mensaje |
Operación |
1 |
# A.fan en * |
Ventilador encendido |
2 |
# A. fan off * |
Ventilador apagado |
3 |
# A. luz encendida * |
Luces encendidas |
4 |
# A. luz apagada * |
Luz apagada |
5 |
# A.tv en * |
TV ENCENDIDA |
6 |
# A.tv apagado * |
TV apagado |
7 |
# A.todos en * |
Todo encendido |
8 |
# A.todos fuera * |
Todo apagado |
Módulo GSM:
El módulo GSM se utiliza en muchos dispositivos de comunicación que se basan en la tecnología GSM (Sistema global para comunicaciones móviles). Se utiliza para interactuar con la red GSM utilizando una computadora. El módulo GSM solo comprende los comandos AT y puede responder en consecuencia. El comando más básico es "AT", si GSM responde bien, entonces está funcionando bien, de lo contrario responde con "ERROR". Hay varios comandos AT como ATA para responder una llamada, ATD para marcar una llamada, AT + CMGR para leer el mensaje, AT + CMGS para enviar el sms, etc. Los comandos AT deben ir seguidos de retorno de carro, es decir, \ r (0D en hexadecimal), como "AT + CMGS \ r". Podemos usar el módulo GSM usando estos comandos:
ATE0 - Para eco desactivado
AT + CNMI = 2,2,0,0,0
ATD
AT + CMGF = 1
AT + CMGS = "Número de móvil"
>> Ahora podemos escribir nuestro mensaje
>> Después de escribir el mensaje
Ctrl + Z comando enviar mensaje (26 en decimal).
ENTRAR = 0x0d en HEX
El SIM900 es un módulo GSM / GPRS cuatribanda completo que ofrece un rendimiento GSM / GPRS 850/900/1800/1900 MHz para voz, SMS y datos con bajo consumo de energía.
Descripción del circuito
Las conexiones de este circuito de automatización del hogar basado en GSM son bastante simples, aquí se usa una pantalla de cristal líquido para mostrar el estado de los electrodomésticos que está directamente conectado a arduino en modo de 4 bits. Los pines de datos de la pantalla LCD, a saber, RS, EN, D4, D5, D6, D7 están conectados al pin digital arduino número 6, 7, 8, 9, 10, 11. Y el pin Rx y Tx del módulo GSM está conectado directamente en Tx y Rx pin de Arduino respectivamente. Y el módulo GSM se alimenta mediante un adaptador de 12 voltios. Los relés SPDT 3 de 5 voltios se utilizan para controlar LUZ, VENTILADOR y TV. Y los relés están conectados al pin arduino número 3, 4 y 5 a través del controlador de relé ULN2003 para controlar la LUZ, el VENTILADOR y la TV respectivamente.
Código Descripción
En la programación de parte de este proyecto, en primer lugar en la programación incluimos una biblioteca para pantalla de cristal líquido y luego definimos los pines de control y datos para LCD y electrodomésticos.
#incluir
Después de esta comunicación en serie se inicializa a 9600 bps y da la dirección al pin utilizado.
configuración vacía () {lcd.begin (16,2); Serial.begin (9600); pinMode (led, SALIDA); pinMode (ventilador, SALIDA); pinMode (Luz, SALIDA); pinMode (TV, SALIDA);
Para recibir datos en serie, hemos utilizado dos funciones, una es Serial.available, que verifica si hay datos en serie y otra es Serial.read, que lee los datos que vienen en serie.
while (Serial.available ()) {char inChar = Serial.read ();
Después de recibir datos en serie, los hemos almacenado en una cadena y luego esperamos Enter.
void serialEvent () {while (Serial.available ()) {if (Serial.find ("# A.")) {digitalWrite (led, HIGH); retraso (1000); digitalWrite (led, BAJO); while (Serial.available ()) {char inChar = Serial.read (); str = inChar; if (inChar == '*') {temp = 1; regreso; }
Cuando aparece Enter, el programa comienza a comparar la cadena recibida con la cadena ya definida y, si la cadena coincide, se realiza una operación relativa utilizando el comando apropiado que se proporciona en el código.
void check () {if (! (strncmp (str, "tv on", 5))) {digitalWrite (TV, HIGH); lcd.setCursor (13,1); lcd.print ("ENCENDIDO"); retraso (200); } else if (! (strncmp (str, "tv apagada", 6))) {digitalWrite (TV, LOW); lcd.setCursor (13,1); lcd.print ("APAGADO"); retraso (200); }