consultas@firtec.com.ar
Electrónica y programación para Microcontroladores.
Libros técnicos para electrónica programable.

Los módulos de bluetooth HC-05 y HC-06 son módulos muy populares para aplicaciones con microcontroladores.
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.
El módulo de bluetooth HC-05 es 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.
El HC-05 tiene un modo de comandos AT que debe activarse mediante un estado alto en el marcado “Key” mientras se enciende o se resetea el módulo. 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.
Muchas personas, incluso comercios en internet venden el HC-06 y HC-05 como un mismo módulo, debido a que esencialmente el hardware es el mismo para ambos, la diferencia real es el firmware que viene cargado de fábrica en cada uno de ellos.
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.
Si buscamos cambian algo de su configuración por defecto podemos seguir los siguientes pasos:
La siguiente lista es una compilación de algunos comandos importantes, el resto de comando se pueden consultar el la hoja de datos del módulo.
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
Al módulo HC-05 siempre debemos enviarle \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.
El HC-06 tiene un firmware distinto, un módulo es esclavo y otro es maestro, también un funcionamiento distinto en cuanto a su modo de configuración. Para poder configurar el HC-06 es necesario que este NO este emparejado ni siendo usado por ningún dispositivo.
De igual forma que el HC-05 es necesario conectarlo a la PC mediante una interfaz serial para darle instrucciones de configuración (Comandos AT).
El módulo HC-06 acepta un set muy básico de comandos, que permite pocas configuraciones, pero sin duda muy útil para personalizar este económico módulo y configurarlo para satisfacer las necesidades de la aplicación.
Es de remarcar que para usar estos módulos no es necesario cambiar nada en su configuración, esto es solo válido si la necesidad de uso lo exige, pero el módulo en si mismo ya es operativo.
Para configurar el Baudrate los pasos de configuración son los siguientes:
Envíar: AT+BAUD<Numero>
El parámetro número es un caracter 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 version del firmware:
Enviar: AT+VERSION
Recibe: Linvor1.8
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 como si fuera un string o una cadena de caracteres y no escribirlos uno a uno con el teclado. Todas las letras de los comandos van en mayúsculas ya que de lo contrario, no funcionarán.
Uso practico con microcontroladores.
El uso de estos módulos con microcontroladores es relativamente sencillo.
Se puede ver aquí un microcontrolador PIC conectado a un HC-06 al que no se ha modificado nada en su configuración interna, simplemente se lo conectó al microcontrolador y ya funciona perfecto.
La recepción de los datos, en este caso la hace una computadora con su Bluetooth interno corriendo Linux Debian. Los datos recibidos son el voltaje medido en el punto medio del potenciómetro conectado a un canal analógico del PIC y la parte gráfica en Liunux está en Python.
Desde luego que los datos pueden ser recibidos con cualquier dispositivo que tenga Bluetooth, también podemos guardar los datos en una base de datos.
En este ejemplo se ha usado MySQL que podemos correrlo en Windows, Linux, etc. y la base de datos almacena la temperatura de un sensor DS18B20 enviado por Bluetooth desde un PIC.
Luego podríamos, por ejemplo consultar estos datos via web, en la imagen se aprecian los datos en una tabla MySQL, y se consulta la base de datos desde una pagina en PHP. El servidor usado en el ejemplo es Apache que también corre en Windows, Linux, Unix, etc.
Con un esquema así se podría, por ejemplo, tener una electrónica simple que colecte datos, los envía por medio de Bluetooth, RS-232, 485, socket, etc, etc, a un concentrador, este los almacena en una base de datos y desde cualquier lugar del mundo, consultar estos datos por Internet.
El adquisidor de datos podría ser un simple PIC puesto en terreno, el concentrador una placa Raspberry, o cualquier microcontrolador con capacidad para contener una base de datos MySQL y el STACK TCP-IP y el acceso remoto, cualquier dispositivo con capacidad de navegar por Internet.
Armar algo de este tipo tiene un costo muy bajo si lo comparamos con un PLC, o incluso algún dispositivos para el control domótico, sobre todo si pensamos que los datos guardados en la base de datos podrían ser fotos de un sistema de seguridad o incluso vídeos de una cámara de vigilancia.
El chip PCF8591 realiza conversiones digitales con una resolución de 8 bits y un A/D de aproximaciones sucesivas, incorpora también un conversor D/A, todo controlado mediante el bus I2C. El chip incorpora pines de direccionamiento por hardware (Igual que las memorias I2C), un pin de salida analógica para el DAC y entrada de Vref. Esto funcional al DAC como al ADC.
En este ejemplo lo vemos trabajar en los dos modos en un programa que se divide en dos partes que son accedidas mediante la acción de un botón conectado en el pin RA0 de un PIC18F4620.
En el modo por defecto el PIC recibe los datos de dos canales (A0 y A1) enviados por I2C desde el PCF8591, luego actuando sobre el botón en RA0 enviamos al módulo DAC el número 128 lo que pondrá en la salida analógica el 50% de la tensión de alimentación aproximadamente. Puede ver a continuación el programa completo para el manejo de este dispositivo con XC8 y MPLAB X.
(Para mas detalles consulte la hoja de datos del chip).
El ejemplo funcionando.
Material extraído de nuestro libro Introducción al C para PIC.
El chip TC74 es un sensor de temperatura serie accesible a través del bus I2C fabricado por Microchip Technology que mide con una resolución de 1°C.
La temperatura está disponible en un byte que es almacenado en un registro interno.
El dato de temperatura es almacenado en formato binario con complemento a 2 y el bit más significativo es el bit de signo, que se establece en 1 para temperaturas negativas por lo tanto, la temperatura máxima positiva es de + 127 ° C (0111 1111). También existe otro registro de configuración (RWCR) que se utiliza para poner el dispositivo en bajo consumo (5μA), en este modo se detiene el convertidor A / D.
El programa para medir temperaturas con XC8 y un PIC18F460 es realtivamente simple.
Descargar el proyecto completo para MPLAB X.
Como sabemos el puerto USB puede funcionar de distintas formas dependiendo del tipo de dispositivo que conectemos en el. (Cámaras de fotos, teclados, Memorias, etc) .
Cada uno de estos dispositivos están “clasificados” dentro de la arquitectura del USB.
Universal Serial Bus Communication Device Class (USB CDC) es una de esas clases que emula un puerto serial clásico (RS-232) y para poder implementarlo en nuestro Cortex M4 de STM vamos a necesitar los correspondientes drivers provistos por STM.
Como todo programa en C el punto de entrada a nuestra aplicación es main.c y configura los LED´s de la placa entrenadora para que se comporten de forma tal que nos pueda dar indicios de su estado operativo por ejemplo si todo ha sido correcto en la ejecución del código tendremos un LED destellando en la placa, también configura el USB de nuestro micro en modo CDC y cuando la computadora enumere nuestro dispositivo otro LED indicará que está listo para trabajar.
El objetivo de este trabajo es que nuestro micro nos conteste como un eco lo que se escribe en la terminal también si oprimimos el botón de usuario se dispara una interrupción que envía un mensaje con la palabara Firtec.
La aplicación será controlada por el archivo usbd_cdc_vcp.c que contiene todas las funciones operativas para el envío de datos por el puerto virtual.
El proyecto completo para descargar.