A medida que la tecnología mejora, la automatización se ha convertido en una necesidad, ya sea en el hogar, la oficina o en cualquier otro lugar. En casa encontramos muchos electrodomésticos, ya sean ventiladores, aire acondicionado, TV, luces, etc. ¿Qué pasaría si pudieras operarlos todos con el teléfono Android que tienes en la mano?
Figura 1: Prototipo de sistema domótico controlado por Android Móvil
El módulo HC-05 es un módulo Bluetooth SPP (Protocolo de puerto serie) fácil de usar diseñado para una configuración de conexión serie inalámbrica transparente. Contiene 6 pines etiquetados en la parte posterior, pero la mayoría de los módulos solo tienen 4 de ellos llenos de pines pogo. KEY & STATE no son necesarios ya que KEY se usa para flashear el dispositivo y STATE simplemente indica si el dispositivo está activo o no. Eso deja solo GND, VCC, TXD, RXD.
Figura 2: Imagen típica del módulo Bluetooth HC-05
Para conectar el módulo con Arduino necesitamos utilizar los pines serie (Tx y Rx) proporcionados en la placa.
Conexiones y Trabajo
Haciendo conexiones con HC-05:
Algunos módulos están etiquetados como VCC para voltajes de trabajo de hasta ~6 voltios. A estos módulos NO les gusta nada excepto 3,3 voltios en la línea VCC. Debemos utilizar un conversor de nivel para 3.3V en la línea RXD. Utilice dos resistencias como divisor de voltaje simple para convertir el nivel TTL. Conecte una resistencia de 2,2 k ohmios a tierra y otra resistencia de 1 k ohmios a la línea TXD en la MCU. Conecte el pin RXD entre las dos resistencias para obtener una salida de aproximadamente 3,4 voltios. Conecte el pin RXD del módulo al TXD (Pin digital 1) del Arduino, usando la configuración del divisor de voltaje que se muestra a continuación:Figura 3: Imagen que muestra las conexiones del circuito del Arduino Uno y el Módulo Bluetooth HC-05
Ahora conecte el TXD del módulo al RXD del Arduino (Pin digital 0). Para operar los dispositivos, no podemos conectarlos directamente al Arduino. Necesitamos algo llamado RELÉ, que se activa con la ayuda de un circuito controlador basado en transistores.Figura 4: Diagrama del circuito del controlador de relé basado en transistores
La 'entrada' es del pin de E/S de Arduino. RB es la resistencia limitadora de corriente en la base del transistor. Su valor normalmente es de 10K Ohm. 'VS' es el voltaje de suministro necesario para accionar la bobina del relé (depende de la clasificación del relé). Un diodo está conectado a la inversa en paralelo al relé. Esto se hace para evitar la contrafem generada por la bobina que podría dañar el transistor o el Arduino.
A continuación se muestra un diagrama de bloques simplificado del sistema completo:
Figura 5: Diagrama de bloques del sistema domótico controlado por Android Mobile
Después de realizar las conexiones anteriores, verá el LED parpadeando en el módulo. Esto solo garantiza que su dispositivo esté encendido correctamente. Después de eso, elija su teléfono Android y obtenga la aplicación “ Arduino Bluetooth Terminal ” de Google Play Store. Esta aplicación está disponible de forma gratuita y es fácil de usar.
Figura 6: Captura de pantalla de la aplicación de Android utilizada para controlar los electrodomésticos
Después de la instalación, encienda el Bluetooth de su teléfono. Ahora busque dispositivos hasta que encuentre HC-05 y luego comience a emparejarlos. Ingrese la contraseña 1234 cuando se le solicite.
Si se empareja correctamente, el LED parpadeante en el módulo Bluetooth dejará de parpadear. En caso contrario, vuelva a comprobar las conexiones. Vuelve a la aplicación que acabas de descargar. Automáticamente encontrará el dispositivo, coincidirá con la clave mostrada e iniciará una conversación. Asegúrese de que el Bluetooth de su teléfono permanezca encendido.Figura 7: Imagen que muestra el prototipo completo del sistema domótico controlado por teléfono Android basado en Arduino
Operación del sistema:
Cuando enviamos '1' a Arduino, el dispositivo 1 conectado a Arduino se enciende y cuando se envía '2', se enciende el dispositivo 2. Los datos seriales son leídos por el Arduino, a través de la función Serial.read y se almacenan en el estado de la variable de tipo entero declarada en el programa. Después de eso, en el ciclo, simplemente comparamos el valor de estado con 1, 2, 3 y así sucesivamente hasta 8 para verificar la condición de ENCENDIDO de 8 electrodomésticos. Luego comparamos el valor del estado con a, b, cy así sucesivamente hasta h para verificar el estado APAGADO de los dispositivos y realizar la operación respectiva.
Además, también podemos monitorizar el estado físico como temperatura, presión, etc., a través del teléfono Android. Digamos que necesitamos controlar la temperatura en la habitación. Conectamos el sensor de temperatura LM35 al Arduino. Ahora lea el valor del sensor y envíelo al teléfono a través del enlace serie establecido vía Bluetooth entre el teléfono y el Arduino.Código fuente del proyecto
### intled1 = 2; intled2 = 3; intled3 = 4; intled4 = 5; intled5 = 6; intled6 = 7; intled7 = 8; intled8 = 9; estado entero; bandera int=0; configuración vacía { pinMode(led1, SALIDA); pinMode(led2, SALIDA); pinMode(led3, SALIDA); pinMode(led4, SALIDA); pinMode(led5, SALIDA); pinMode(led6, SALIDA); pinMode(led7, SALIDA); pinMode(led8, SALIDA); Serie.begin(9600); } bucle vacío { si(Serie.disponible > 0) { estado = Serial.read; bandera=0; } si (estado == '1') { escritura digital (led1, ALTO); si(bandera == 0){ Serial.println("El dispositivo 1 está encendido"); bandera=1; } } de lo contrario si (estado == '2') { escritura digital (led2, ALTO); si(bandera == 0){ Serial.println("El dispositivo 2 está encendido"); bandera=1; } } de lo contrario si (estado == '3') { escritura digital (led3, ALTO); si(bandera == 0){ Serial.println("El dispositivo 3 está encendido"); bandera=1; } } de lo contrario si (estado == '4') { escritura digital (led4, ALTO); si(bandera == 0){ Serial.println("El dispositivo 4 está encendido"); bandera=1; } } de lo contrario si (estado == '5') { escritura digital (led5, ALTO); si(bandera == 0){ Serial.println("El dispositivo 5 está encendido"); bandera=1; } } de lo contrario si (estado == '6') { escritura digital (led6, ALTO); si(bandera == 0){ Serial.println("El dispositivo 6 está encendido"); bandera=1; } } de lo contrario si (estado == '7') { escritura digital (led7, ALTO); si(bandera == 0){ Serial.println("El dispositivo 7 está encendido"); bandera=1; } } de lo contrario si (estado == '8') { escritura digital (led8, ALTA); si(bandera == 0){ Serial.println("El dispositivo 8 está encendido"); bandera=1; } } de lo contrario si (estado == 'a') { escritura digital (led1, BAJO); si(bandera == 0){ Serial.println("El dispositivo 1 está apagado"); bandera=1; } } de lo contrario si (estado == 'b') { escritura digital (led2, BAJO); si(bandera == 0){ Serial.println("El dispositivo 2 está apagado"); bandera=1; } } de lo contrario si (estado == 'c') { escritura digital (led3, BAJO); si(bandera == 0){ Serial.println("El dispositivo 3 está apagado"); bandera=1; } } de lo contrario si (estado == 'd') { escritura digital (led4, BAJO); si(bandera == 0){ Serial.println("El dispositivo 4 está apagado"); bandera=1; } } de lo contrario si (estado == 'e') { escritura digital (led5, BAJO); si(bandera == 0){ Serial.println("El dispositivo 5 está apagado"); bandera=1; } } de lo contrario si (estado == 'f') { escritura digital (led6, BAJO); si(bandera == 0){ Serial.println("El dispositivo 6 está apagado"); bandera=1; } } de lo contrario si (estado == 'g') { escritura digital (led7, BAJO); si(bandera == 0){ Serial.println("El dispositivo 7 está apagado"); bandera=1; } } de lo contrario si (estado == 'h') { escritura digital (led8, BAJO); si(bandera == 0){ Serial.println("El dispositivo 8 está apagado"); bandera=1; } } } ###
Diagramas de circuito
Diagrama de circuito: sistema de automatización del hogar controlado por Android basado en Arduino | ![]() |