Controlar bombilla con Arduino, Bluetooth y teléfono móvil

Hoy te mostraré un proyecto que hice hace algún tiempo (año 2017) pero no publiqué ni documenté. Se trata de apagar y encender la luz de una habitación usando tu teléfono, de manera inalámbrica.

Recuerda que puedes modificar el circuito que te mostraré, así como usar tus propios componentes, hacer mejoras, etcétera. Yo te enseñaré cómo lo hice personalmente. Lo que pasará realmente será:

  1. El Arduino estará conectado a un módulo Bluetooth y a un relevador. La bombilla de tu habitación estará conectada a la toma de corriente y al relevador.
  2. Cuando le envíes un dato al módulo Bluetooth, el Arduino lo va a leer y dependiendo de ello apagará o encenderá (si se le puede considerar así) al relevador, y el mismo dejará pasar o quitará la energía eléctrica que va desde la toma de corriente a la bombilla o foco.
  3. Desde nuestro teléfono vamos a enviar un valor al módulo Bluetooth, aunque puede ser también desde una computadora que envíe valores por el mismo medio.

Nota importante: no me hago responsable si algo sale mal, recuerda que es peligroso trabajar con la energía eléctrica doméstica, así que toma todas las precauciones.

Materiales necesarios

Recuerda que siempre puedes reemplazar los materiales que te indico si sabes lo que haces.

  • Arduino UNO
  • Módulo Bluetooth HC 05
  • Relevador de 5V
  • Cables para realizar la conexión (tanto del circuito como de la bombilla)
  • Bombilla o foco (con su socket)

También asumo que tienes las nociones básicas de programación en Arduino, cómo subir el código, etcétera. Y que sabes cómo funciona un relevador. En caso de que no, te recomiendo que vayas a buscar un tutorial sobre lo que no entiendas.

Explicación técnica

Voy a explicar cómo es que funciona este circuito que realmente es muy básico. El relevador será el que se encarga de reemplazar al interruptor físico de la bombilla. Y nosotros vamos a encender al relevador desde el Arduino.

Por otro lado, en cuanto al módulo Bluetooth simplemente vamos a leerlo a través de su interfaz Serial (con Serial.read).

Si recibimos datos, los evaluamos y dependiendo de ellos encendemos o apagamos el relevador (digitalWrite, tal como si fuera un LED).

Finalmente desde nuestro dispositivo móvil con Android vamos a conectarnos al módulo Bluetooth y luego (desconozco si para iOs existe esto) vamos a usar una terminal para enviar datos al módulo.

Específicamente para este proyecto, si enviamos una a (ASCII 97), la bombilla será encendida. Y en caso de enviar una b (ASCII 98), la bombilla será apagada.

Preparando circuito

El circuito queda como se ve a continuación. Eres libre de agregar más focos, relevadores, etcétera.

Circuito para controlar bombilla usando Arduino y Bluetooth

Módulo bluetooth

Antes que nada, si no has configurado tu módulo puede que este post te interese.

En este caso conectamos el TX del módulo bluetooth al RX del Arduino (si tú usas otra placa, simplemente busca el pin equivalente) y el RX del bluetooth al TX del Arduino. Es decir, van en orden inverso.

Es importante entender que al conectar el módulo HC 05 al Arduino en esos pines estamos reemplazando la comunicación serial con la computadora (no se hace un daño permanente ni nada por el estilo, no te preocupes). Esto tiene su ventaja y desventaja. La desventaja es que no podremos leer y escribir en el monitor serial de la computadora, pues no existirá, ya que será reemplazado por el módulo.

La ventaja es que así podemos probar desde el monitor serial antes de tener el módulo Bluetooth, pues si desconectamos el módulo y conectamos el cable USB podremos depurar nuestros comandos a través del monitor serial; para que al final desconectemos el monitor serial, conectemos el módulo BT y todo esté listo.

Si no te gusta este enfoque, puedes usar la librería SoftwareSerial, que te permite usar un Serial a través del software, usar varios puertos, etcétera.

Relevador

El pin 2 del Arduino está conectado al relevador. Dependiendo de cómo lo conectes al relevador, aquí deberás escribir una señal baja o una señal alta para apagar y encender la bombilla (siempre puedes hacer pruebas).

Por cierto, en cuanto al relevador puedes usar un módulo de relevador que ya traiga una placa, un diodo, LED indicador y todos los pines listos (yo tengo uno de 8 pero solo es un ejemplo):

Módulo de 8 relevadores para controlar bombilla con Arduino y Bluetooth

O un relevador con un diodo flyback:

Relevador con Diodo

Lee aquí por qué es importante usar un diodo flyback.

También te recomiendo que antes de que conectes el relevador al foco hagas pruebas con un LED (no olvides la resistencia) y ya cuando sepas cómo funciona, conectes la corriente alterna.

Código fuente

Se podría decir que lo más complejo de este proyecto es obtener y conectar los materiales; pues el código es realmente sencillo.

Por cierto, yo estoy usando PlatformIO para programar pero igualmente funciona con el IDE de Arduino (creo que solo debes remover el include).

En la línea 5 defino el valor que se debe enviar para encender la bombilla, y en la 6 el valor para apagarla. También defino el pin al que está conectado el relevador, que en este caso es el 2.

Después dentro del loop leo del Serial en caso de que esté disponible, y convierto el valor a entero; de este modo obtengo el valor ASCII que se haya enviado. Así que si se ha enviado una a, el valor será 97. En caso de que sea b, el valor será 98.

Y finalmente con digitalWrite enciendo o apago la bombilla. Recuerda que en este caso el módulo Bluetooth se encarga de todo y nos envía los datos por Serial.

Aplicación Android

Si el circuito está bien y ya está conectado, el módulo bluetooth debe estar parpadeando de manera continua y rápida. Ahora es momento de emparejar tu dispositivo Android con el módulo.

Podríamos programar una aplicación para Android, pero ya hay algunas aplicaciones que son una terminal Bluetooth. Yo te recomiendo Serial Bluetooth Terminal disponible aquí: https://play.google.com/store/apps/details?id=de.kai_morich.serial_bluetooth_terminal

Abre la app y dentro del menú selecciona Devices. Ahora busca el módulo. El mío se llama pacuis.

Seleccionar el módulo bluetooth HC 05 desde el teléfono

Luego de haberlo conectado te aparecerá la terminal en donde ya puedes escribir a o b para encender o apagar el foco desde tu dispositivo Android usando Arduino:

Comando para apagar y encender foco con Arduino y Bluetooth

Si te fijas, tienes botones de M1, M2, etcétera. Si los mantienes presionados podrás editarlos para crear un macro que simplemente enviará el comando que le indiques al presionar ese botón:

Personalizar botón para controlar bombilla usando Bluetooth

De hecho en las capturas anteriores ya tengo los botones; solo te estoy mostrando cómo hacerlo.

Conclusión

La primera vez que hice esto me emocioné bastante. De hecho yo no conocía los relevadores, los conocí porque los pidieron como materiales en una clase de electrónica en la universidad, y cuando supe cómo funcionaban me vino a la mente este proyecto.

Obviamente puede quedar mejor, más optimizado, con otros componentes, etcétera. De hecho yo quería hacerlo con mi ESP8266 para poder controlarlo con WiFi incluso cuando esté fuera de casa y para no tener que encender y apagar el Bluetooth de mi teléfono, pero mis relevadores son de 5V y la ESP8266 solo da 3.3, así que eso tendrá que esperar.

Otra idea que se me ocurrió fue que, debido a que tengo dos módulos Bluetooth, podría usar la ESP8266 con su WiFi para crear un servidor web, y al recibir una señal enviarla por Bluetooth al otro módulo conectado al Arduino y que éste último encendiera el relevador con sus 5V, pero sería como aniquilar cucarachas con un cañón.

Igualmente si hago el proyecto o consigo relevadores de 3V traeré el tutorial tan pronto lo haya probado. Ya para terminar, te dejo una foto de cómo es que monté el circuito en una tabla para hacer pruebas:

Circuito para controlar bombilla con Arduino, Bluetooth, Relevador y teléfono móvil

Te dejo con más tutoriales de Arduino y electrónica.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario