viernes, 13 de enero de 2017

Control del brillo de una bombilla mediante un Dimmer AC y Bluetooth



Gracias a este POST vamos a aprender a controlar el brillo de una bombilla convencional de 220VAC mediante un Dimmer AC, como ya hicimos en un POST anterior, aunque en este caso vamos a modificar o variar el pulso PWM, que controla el Dimmer AC, desde una APP Android a través de Bluetooth y no desde el monitor serie como ya vimos con anterioridad. Ahora bien, para que nuestro Arduino pueda recibir el valor del PWM a través de Bluetooth tenemos que añadirle a nuestro proyecto un módulo Bluetooth HC-05, descrito y configurado en este POST, aunque lo debemos de conectar a nuestro Arduino como se muestra en la siguiente tabla. Cabe recordaros que la velocidad de comunicación (BAUDIOS) configurada mediante comandos AT del módulo Bluetooth HC-05, que en mi caso son 38400 bps (por defecto), debe coincidir con la velocidad de comunicación serie para el módulo Bluetooth que incluimos dentro de la programación que cargaremos a nuestro Arduino UNO (BT.begin(38400);).

  Tabla de conexiones entre nuestro Arduino y el módulo HC-05

Como ya sabemos de un POST anterior, un Dimmer AC es un atenuador de intensidad capaz de regular los 220VAC de su entrada para que su salida ofrezca un valor de 220VAC o inferior, que es donde conectaremos la bombilla para así poder controlar su brillo variando el pulso PWM entregado a través de Bluetooth. A continuación os muestro una tabla donde se relaciona directamente el valor  de la señal PWM con el porcentaje de atenuación del Dimmer y el porcentaje de brillo de la bombilla.

  Diagrama de funcionamiento del Dimmer AC

Como se puede observar en el diagrama anterior, la atenuación del valor de la entrada del Dimmer AC respecto de su salida es inversamente proporcional al brillo de la bombilla, es decir, a mayor atenuación de los 220VAC de la entrada del Dimmer AC obtenemos menor voltaje en la salida del mismo (menor brillo de la bombilla) y viceversa. A continuación os muestro las conexiones que debemos realizar en el Dimmer AC para que nuestro sistema funcione tal y como se ha descrito.

Tabla de conexiones del Dimmer AC

Una vez realizadas las oportunas conexiones de todo el sistema lo primero que tenemos que hacer es compilar y cargar el programa que tenemos en la descarga, en nuestro Arduino, para posteriormente instalar la aplicación "1 Channel Dimmer Bluetooth " que nos podemos descargar del siguiente enlace. Para instalar la APP en nuestro Smartphone, simplemente descomprimimos la carpeta descargada y copiamos el archivo “1CH_Dimmer_Bluetooth.apk” dentro de la tarjeta SD, para posteriormente abrir el explorador de archivos de nuestro Smartphone, buscar la ruta del archivo copiado y ejecutar el archivo dándole todos los permisos que sean necesarios para su instalación.

  Aplicación Android “1 Channel Dimmer Bluetooth”

Una vez instalada la aplicación debemos de realizar una serie de procesos como se muestra en el siguiente vídeo para poder vincular y conectar el módulo Bluetooth HC-05 a nuestro Smartphone y así poder utilizar la aplicación para enviar el valor del PWM mediante Bluetooth.



Si pulsamos el botón “ON” de la APP se envía a través de Bluetooth el valor  “90” (Bombilla completamente encendida) y si por el contrario pulsamos el botón “OFF” se envía el valor “14” (Bombilla completamente apagada).  Para valores intermedios del pulso PWM (entre 14 y 90), es decir, para variar el brillo de la bombilla, tenemos que ir pulsando sobre la barra central y nunca arrastrar el marcador, puesto que si lo hacemos, el sistema quedará bloqueado necesitando un reinicio para volver a su funcionamiento normal.  Si el valor enviado a través de la APP es superior a 90 es considerado por el Dimmer AC en todos los casos como 90, gracias a la programación que le cargamos a nuestro Arduino, y si es inferior a 14 es considerado siempre como 14. Para poder observar el valor del PWM que le estamos mandando al Dimmer AC a través de la APP en  cada momento simplemente tendremos que abrir el monitor serie del IDE de Arduino como ya lo hemos realizado en múltiples ocasiones y comenzar a enviar valores PWM desde la APP.
  Monitor serie


Lista de Materiales:



·         Arduino UNO Rev.3.

·         Cable USB tipo A-B.

·         Dimmer AC (50Hz/220V).

·         Módulo Bluetooth HC-05.

·         Casquillo portalámparas de PVC.

·         Bombilla de 28W/220VAC (vale cualquier bombilla de 220VAC).

·         Protoboard.

·         Cables de conexión.





Código del programa:

miércoles, 21 de diciembre de 2016

Panel luminoso de Matrices LED 8x8 controlado mediante Bluetooth


En este POST aprenderemos a controlar mediante Bluetooth un panel luminoso compuesto por 4 matrices LED 8X8, es decir, lo que haremos en cuestión será mostrar un mensaje de texto en forma de bucle desplazándose de derecha a izquierda (Scroll horizontal) dentro de las 4 matrices LED 8x8 que conectaremos en cascada. Estos mensajes que vamos a visualizar en el panel los podemos enviar a través de Bluetooth desde un PC o desde un Smartphone con sistema operativo Android, aunque los que tengáis un sistema operativo iOS lo podréis realizar de una manera similar aunque no se incluya en este POST. No os voy a hablar más sobre la conexión, el funcionamiento y las características de las matrices LED 8X8 porque ya se explicó en otro POSTahora bien, para que nuestro Arduino pueda recibir los mensajes a través de Bluetooth necesitamos añadirle el módulo Bluetooth HC-06 descrito y configurado justamente en el POST anterioraunque lo debemos de conectar a nuestro Arduino como se muestra en la siguiente tabla.

  Tabla de conexiones entre nuestro Arduino y el módulo HC-06
 

Una vez realizadas las oportunas conexiones de todo el sistema lo primero que tenemos que hacer es compilar y cargar el programa que tenemos en la descarga, en nuestro Arduino, puesto que es válido para cualquiera de los dos métodos de envío de mensajes de texto (ASCII) a través de Bluetooth que se van a analizar en este POST. A continuación os describo detalladamente cada uno de los dos métodos de los que disponemos para interactuar a través de Bluetooth con nuestro Arduino junto con el módulo HC-06.

 

Envío de mensajes mediante Bluetooth desde un PC


Como ya os anticipaba con anterioridad, uno de los dos métodos que vamos a poder utilizar para enviar mensajes de texto a través de Bluetooth hacia el módulo HC-06 está basado en la utilización de un PC que tenga este tipo de comunicación o añadiéndole a nuestro PC un “Dongle Bluetooth”, que no es más ni menos que un completo y compacto HARDWARE “Plug and Play” que conectaremos en nuestro PC a través del puerto USB para que se pueda comunicar mediante Bluetooth con otros dispositivos que posean este tipo de protocolo de comunicación.

  Dongle Bluetooth

Para poder vincular y conectar el módulo HC-06 a nuestro PC a través de Bluetooth vamos a utilizar el software “BlueSoleil”, mediante el cual crearemos una conexión Bluetooth entre el PC y el módulo HC-06, asignándole un puerto serie del PC (COM) a dicha conexión. Posteriormente, para el envío de los mensajes de texto a través del puerto serie creado, vamos a utilizar el software “Octoplus Terminal”, que es un entorno gráfico muy simple de configurar y utilizar, que nos facilita enormemente dicha tarea. A continuación os dejo los enlaces de descarga de todo el software necesario así como un video donde se detalla todo el proceso de configuración y funcionamiento del sistema.









Envío de mensajes mediante Bluetooth desde un Smartphone


El segundo método que nos permite el envío de mensajes Bluetooth hacia el módulo HC-06 se basa en utilizar un Smartphone, puesto que están dotados de fábrica de este tipo de comunicación. Para ello debemos de instalar la aplicación "Bluetooth Terminal HC-05" desde la propia PLAY STORE del Smartphone o desde el siguiente enlace.

Aplicación Android Bluetooth Terminal HC-05

Una vez instalada la aplicación debemos de realizar una serie de procesos para vincular y conectar el módulo Bluetooth HC-06 al Smartphone y así poder utilizar la aplicación para enviar mensajes de texto (ASCII) mediante Bluetooth. A continuación os dejo el video donde se detalla todo el procedimiento a realizar.




Lista de Materiales:


  • Arduino UNO Rev.3. 
  • Cable USB tipo A-B.
  • Módulo Bluetooth HC-06.
  • PC con Bluetooth o Dongle Bluetooth.
  • Smartphone con S.O Android.
  • Panel luminoso compuesto por 4 Matrices LED 8x8.
  • Fuente de alimentación de 5VDC/3000mA (opcional).
  • Protoboard.
  • Cables de conexión.



Código del programa:


martes, 13 de diciembre de 2016

Configurar módulos Bluetooth HC-05 y HC-06 mediante comandos AT


Hoy os voy a mostrar cómo configurar módulos Bluetooth HC-05 y HC-06 mediante comandos AT para poder trabajar con ellos en nuestros proyectos junto con ARDUINO UNO, es decir, para que se pueda comunicar nuestro ARDUINO con un PC, con un SMARTPHONE o para poder comunicar dos ARDUINOS de manera inalámbrica. Sin más preámbulos vamos a proceder a configurar estos compactos y sencillos dispositivos.
Logotipo del dispositivo Bluetooth

Bluetooth es una especificación industrial para Redes Inalámbricas de Área Personal (WPAN) que posibilita la transmisión de voz y datos entre diferentes dispositivos mediante un enlace por radiofrecuencia en la banda ISM de los 2.4 GHz. La especificación de Bluetooth define un canal de comunicación a un máximo 720 kbit/s (1 Mbit/s de capacidad bruta) con rango óptimo de 10 metros (opcionalmente 100 metros con repetidores). La potencia de salida para transmitir a una distancia máxima de 10 metros es de 0 dBm (1 mW), mientras que la versión de largo alcance transmite entre 20 y 30 dBm (entre 100 mW y 1 W). Los principales objetivos que se pretenden conseguir con esta norma son:
·        Facilitar las comunicaciones entre equipos móviles.
·        Eliminar los cables y conectores entre estos.
·        Ofrecer la posibilidad de crear pequeñas redes inalámbricas y facilitar la sincronización de datos entre equipos personales.

Los dispositivos que con mayor frecuencia utilizan esta tecnología pertenecen a sectores de las telecomunicaciones y la informática personal, como PDA, teléfonos móviles, computadoras portátiles, ordenadores personales, impresoras o cámaras digitales. Existen multitud de módulos Bluetooth en el mercado que podemos utilizar junto con ARDUINO u otros microprocesadores, pero los más utilizados son los módulos de “JY-MCU”, puesto que son pequeños, compactos, de bajo consumo energético, muy económicos y por supuesto fáciles de encontrar en el mercado. Existen dos modelos de módulos Bluetooth: el “HC-05” que puede trabajar como maestro/esclavo  y el “HC-06” que solo puede actuar como esclavo.  La diferencia entre maestro y esclavo es que en modo esclavo es el dispositivo quien se conecta al módulo, mientras que en modo maestro es el módulo quien se conecta con un dispositivo u otro módulo.

Módulos Bluetooth JY-MCU

Físicamente, los dos módulos son muy parecidos, y la mejor manera de diferenciarlos es por los pines de E/S que nos ofrecen, es decir,  4 para el HC-06 y 6 pines para el HC-05. A continuación os describo la función de cada uno de los pines y su correspondiente conexión con los pines de ARDUINO:
·         VCC: Alimentación del módulo entre 3,6V y 6V.
·         GND: Masa del módulo.
·         TXD: Pin para la transmisión de datos.
·         RXD: Pin para la recepción de datos. Trabaja a un voltaje de 3,3V, aunque la mayoría de módulos ya trae conversor de niveles lógicos integrado, con lo que lo podemos conectar directamente al pin TX de Arduino (5V) sin tener que recurrir a HARDWARE externo para bajar el voltaje.
·         EN: Pin para entrar en el modo de configuración del módulo (solo en el modelo HC-05).
·         STATE: Pin de estado (salida) para conectar un led y visualizar cuando se está comunicando el módulo (solo en el modelo HC-05).
Tabla de conexiones de los módulos Bluetooth JY-MCU

Como podemos observar no existen diferencias HARDWARE significativas entre ambos modelos, pero sí que las hay en cuanto al FIRMWARE, es decir, en cuanto a la programación interna del módulo, por lo que mientras que el módulo HC-06 entra en el modo de programación (comandos AT) siempre que lo enciendes y no esté conectado a él ningún dispositivo mediante Bluetooth, el HC-05 es ligeramente más complicado de colocar en modo comandos AT y requiere de un modo de arranque específico que veremos más adelante.
Una vez aclarados los conceptos básicos para poder diferenciar los dos modelos de módulo Bluetooth, voy a profundizar en la configuración de cada uno de ellos, para ello primero debemos de conocer que son los “comandos AT” propiamente dichos. Los comandos AT son un tipo de comandos que sirven para configurar el módulo Bluetooth a través de un microcontrolador, un ordenador o con cualquier dispositivo que posea una comunicación serie (TX/RX), en nuestro caso, vamos a utilizar el monitor serie del IDE de ARDUINO para meter a través de comunicación serie estos comandos dentro de los módulos Bluetooth y que estos nos envíen una respuesta de estado a través del mismo monitor serie. Para entenderlo mejor, se puede decir, que los comandos AT son unas instrucciones que nos permiten cambiar por ejemplo la velocidad de comunicación del módulo (BAUDIOS), el código de emparejamiento (PIN), el nombre, etc. Para poder utilizar los comandos AT, el módulo Bluetooth no debe estar vinculado a ningún dispositivo (led rojo del módulo parpadeando). Es importante comprender, que en cuanto conectemos algún dispositivo a nuestro módulo Bluetooth, la luz roja dejará de parpadear y automáticamente saldremos del modo de comandos AT para entrar en el de transporte de información, es decir, cualquier cosa que le enviemos, incluyendo comandos AT, se considerara texto plano que se reenviará al otro extremo de la conexión Bluetooth (recordad que solo podemos enviar comandos AT mientras no estemos conectados a otros dispositivos Bluetooth).



MÓDULO BLUETOOTH HC-06

El módulo Bluetooth HC-06 viene configurado de fábrica como esclavo y no se puede cambiar, pero otras características si las podemos configurar utilizando comandos AT. Algunos de los valores predeterminados, de fábrica, más importantes que trae este módulo se resumen a continuación:
·       Nombre: “linvor” o “HC-06”.
·       Código de emparejamiento por defecto (PIN): 1234.
·       Velocidad de comunicación  (baud rate): 9600 bps (siempre que lo modifiquemos también lo tenemos que modificar dentro del programa para que se pueda comunicar correctamente).
·       Configuración de paridad en la comunicación: Sin paridad.

Cabe destacar que el módulo HC-06 tiene dos estados los cuales es importante conocer:
·         Modo comandos AT:
o      El módulo entra a este modo tan pronto como lo alimentas  y cuando no se ha establecido una conexión Bluetooth con ningún otro dispositivo.
o      EL LED del módulo permanece parpadeando (frecuencia de parpadeo del LED es de 102ms).
o      En este modo es cuando se debe enviar los comandos AT, en el supuesto de que se quiera configurar. Si se envían otros datos diferentes a los comandos AT el módulo HC-06 los ignorará.
·         Modo Conectado:
o      El módulo entra a este modo cuando se establece una conexión con otro dispositivo Bluetooth.
o      El LED permanece encendido (sin parpadear).
o      Todos los datos que se ingresen al módulo HC-06 por el Pin RX, se trasmiten por Bluetooth al dispositivo conectado, y los datos recibidos se devuelven por el pin TX. La comunicación es transparente.
o      En este modo el módulo HC-06 no puede interpretar los comandos AT.

Ahora vamos a configurar el módulo Bluetooth HC-06 a través de comandos AT enviados desde el Monitor Serie del IDE de ARDUINO. Una vez compilado y cargado el código “Comandos_AT_ HC-06” en nuestro Arduino, abrimos el Monitor Serie.
Al enviar un comando AT no se debe enviar ningún carácter de LF (nueva línea) ni CR (retorno de carro) al final del comando.  En el Monitor Serie del IDE de Arduino tenemos que poner “Sin ajuste de línea”,  escribimos  el comando “AT”,  siempre con letras mayúsculas, y pulsamos ENVIAR para comprobar que la comunicación es correcta. Como se puede observar en la imagen vemos que el módulo Bluetooth nos responde con un OK.

Monitor serie al enviar el comando “AT” en módulo HC-06

Ahora únicamente vamos a modificar el nombre del módulo insertando el comando  “AT+NAMEArduino_HC-06”, respondiéndonos el módulo HC-06 a través del monitor serie con “OKsetname”. Los demás parámetros los vamos a dejar como nos vienen por defecto de fábrica. A continuación os dejo una tabla con los comandos AT más utilizados para el módulo HC-06.

Tabla de  comandos AT para el módulo Bluetooth HC-06





MÓDULO BLUETOOTH HC-05

Como se ha mencionado ya anteriormente, este módulo a diferencia del HC-06, requiere de un proceso específico para entrar en el modo de comandos AT, es decir, necesita que estemos presionando el botón que trae módulo cuando abrimos el monitor serie del IDE de Arduino, para que entre en el modo de comandos AT, puesto que necesita tener el pin “EN” activado a nivel alto (HIGH) antes de que el módulo comience a funcionar.

El módulo Bluetooth HC-05 viene configurado de fábrica con los siguientes valores predeterminados, aunque les podemos cambiar en cualquier momento mediante comandos AT.
·       Nombre del módulo: “H-C-2010-06-01” o "HC-05" (Se puede modificar pero no nos responde con el nombre).
·       Pin o contraseña: 1234 (+PSWD:1234).
·       Modo de trabajo: Modo Esclavo (+ROLE:0).
·       Modo de conexión: Se conecta al módulo Bluetooth especificado (+CMOD:0).
·       Velocidad de transmisión: 38400 bps; Bit de parada: 1 bit; Bit de paridad: Sin paridad (+UART:38400,0,0).

Cabe destacar que el módulo HC-05 tiene tres estados los cuales es importante conocer:
·         Modo comandos AT:
o       El módulo entra en este modo de funcionamiento si mantenemos presionando el botón que trae mientras abrimos el monitor serie y cuando no se ha establecido una conexión Bluetooth con ningún otro dispositivo.
o       EL LED del módulo permanece parpadeando (frecuencia de parpadeo del LED es de 2 segundos).
o       En este modo es cuando se debe enviar los comandos AT, en el supuesto de que se quiera configurar. Si se envían otros datos diferentes a los comandos AT el módulo HC-05 los ignorará.
·         Modo Conectado:
o       El módulo entra a este modo cuando se establece una conexión con otro dispositivo Bluetooth.
o       El LED permanece encendido (sin parpadear).
o       Todos los datos que se ingresen al módulo HC-05 por el Pin RX, se trasmiten por Bluetooth al dispositivo conectado, y los datos recibidos se devuelven por el pin TX. La comunicación es transparente.
o       En este modo el módulo HC-05 no puede interpretar los comandos AT.
·         Modo Desconectado:
o       El módulo permanece inactivo, es decir, ni emite ni recibe datos y el LED parpadea con una frecuencia de 102ms.

Ahora vamos a configurar el módulo Bluetooth HC-05 a través de comandos AT enviados desde el Monitor Serie del IDE de ARDUINO. Una vez compilado y cargado el código “Comandos_AT_ HC-05” en nuestro Arduino, abrimos el Monitor Serie, siempre manteniendo presionado el botón que trae el módulo.
A diferencia del módulo HC-06, al enviar un comando AT desde el monitor serie, este módulo espera que la línea acabe en “\r\n” y entonces es cuando ejecuta el comando AT. En el Monitor Serie de IDE de Arduino tenemos que poner “Ambos NL&CR” para terminar las líneas , escribimos  el comando “AT”,  aunque este módulo no distingue entre mayúsculas y minúsculas,  y pulsamos ENVIAR para comprobar que la comunicación es correcta. Como se puede observar en la imagen vemos que el módulo Bluetooth nos responde con un OK.

Monitor serie al enviar el comando “AT” en módulo HC-05

Ahora únicamente vamos a modificar el nombre del módulo insertando el comando  “AT+NAME=Arduino_HC-05”, respondiéndonos el módulo HC-05 a través del monitor serie con “OK”. Los demás parámetros los vamos a dejar como nos vienen por defecto de fábrica. A continuación os dejo una tabla con los comandos AT más utilizados para el módulo HC-05.

Tabla de  comandos AT para el módulo Bluetooth HC-05.



 




Lista de Materiales:


·         Arduino UNO Rev.3.

·         Cable USB tipo A-B.

·         Módulo Bluetooth HC-06.

·         Módulo Bluetooth HC-05.

·         Protoboard.

·         Cables de conexión.



Código del programa:

          Comandos_AT_ HC-06:






          Comandos_AT_ HC-05: