practica 3 cambiar nombre y contraseña del BLUETOOTH


Esta imagen nos muestra como Cambiar nombre y contraseña del bluetooth a través del arduino creando un código,



El char BPS: muestra de cuantos caracteres se pueden agregar.


Los módulos de bluetooth HC-05 y HC-06 son módulos muy populares para aplicaciones con microcontroladores PIC y Arduino. Se trata de dispositivos relativamente económicos y que habitualmente se venden en un formato que permite insertarlos en un protoboard y cablearlo directamente a cualquier microcontrolador, incluso sin realizar soldaduras. En esta entrada del blog vamos a explicar un poco del funcionamiento de estos módulos y como configurarlos. También abordaremos las diferencias entre el HC-05 y el HC-06.
En la foto de portada del artículo vemos  de izquierda a derecha: los módulos HC-05 y HC-06 en formato amigable para protoboard y un módulo HC-05 en formato compatible con zócalos para Xbee (módulo bluetooth bee).

Módulo Bluetooth HC-05

El módulo de bluetooth HC-05  es el que ofrece una mejor relación de precio y características, ya que es un módulo Maestro-Esclavo, quiere decir que además de recibir conexiones desde una PC o tablet, también es capaz de generar conexiones hacia otros dispositivos bluetooth. Esto nos permite por ejemplo, conectar dos módulos de bluetooth y formar una conexión punto a punto para transmitir datos entre dos microcontroladores o dispositivos. En otro artículo posterior veremos como configurar dos módulos HC-05 para que se enlacen entre ellos y podamos transmitir información de un punto a otro.
Módulo Bluetooth Bee Pro con HC-05
Módulo HC-05 montado en una tarjeta adaptadora compatible con zócalos Xbee
El HC-05 tiene un modo de comandos AT que debe activarse mediante un estado alto en el PIN34 mientras se enciende (o se resetea) el módulo. En lasversiones para protoboard este pin viene marcado como “Key”. Una vez que estamos en el modo de comandos AT, podemos configurar el módulo bluetooth y cambiar parámetros como el nombre del dispositivo, password, modo maestro/esclavo, etc.
Para comunicarnos con el módulo y configurarlo, es necesario tener acceso al módulo mediante una interfaz serial. Podemos usar un arduino con un par de cables (aprovechando el puente USB-Serial del Arduino), un kit para XBee o un simple MAX3232 en el puerto serie de la PC. Para este artículo estaremos usando unmódulo Bluetooth Bee Pro que comercializamos en nuestra tienda web, así como una interfaz USB-Serial con socket Xbee “Foca” que también vendemos. Este es el hardware que utilizamos en nuestro taller, pero también es posible hacer los ensayos con el módulo HC-05 suelt0 o en formato para insertar en el protoboard sin mayor problema.
Bluetooth HC-05 en Módulo Bluetooth Bee Pro
Para las pruebas y configuración del módulo bluetooth es conveniente tener a mano un adaptador USB-Serial TTL como los basados en el FT232RL o circuitos similares. Nosotros usamos las tarjetas mostradas en la fotografía para probar los comandos descritos en este artículo.

Existen unos módulos aptos para insertarse en el protoboard que nos permiten una fácil identificación del módulo soldado antes de comprar. En estos módulos, losHC-05 normalmente tienen dos pines extra (además de TX, RX, VCC, GND)  etiquetado como “Key” y “State”. El pin “key” es necesario para entrar al modo de comandos AT en el módulo HC-05 (pin 34) y por lo tanto, solo se instala cuando el módulo de bluetooth a bordo es un HC-05. También podemos identificar si se trata de un HC-05 por la forma en que se identifican con otros dispositivos bluetooth: El HC-05 se identifica como “HC-05″, mientras que el HC-06 se identifica como “Linvor” o “HC-06″.
La fotografía muestra una comparación entre los módulos HC-05 y  HC-06 en su versión para insertar en protoboard. El HC-05 tiene 2 pines extras
La fotografía muestra una comparación entre los módulos HC-05 (izquierda) y HC-06 (derecha) en su versión para insertar en protoboard. El HC-05 tiene 2 pines extra

Configuración de comandos AT en HC-05

El puerto serie en modo de configuración para el HC-05 debe configurarse de la siguiente manera: 34800 bps, 8 bits de datos, Sin paridad, Sin control de flujo.Para entrar al modo de comandos AT seguimos los siguientes pasos:
  1. Poner a estado alto en el pin 34 (PIO11)
  2. Conectar la alimentación del módulo (o resetearlo de preferencia)
  3. Enviar un comando AT\r\n para comprobar que estemos en modo de comando AT.
La siguiente lista es una compilación de los comandos que consideramos importantes
  • AT\r\n      Comando de prueba, debe responder con OK\r\n
  • AT+ROLE=1\r\n      Comando para colocar el módulo en modo Maestro (Master)
  • AT+ROLE=0\r\n       Comando para colocar el módulo en modo Esclavo (Slave)
  • AT+VERSION?\r\n      Obtener la versión del firmware
  • AT+UART=115200,1,2\r\n      Configurar el modo de funcionamiento del puerto serie en “modo puente”
  • AT+PIO=10,1\r\n      Colocar el pin de IO de propósito general a nivel alto
Existen otros comandos AT que están documentados en la hoja de datos que proveen nuestros amigos de iTeadStudio. Podemos encontrar la hoja de datos (datasheet) del HC-05 en la siguiente dirección:

Es importante notar que al módulo HC-05 no le agradan los caracteres \r o \n sueltos al finalizar un comando. Siempre debemos mandarle \r\n para finalizar cada comando, por lo que debemos configurar nuestro programa de terminal serial para que siempre envíe \r\n al final de cada linea. Si utilizamos el “Monitor Serial” del IDE de arduino hay que configurarlo de la siguiente forma:
Configuración del Monitor Serial de Arduino para trabajar con el HC-05 
Realizando pruebas con un módulo HC-06 y una tarjeta USB serial con FT-232RL
El módulo HC-06 acepta un set muy básico de comandos (algo raros por cierto), que permite pocas configuraciones, pero que sin duda será util para personalizar este económico módulo y configurarlo para satisfacer las necesidades de la aplicación.
Los comandos que soporta son:
  • Prueba de funcionamiento:
    • Envíar: AT
    • Recibe: OK

  • Configurar 
    • Envíar: AT+BAUD<Numero>
    • El parámetro número es un carácter hexadecimal de ‘1’ a ‘c’ que corresponden a los siguientes Baud Rates: 1=1200, 2=2400, 3=4800, 4=9600, 5=19200, 6=38400, 7=57600, 8=115200, 9=230400, A=460800, B=921600, C=1382400
    • Recibe: OK<baudrate>
  • Configurar el Nombre de dispositivo Bluetooth:
    • Envíar: AT+NAME<Nombre>
    • Recibe: OKsetname
  • Configurar el código PIN de emparejamiento:
    • Envíar: AT+PIN<pin de 4 digitos>
    • Recibe: OK<pin de 4 digitos>
  • Obtener la versión del firmware:
    • Enviar: AT+ VERSIÓN
    • Recibe: Linvor1.8
Si ya hemos trabajado con comandos AT observaremos que los comandos están lejos del estándar, lo más obvio es que:
  • No es necesario finalizar el comando con \r\n, pero si es necesario ingresar los comandos con todos los caracteres seguidos sin pausas. NO hay necesidad de dar “enter” para finalizar un comando. El modulo tiene un Temporizador que hace necesario introducir el comando de una sola vez, sin pausas entre los caracteres.
  • Por lo anterior, si utilizamos un emulador de terminal hay que pegarlos en este y no escribirlos uno a uno con el teclado. También podemos usar el “monitor serial” de Arduino configurado 
  • Hay que tener cuidado de introducir TODAS LAS LETRAS DEL COMANDO en MAYÚSCULAS, ya que de lo contrario, no funcionarán.
  • Las respuestas no parecen respuestas estándar a comandos AT
  • Para configurar el nombre del módulo Bluetooth:
AT+NAME=ARDUINO**
donde ** es el número del módulo que usted va a determinar. Así usted puede tener sus módulos Bluetooth llamados ARDUINO01,ARDUINO02, y así por delante.
Entre cada comando y de [ENTER].
digite cada comando y de ENTER, el módulo tiene que responder con OK en el terminal serial.

Para programar otro módulo Bluetooth
  1. No hay necesidad de desconectar o desconectar el Arduino.
  2. Desconecte el cabo de energía (rojo) del HC-05 del pino +5V del Arduino.
  3. Desconecte el módulo Bluetooth del protoboard.
  4. Conecte un nuevo módulo Bluetooth HC-05.
  5. Conecte el cabo de energía del módulo Bluetooth de vuelta al pino +5V del Arduino.
  6. IMPORTANTE -> Apriete el botón de reset del Arduino.
  7. Siga las instrucciones que vayan apareciendo en el monitor serial, entrando los parámetros en la cajita de entrada, arriba.
Sketch de configuración para operación wireless con Scratch a través s2a_fm de Módulos Bluetooth 
HC-05 y otros que utilizan comandos Hayes terminados con CR+LF.

Comandos Hayes o Comandos-AT es un lenguaje de configuración de modems originalmente 
desarrollada en 1981 para el Hayes Smartmodem de 300 bps de la hoy extinta Hayes Microcomputer 
Products. Todo comando Hayes es formado por "AT" (significando "attention!") un conector "+" e
una palabra-llave seguida o no de parámetros. 
Mas infos aquí: http://en.wikipedia.org/wiki/Hayes_command_set

Comandos Hayes utilizados para configurar el módulo Bluetooth:
AT+NAME=ARDUINO**
AT+UART=57600,0,0
donde ** es el número del módulo que usted va a determinar.

INSTRUCCIONES DE USO:

Para grabar este programa en un Arduino:
1. Grave el sketch en el Arduino antes de hacer las conexiones del diagrama.
2. Desconecte el Arduino (desconecte de la puerta USB).

Para comenzar a usar:
1. Conecte Arduino al protoboard o al HC-05
2. Conecte el Arduino a la puerta USB de su computador.
3. Abra el Monitor Serial, configurando  su velocidade para 9600 baud y el fin de línea para NL y CR.
4. Siga las instrucciones que vayan apareciendo en el monitor serial, entrando los parámetros en la cajita de entrada, arriba.

Para programar otro HC-05:
0. no hay necesidad de desconectar o desconectar el Arduino.
1. Desconecte el cabo de energía (rojo) del HC-05 del pino +5V del Arduino.
2. Desconecte-o del protoboard.
3. Conecte un nuevo HC-05.
4. Conecte el cabo de energía de vuelta al pino +5V del Arduino.
5. IMPORTANTE -> Apriete el botón de reset del Arduino.
6. Siga las instrucciones que vayan apareciendo en el monitor serial, entrando los parámetros en la cajita de entrada, arriba.

====================================
CONEXIONES del MODULO BLUETOOTH
KEY   : PINO 9    (fio LARANJA)
VCC   : PINO +5v  (fio VERMELHO)
GND   : PINO GND  (fio PRETO)
TXD   : PINO 10   (fio VERDE)
RXD   : PINO 11   (fio AMARELO)




==========================================================================================*/

#include <SoftwareSerial.h>

SoftwareSerial BTSerial(10, 11); // RX | TX

void setup()
{
  pinMode(13, OUTPUT);    // Vamos usar LED onboard como sinalizador de comunicación
  pinMode(9, OUTPUT);     // Pino para acionar el modo de configuracao (pino KEY del módulo)
  digitalWrite(9, HIGH);  // Ativar modo de configuracao para aceitar comandos Hayes
  Serial.begin(38400);
  BTSerial.begin(38400);  // HC-05 default speed in AT command more
  delay(1000);
  Serial.println("Entre con Comandos Hayes:");
}

void loop()
{

  // Leia la salida del HC-05 and envie al Monitor Serial del Arduino 
  if (BTSerial.available()){
    digitalWrite(13, HIGH);
    Serial.write(BTSerial.read());
    digitalWrite(13, LOW);
  }

  // Leia el que  fue  digitado en el Monitor Serial del Arduino y envie al HC-05
  if (Serial.available()){
    digitalWrite(13, HIGH);
    BTSerial.write(Serial.read());
    digitalWrite(13, LOW);
  }

2 comentarios: