31 ene 2016

Comunicación entre módulos Bluetooth HC-05 paso a paso con Arduino UNO.

Comunicación entre módulos Bluetooth HC-05 paso a paso con Arduino.


En esta entrada de blog voy a mostrar paso a paso cómo hacer la comunicación entre dos módulos bluetooth HC-05 y Arduino, para ello he utilizado dos placas Arduino Uno R3, dos Shield XBee PRO, dos módulos Bluetooth XBee HC-05 y un adpatador Serie Rs TO TTL.





Lo primero que hay que hacer es configurar los módulos HC-05, uno tenemos que programarlo como Master y el otro como Slave, hay varias opciones para acceder a la programación de estos módulos, yo he elegido el adaptador Serie USB TO RS232 TTL.
Un inconveniente del módulo XBee es la distancia entre sus pines de 2mm, la separación estándar de los circuitos integrados es de 2,54mm, esto hace que sea incomodo conectar el módulo XBee por cableado, por suerte, el propio Shield XBee PRO además de poder montar el módulo XBee tiene orificios a 2,54mm seriados a los de 2mm, yo por comodidad he soldado en estos orificios unos pines para poder hacer todas las pruebas cómodamente.

(separación estándar entre dos pines consecutivos de un circuito integrado es de 0.1 pulgada (2,54 mm)).

SI QUIERES VER EL VÍDEO HAZ CLIC AQUÍ.

         Imagen del shield XBee PRO original.                   Imagen del shield XBee PRO con los pines.

Conexión del módulo en la Protoboard mediante cableado.


Para programar el módulo necesitamos hacer una pequeña instalación muy simple en una Protoboard, empezamos por colocar un pulsador en la Protoboard, este pulsador servirá para poner posteriormente en estado alto en pin 20 del XBee, de un punto de 3,3v  de la Protoboard alimentamos un lado del pulsador, en el otro lado del pulsador conectamos una resistencia de 1kΩ conectada al 0v de la Protoboard, intercalado entre la resistencia de 1kΩ y el pin del pulsador conectamos un cable que vaya hasta el  pin 20 del XBee (KEY), la resistencia sirve para asegurar el 0v -3,3v del pin 20. La alimentación la suministra el propio adaptador USB TO RS232 TTL por lo que conectaremos los 3,3v y el 0v del USB a la Protoboard, desde la Protoboard alimentamos el módulo XBee y conectamos los pines TX-RX del USB TO RS232 TTL de manera cruzada con los pines TX-RX del módulo XBee, la instalación debe quedar como en la siguiente imagen.

Al conectar los pines TX y RX del módulo hay que recordar que se debe hacer de forma cruzada con los pines TX y RX del adaptador USB TO RS232 TTL. 

CONEXIÓN ENTRE LA PROTOBOARD, EL MODULO XBee Y EL ADAPTADOR USB.


NOTA: Para facilitar la conexión del módulo XBee, lo he montado en el Shield XBee PRO y conectado mediante los pines soldados.

Necesitmos un programa que haga de mediador entre el dispositivo y el PC, podemos encontrar varios como HyperTerminal, Terminal, SScom32, PuTTy, X-CTU,  yo he elegido Terminal v1.9b.

Si eliges Terminal v1.9b se debe configurar como se muestra en la imagen siguiente.

Nota: En el programa Terminal v1.9b hay la opción para saber que puerto tiene asignado el adaptador USB mediante el botón COMs. Si no te reconoce el adaptador Serie USB TO RS232 TTL hay que instalar el driver PL2303_Prolific_DriverInstaller

Una vez cableado  el módulo HC-05 y el adaptador USB con la Protoboard y habiendo configurado Terminal v1.9b  como en la imagen anterior, solo queda conectar  el adaptador USB al PC manteniendo pulsado el pulsador de la Protoboard, cuando el módulo HC-05 está en modo AT cambia el parpadeo su led, de un parpadeo rápido pasa a un parpadeo secuencial, mas o menos 2 seg encendido 2 seg apagado, si escribimos el comando AT en el box inferior del programa, el módulo nos responde con OK, vamos a seguir introduciendo una serie de comandos para continuar con la programación de los dos módulos.

Voy  hacer que la comunicación solo se establezca entre los dos módulos, para ello primero tengo que saber la dirección  que tiene  cada uno, para después asignarles la dirección con la que se deben conectar, empecemos por saber la dirección del Master.

PROCEDIMIENTO.

Montamos el módulo que hará de Master en el Shield ya anteriormente cableada a la Protoboard y al adaptador USB, conectamos en adaptador USB al PC mientras mantenemos pulsado el pulsador de la P/rotoboard, si cambia el parpadeo del led a un modo secuencial ya estamos en el modo AT, ahora escribimos AT en el box y hacemos click en botón send del programa Terminal v1.9b , si nos contesta OK estamos en modo AT,  ahora tenemos que introducir el comando AT+ADDR? , nos tiene que mostrar una serie de números con unos valores diferentes a estos pero con un formato así: 3014:11:50253 nos apuntamos la numeración que nos muestre y retiramos el módulo Master para introducir el otro módulo que hará de Slave, hay que repetir los mismos pasos de antes para entrar en los comandos AT, cuando tengamos el módulo preparado introducimos los siguientes comandos:

MÓDULO SLAVE.

COMANDO                        REPUESTA
   AT                                  OK                                (Pregunta si estamos en comandos)      
   AT+VERSION?               2.0.201000601                (versión del módulo, solo por curiosidad)            
   AT+ADDR?                     3014:11:30095                (número de MAC del propio módulo)
   AT+ROLE?                      ROLE 0                         (Role 0 = el modulo hará Slave)
   AT+PSWD?                     4321                              (Password de acceso, que cada uno ponga el     
                                                                               Número que quiera)
   AT+UART?                      9600                              (velocidad de comunicación)     
   AT+CMODE?                 CMOD 1                         (conecta el modulo a una dirección)             
   AT+BIND?                     3014:11:50253                 (dirección del módulo Master con la que se  
                                                                                    debe conectar).

Ahora hay que retirar el módulo Slave y volver a montar el módulo master, siguiendo los pasos para entrar en el modo de comandos AT.
La configuración que se debe programar en el módulo Master es prácticamente la misma que en el módulo Slave cambiando algún parámetro.

MÓDULO MASTER.

COMANDO                        REPUESTA
   AT                                  OK                                (Pregunta si estamos en comandos)      
   AT+VERSION?               2.0.201000601                (versión del módulo, solo por curiosidad)            
   AT+ADDR?                     3014:11: 50253               (número de MAC del propio módulo)
   AT+ROLE?                      ROLE 1                         (Role = 1, el modulo hará de Master)
   AT+PSWD?                     4321                              (Password de acceso, que cada uno ponga el     
                                                                               Número que quiera)
   AT+UART?                      9600                             (velocidad de comunicación)     
   AT+CMODE?                  CMOD 1                        (conecta el modulo a una dirección)             
   AT+BIND?                       3014:11: 30095              (dirección del módulo Slave con la que se 
                                                                               debe conectar).

Si montamos los módulos en los Shield XBee y estos en las placas Arduino, cuando alimentemos la placas Arduino debemos notar como se comunican automáticamente entre ellos por el parpadeo de sus leds, un led siempre estará encendido indicando que la comunicación se ha logrado, el otro led parpadea casi al mismo tiempo en los dos módulos, para comprobar el funcionamiento he hecho un pequeño programa con Arduino, este programa lo que hace es que el master al principio envía una señal cada 1000ms al Slave, el Slave cuando la recibe envía una señal al Master, cada vez que el Master reciba la señal del Slave reducirá el tiempo de envio hasta que sea 0, entonces reinicia la secuencia.


CÓDIGO MODULO MASTER
 


CÓDIGO MODULO SLAVE
            
Nota: para que la comunicación sea efectiva en el shield debemos poner el switch en la posición XBee y cuando enviemos el programa si tenemos el shield en la placa de Arduino el switch debe estar en la posición  USB.

SI QUIERES VER EL VÍDEO HAZ CLIC AQUÍ.

2 comentarios:

  1. Hola, quería saber si se puede usar un cable usb común?
    como este http://www.yoctopuce.com/pubarchive/2012-07/thin_usb_cable_3.jpg
    para hacer la configuración de master y slave

    ResponderEliminar
  2. HOLA SABES QUE SE CONECTA PERO PERO NO RECIBE LOS DATOS ..O SE NO SE PRENDE Y LAS LUCES

    ResponderEliminar

Gracias por participar, gracias por compartir.