Comandos AT para el módulo Bluetooth HC-06

El módulo Bluetooth HC-06 es, sin duda alguna, un dispositivo inalámbrico que puede resolver la mayoría de las comunicaciones inalámbricas en nuestros desarrollos domésticos cuando no se requieran demasiadas distancias de cobertura. Este módulo podrá incorporarse en nuestro sistema y adaptarse a las condiciones de trabajo que las comunicaciones seriales ya tenían en, por ejemplo, una red RS485 trabajando a 38400BPS o en un sistema RS232 que opere a velocidades tan altas como 115,2KBPS. Para lograr este tipo de ajustes existen los Comandos AT del módulo que nos permitirán adaptar, además de la velocidad de manejo de datos, otros parámetros que ahora veremos. ¿Deseabas personalizar tu módulo? ¡Descubre como hacerlo en este artículo!

Hace pocos días, mirando una increíble fotografía de un transbordador espacial, listo para el despegue, Martín me comentaba: “qué gratificante sería saber que, al menos un tornillo de todo lo que está allí, lo coloqué yo”, mientras pensaba lo mismo por mí. Y es natural que todos pensemos similar, que todos deseemos ser parte, cuando entendemos la importancia del evento. Personalizar un trabajo acarrea una sensación similar, una emoción de ver que nuestras manos e inteligencia alcanzaron el objetivo, el logro. Y llegando a actividades más cotidianas para nosotros, puedo asegurar que ver nuestro sello, “nuestra marca”, en cualquier circuito, montaje o desarrollo, siempre es y será gratificante. Un ejemplo de esto que hablamos es, por ejemplo, personalizar el nombre de un dispositivo Bluetooth. Desde el transbordador de Martín hasta un pequeño módulo Bluetooth, cualquier aporte nuestro puede ser muy importante. Ojalá Martín llegue mucho más allá de un transbordador, el día de mañana, ejerciendo su profesión, pero lo que puedes estar seguro es que tú llegarás hoy mismo a trabajar y personalizar tu dispositivo Bluetooth HC-06 gracias a un grupo de instrucciones muy sencillas conocidas como “Comandos AT” y que veremos en este artículo.

Que una gran obra tenga parte de tu trabajo, es una satisfacción  que a muchos nos gustaría alcanzar

Los “Comandos AT” fueron en sus comienzos, un pequeño grupo de instrucciones para comunicar el ordenador con un módem telefónico. Con los años, a este tipo de comandos para comunicarse con diversos dispositivos (por ejemplo, teléfonos móviles) se los populariza como Comandos AT y los módulos Bluetooth se pueden comunicar con un ordenador, con un microcontrolador y con cualquier otro dispositivo que posea una conexión serie (Tx/Rx) mediante el tipo de instrucciones que hoy nos convocan. Por supuesto, no existe un conjunto de comandos que sean universales para todos los dispositivos, sin embargo, la mayoría adopta una estructura muy similar. Por ejemplo, a cualquier equipo que pueda trabajar con este tipo de instrucciones, el envío del comando “AT” originará la devolución, por parte del dispositivo remoto, de un “OK” indicando que está en condiciones de recibir instrucciones y/o devolver condiciones de estado y funcionamiento ante la requisitoria del ordenador. En los módulos Bluetooth este enlace se realiza (en la mayoría de los casos) por dos métodos: mediante instrucciones durante el enlace inalámbrico con un ordenador (una vez enlazados los dispositivos) o, como en el caso del HC-06, mediante los pines Tx/Rx del módulo y durante una situación específica, no cualquier instancia.

El módulo Bluetooth HC-06 es tan pequeño como una moneda

La condición necesaria, según la hoja de datos, para acceder a alterar los valores que trae por defecto el módulo Bluetooth HC-06, debe suceder con el módulo sin vinculación (o apareamiento) alguna a otro dispositivo, es decir, mientras el LED de estado se encuentra en funcionamiento intermitente indicando que no hay vínculo con otro dispositivo. El método es, como mencionamos en el párrafo anterior, por comunicación serie a través de los pines Rx/Tx, a una velocidad de 9600, 8, N, 1 durante la programación inicial. Luego, deberás tener en cuenta la nueva velocidad de trabajo para futuras comunicaciones mediante comandos AT. La comunicación entre el módulo HC-06 y un ordenador (vía puerto serie y conversor RS232/TTL-CMOS) puede hacerse respetando un tiempo mayor a un segundo entre envío de comandos AT. Es decir, si deseas cambiar la velocidad (en BPS) y luego la clave de acceso al módulo deberás esperar, al menos, un segundo entre un comando y otro. Si no deseas utilizar un ordenador para realizar este trabajo, o no dispones de uno con salida de puerto serie (COM1, como pide la hoja de datos del dispositivo) puedes hacerlo, de manera muy sencilla, con un microcontrolador. En nuestro caso, utilizamos el mismo PIC que luego empleamos como aplicación para, en una instancia inicial, programar los comandos AT antes de programarlo para la aplicación final. Es decir, por ICSP realizamos el primer paso de ajustar los comandos AT a nuestra necesidad, luego, con un segundo programa, pasamos a la aplicación (que te mostramos en el artículo anterior). Por lo tanto de este modo, sin mover al PIC de su lugar (de la aplicación final, por ejemplo), realizamos todo el trabajo necesario. Más fácil y práctico imposible.

Los Comandos AT para el módulo HC-06 están en el capítulo 9 de la hoja de datos que entregamos en el artículo anterior y que volvemos a ofrecerte en éste. Son pocos, sencillos y hay algo importante que debes tener en cuenta al momento de enviar los comandos desde el PIC: Debes enviar caracteres ASCII. Por lo tanto, y a modo de ejemplo en AMICUS con el 18F25K20 que utilizamos nosotros, el ajuste de velocidad a 115,2KBPS deberá ser escrito de la siguiente manera: HSEROUT [065, 084, 043, 066, 065, 085, 068, 056]. Traduciendo los caracteres ASCII eso se podría leer como HSEROUT [AT+BAUD8]. Luego, hacer una pausa de 1 segundo, enviar otro comando y así hasta completar todos los que quieras cambiar. Si sólo deseas cambiar la velocidad, envías el mencionado y listo. Al final del artículo te dejamos un pequeño programa (hecho en AMICUS) con los comandos elementales y que siempre son objeto de variación por parte de los usuarios de estos módulos. Debes quitar el tilde a todas las instrucciomes HSEROUT que quieras enviar para ajustar los valores que te resulten necesarios en cada aplicación particular. Recuerda, debes trabajar en código ASCII.  Observa este trozo de código de ejemplo:

Los “Comandos AT” son pocos, sencillos y hay algo importante que debes tener en cuenta al momento de enviarlos desde el PIC: Deben ser caracteres ASCII.

Trozo de código ejemplo para ajustar los Comandos AT desde el PIC propio de la aplicación

La secuencia entonces es, enciendes el sistema y programas el PIC con el programa que se encarga de modificar los comandos AT. Al correr ese programa al menos una vez, los comandos AT llevarán al módulo a su nueva condición de funcionamiento. Si observas con detenimiento, al finalizar esta programación, el LED indicador de estado variará su intermitencia indicando que ha sido programado  (no siempre es tan notable este efecto). De todos modos, nosotros incluimos un intermitente en la salida RB0 para indicar que la programación de los comandos AT ha finalizado. Luego, programas el PIC para la aplicación final, y de este modo ya tienes ajustado el dispositivo con los nuevos comandos AT y la aplicación llevará tu nombre (como el tornillo de Martín en el transbordador), cambiará el código de acceso y todo lo que quieras alterar. Tú decides que parámetros modificar. Por último vale decirte que es redundante colocar y enumerar aquí los comandos AT necesarios para programar el HC-06. Lee la hoja de datos (capítulo 9) o el código fuente que te dejamos al pié de este artículo y te darás cuenta lo sencillo que es trabajar con este módulo Bluetooth. ¡Disfrútalo!

Deja tu voto

1 punto
Upvote Downvote

Total votes: 3

Upvotes: 2

Upvotes percentage: 66.666667%

Downvotes: 1

Downvotes percentage: 33.333333%

  • Dows

    Genial Mario.

    Me están entrando muchas ganas de trastear otra vez!! (Aunque yo lo intentaré usar con un Atmega 😀 )

  • Daniel

    Gracias Mario,

    Eres un maquina !!

  • Hermes alexis

    Gracias Mario, muy interesante el artículo y me ha resuelto varias dudas. No sabía que primero se programaba el modulo bluetooth para las condiciones que requiera la aplicación y luego se se programaba el microcontrolador.
    Aunque tengo una pregunta : Si la aplicacion consistiera en enviar el valor que arroja un sensor de temperatura por bluetooh ¿Al estar estar configurado el modulo, simplemente lo que hay que hacer es leer la temperatura y enviarla por serial?

  • Anónimo

    Hola a todos!

    Gracias por los comentarios!

    Exacto Hermes. Tomas el valor de la temperatura, la envías con el PIC por serial (como si lo hicieras mediante RS232) y transmites la info a cualquier dispositivo que sea hábil para recibir la comunicación Bluetooth. Puede ser un ordenador, un teléfono móvil, etc. Por cierto, en los artículos donde hablamos de App Inventor y Android, tenemos un ejemplo hecho con el LM92. Utiliza el buscador y verás qué sencillo es.

    Vale aclarar que allí utilizamos otro módulo Bluetooth, pero el principio de funcionamiento es el mismo. Reemplazar una conexión serial por un enlace Bluetooth.

    Saludos!
    Mario

  • Anónimo

    Que buena informacion amigo Mario; gracias por darle continuidad a tus articulos y no dejarlos en el limbo; a veces es mas importante darle seguir una secuencia sobre el mismo tema para resolver dudad, evaluar cambios y generar nuevas ideas; espero que mi modulo llegue pronto.

    Muchas gracias

  • Anónimo

    Excelente artículo!

  • Anónimo

    Gracias nuevamente Mario por tu artículo. Práctico, útil y emotivo!

  • CARLOSLLAMAS

    Que maravilla de modulo y sensillo de personalizar , pero amigos donde puedo comprarlo? no encuentro el lugar gracias comunidad 😀

  • hector

    acabo de comprar dos modulos en ebay a 4 euros en subasta desde china.
    ahora me toca esperar unas semanas y comentaremos que tal va todo para ser mi primera iniciacion en el mundo de la programacion y comunicacion inalambrica.

  • hector

    hola mario tengo un problemilla al intentar descargar el programa ejemplo del pic 18F25K20 y el dataset del modulo HC-06.
    tambien he tenido problemas al descargar el cargador AMICUS para pic de 18 . yo tengo un windows xp servipack 3 completamente actualizado corriendo en un intel centrino 1,6 Ghz. tengo mas preguntas me podrias ayudar a resolver mis dudas de iniciacion? tengo todos los componetes ya para empezar a trabajar con ellos pero me he comprado un circuito para el pic que se llama xino lo conoces? lo me montado pero no se como conectar a usb creo que necesito otro modulo conversor de usb 2.0 a serial tll.

  • hector

    hola mario tengo un problemilla al intentar descargar el programa ejemplo del pic 18F25K20 y el dataset del modulo HC-06.
    tambien he tenido problemas al descargar el cargador AMICUS para pic de 18 . yo tengo un windows xp servipack 3 completamente actualizado corriendo en un intel centrino 1,6 Ghz. tengo mas preguntas me podrias ayudar a resolver mis dudas de iniciacion? tengo todos los componetes ya para empezar a trabajar con ellos pero me he comprado un circuito para el pic que se llama xino lo conoces? lo me montado pero no se como conectar a usb creo que necesito otro modulo conversor de usb 2.0 a serial tll.

  • hector

    hola mario tengo un problemilla al intentar descargar el programa ejemplo del pic 18F25K20 y el dataset del modulo HC-06.
    tambien he tenido problemas al descargar el cargador AMICUS para pic de 18 . yo tengo un windows xp servipack 3 completamente actualizado corriendo en un intel centrino 1,6 Ghz. tengo mas preguntas me podrias ayudar a resolver mis dudas de iniciacion? tengo todos los componetes ya para empezar a trabajar con ellos pero me he comprado un circuito para el pic que se llama xino lo conoces? lo me montado pero no se como conectar a usb creo que necesito otro modulo conversor de usb 2.0 a serial tll.

  • hector

    hola mario tengo un problemilla al intentar descargar el programa ejemplo del pic 18F25K20 y el dataset del modulo HC-06.
    tambien he tenido problemas al descargar el cargador AMICUS para pic de 18 . yo tengo un windows xp servipack 3 completamente actualizado corriendo en un intel centrino 1,6 Ghz. tengo mas preguntas me podrias ayudar a resolver mis dudas de iniciacion? tengo todos los componetes ya para empezar a trabajar con ellos pero me he comprado un circuito para el pic que se llama xino lo conoces? lo me montado pero no se como conectar a usb creo que necesito otro modulo conversor de usb 2.0 a serial tll.

  • hector

    hola mario tengo un problemilla al intentar descargar el programa ejemplo del pic 18F25K20 y el dataset del modulo HC-06.
    tambien he tenido problemas al descargar el cargador AMICUS para pic de 18 . yo tengo un windows xp servipack 3 completamente actualizado corriendo en un intel centrino 1,6 Ghz. tengo mas preguntas me podrias ayudar a resolver mis dudas de iniciacion? tengo todos los componetes ya para empezar a trabajar con ellos pero me he comprado un circuito para el pic que se llama xino lo conoces? lo me montado pero no se como conectar a usb creo que necesito otro modulo conversor de usb 2.0 a serial tll.

  • hector

    hola mario tengo un problemilla al intentar descargar el programa ejemplo del pic 18F25K20 y el dataset del modulo HC-06.
    tambien he tenido problemas al descargar el cargador AMICUS para pic de 18 . yo tengo un windows xp servipack 3 completamente actualizado corriendo en un intel centrino 1,6 Ghz. tengo mas preguntas me podrias ayudar a resolver mis dudas de iniciacion? tengo todos los componetes ya para empezar a trabajar con ellos pero me he comprado un circuito para el pic que se llama xino

  • rICARDO

    con una hyperterminal se le pueden enviar comandos at al modulo???
    leí que en el hc-05 es necesario colocar el pin pio11 para activar el modo at pero en el hc 06 dice "The way to the AT command mode: supply power to the module, it will enter to the AT mode if it needn’t pair"
    a que se refiere esto ultimo?????

  • xlJaGuArlx

    hola, hace poco compre un hc-05 para utilizarlo con el pic16f877a, para poder enviar comandos at (no es para configurar el hc05, si no para poder realizar una llamada), cuando hago una conexion del hc a la pc el led parpadea 2 veces, y cuando lo hago con el cel parpadea una sola vez y no realiza la llamada, asi que lo queria pasar a modo maestro pero, segun he visto conecto el modulo y el KEY (+) y por medio de la hyperterminal kiero modificarlo, pero no se puede ya que parece que el modulo apagara su señal alguna idea?? T_T

  • xlJaGuArlx

    hola, ya pude configurar configurar el modulo por medio de los comandos at (por medio del KEY), solo que si lo pongo en modo maestro no me deja emparejarme, lo intente con at+link= direccion del otro telefono, solo que no se si seria con este, cual comando me recomiendas o algo que me falte??? algun comando para forzar el emparejamiento? y estara bien que este en modo maestro, por q si lo pongo en modo esclavo solo parpadea una vez (esperando configuracion del modulo, sin embargo no me hace la conexion, solo con la terminal si se puede) ALGUNA SUGERENCIA?? T_T

  • Matt

    como rayos envio los codigos AT al módulo bluetooth?????

    • Anónimo

      #21 Está explicado en el artículo.

      Gracias mario por esta entrega. Saludos!

  • Alejandro

    Pase 3 días quedándome hasta las 4am con un grado de frustración importantisimo…ese error en el datasheet…deberian pagarte los de hc05 por corregir un error tan garrafal. Por cierto, recomiendo en reemplazo de hyperterminal a putty, funciona barbaro. Saludos y gracias

  • oswaldo

    hola, que tal me parecio bastante bueno tu tutorial pero aun me quedan bastantes dudas, quiero comenzar a tabajar con este modulo pero mira te explico.
    ya realice la primer conexion,es decir solo el modulo aun no le conecto el microcontrolador.
    ya empareje el modulo con mi movil y en efecto el nombre del modulo es linvor.
    pero por lo visto no solo es emparejar los elementos, si no que hay que realizar la conexion. y la verdad no se me ocurre como se realiza eso. de casualidad tendran algun manual de como realizarlo no saben como se los agradeceria.

  • oswaldo

    hola mario tengo una gran duda,ya hice la primer conexion del modulo, aun no incluyo el microcontrolador, y ya lo aparee con mi movil, pero lo que me e dado cuenta es que una cosa es aparear y otra cosa es conectar.
    como realizo la conexion entre mo movil y el modulo? alguna sugerencia? te agradeceria mucho.

  • Ivan

    Alguien podria ayudarme… lo que pasa es lo siguiente compre el modulo que supuesta mente es el hc-06 pero este trae solo 6 pines el key, vcc,gnd, tc,rx y state, buneo ya logre mandarle los comandos AT y cambiarle el nombre y pero al la hora de probarlo con le circuito este no hace nada, intente checar los pines rx y tx del modulo y me percate que el pin Tx siempre esta en alto y el Rx en bajo sin importar cunatas veces presione encender led no se si esto sea normal, bueno de antemano gracias por su ayuda

  • alejandro piñerosotmail

    Hola mario Buenas tardes.

    Soy de Bogotá Colombia, para el proyecto de la universidad si necesito hacer este tipo de aplicación inalambrica pero en una especie de "encapsulado" debido a que necesito medir la temperatura dentro de un envase enlatado, y ademas de eso necesito hacer una aplicación donde pueda graficar los datos que arroja el sensor.

    Muchas gracias

  • ANDRES

    cual es el código para enviar los códigos at al hc-o6 con el arduino?

  • Hola a todos! Soy nuevo por aquí y encontré muy interesante todos tus proyectos y muy bien explicados.
    Sin embargo, tengo algunas dudas y espero me puedas aclarar por favor.
    ¿HSERIN es la misma función que GETC() del CCS? y ¿HSEROUT es lo mismo que PUTC() del CCS?
    Y como podría programar yo mi PIC en CCS para programar el HC-06?
    Espero me puedas ayudar mi correo es:
    mian.arrrivashotmail.com

  • José Candia

    Hola, Mario. Tengo un problema con mi modulo HC-06, lo he estado probando con un arduino leonardo y ya casi me estoy dando contra el teclado de mi computadora…

    Lo que pasa es que cuando le envío un dato desde mi computadora por medio del bluetooth, este llega diferente.

    -si mando por ejemplo “w” en ascii, este recibe “f” en ascii, si mando “a” recibe “@”

    y lo peor es que mucho de los datos diferentes que envío, los recibe como si fueran el mismo:

    -si mando “a” o “b” o “c” recibe el mismo dato “@”

    Tengo dos días, pensando que fuera el OS de mi computadora (es linux mint 12), pero por mas que investigo la forma de configurar, parece que todo esta correcto.

    Mi única respuesta es el modulo bluetooth, el modulo si manda los datos correctamente, pero no los que recibe.

    No se si exista una forma de resetearlo para ver si tenia algún error o de probar cual es el motivo.

    De antemano te agradezco tu atención.