Bluetooth es un estándar de tecnología inalámbrica popular diseñado para intercambiar datos en distancias cortas. Bluetooth es tan común que ahora forma parte de los teléfonos inteligentes y está presente en muchos dispositivos integrados. Muchos dispositivos portátiles también utilizan Bluetooth para emparejarse con sus accesorios o co-dispositivos. La interfaz Bluetooth utiliza ondas de radio UHF en la banda ISM de 2,4 GHz a 2,485 GHz. Fue inventada por el proveedor de telecomunicaciones Ericsson en 1994 y desarrollada por el Bluetooth Special Interest Group. Una conexión Bluetooth tiene un alcance de 10M a 100M.
Hacer que los dispositivos integrados sean compatibles con Bluetooth es una tendencia popular. El módulo Bluetooth HC-05 es un módulo Bluetooth de uso común y ampliamente disponible que se puede agregar a un proyecto integrado para habilitar Bluetooth. El módulo puede funcionar como Maestro y Esclavo. El módulo se conecta a un microcontrolador mediante comunicación serie. Es básicamente un transceptor de radio de 2,4 GHz con velocidad de datos V2.0+ mejorada con modulación de 3 Mbps. El módulo puede funcionar en dos modos:
1. Modo de trabajo de conexión automática
2. Solicitar modo de trabajo de respuesta
En modo de trabajo automático, el módulo puede funcionar en cualquiera de las tres funciones: Maestro, Esclavo y Loopback. En este modo, el módulo sigue la ruta estándar para establecer conexión e intercambiar datos. En el modo de respuesta a solicitud, el usuario puede configurar parámetros de control enviando comandos AT. Para ingresar al modo AT, el pin 34 del módulo debe estar conectado a la fuente de alimentación.
Los módulos tienen seis pines de uso común, además de pines de entrada/salida programables y pines para comunicación vía UART, SPI, USB y PCM síncrono. El pin 34 es un pin de entrada/salida programable designado como pin clave.
Para configurar el módulo en modo AT, el pin clave del módulo debe estar conectado al microcontrolador. Inicialmente debe configurarse en lógica BAJA y, una vez encendido el módulo, debe configurarse en lógica ALTA para ingresar al modo AT. Si el pin del interruptor es inicialmente lógico ALTO, la velocidad en baudios para la comunicación en serie con el módulo se establecerá en 38,400 bits por segundo, incluso antes de que el módulo esté listo para ingresar al modo de trabajo de respuesta a solicitud. La velocidad en baudios deseada para la inicialización del módulo es de 9600 bits por segundo y se establece en el valor cuando el pin del interruptor está en ALTO después de encender el módulo.
En este proyecto, se utiliza Arduino Pro Mini para pasar comandos AT al módulo Bluetooth. La placa Arduino se conecta al módulo Bluetooth y al puerto serie virtual de una computadora de escritorio. Los comandos AT se pasan desde una aplicación de hiperterminal al Arduino Pro Mini. La placa Arduino escribe estos comandos en el módulo Bluetooth. Las respuestas del módulo Bluetooth se leen en serie y se pasan a la aplicación hiperterminal en el escritorio.
El boceto de Arduino simplemente crea y abre dos puertos de comunicación en serie para intercambiar datos entre el módulo Bluetooth y la computadora de escritorio. El código Arduino se escribe en el IDE de Arduino y se escribe en la placa mediante AVR Dude.
Componentes necesarios –
1. Arduino ProMini
2. Módulo Bluetooth HC-05
3. Computadora de escritorio o portátil
4. Cable USB
Herramientas de software necesarias –
1. ArduinoIDE
2. Cualquier aplicación de escritorio Hyper Terminal como Arduino Serial Monitor
Conexiones de circuito –
Figura 1: Prototipo de proyecto de prueba de comando Bluetooth AT basado en Arduino
El Arduino Pro Mini gestiona el intercambio de datos entre la aplicación serie del ordenador de sobremesa y el módulo Bluetooth. El circuito se ensambla de la siguiente manera:
Fuente de alimentación: el circuito funciona con una batería que alimenta directamente la placa Arduino y el módulo Bluetooth.
Módulo Bluetooth HC-05: el módulo Bluetooth HC-05 es un módulo de protocolo de puerto serie. Opera en la banda ISM de 2,4 GHz con V2.0 + EDR (Enhanced Data Rate). Puede funcionar en modo Maestro y Esclavo. El módulo Bluetooth tiene seis pines: Habilitar, VCC, Tierra, Transmitir datos (TxD), Recibir datos (RxD) y Estado. Los pines Enable y State no se utilizan y, por lo tanto, no están conectados al circuito. Los pines VCC y Tierra están conectados a VCC y Tierra comunes. Los pines TxD y RxD del módulo están conectados a los pines 10 y 11 del Arduino Pro Mini respectivamente. Estas conexiones se resumen en la siguiente tabla:
Fig. 2: Tabla que enumera las conexiones del circuito entre el módulo Bluetooth HC-05 y el Arduino Pro Mini
Además de estas conexiones, el pin 34 del módulo está conectado al pin 9 del Arduino Pro Mini.
Computadora de escritorio: la computadora está conectada a la placa Arduino mediante un cable USB y transfiere datos en serie a la placa a través de una comunicación en serie virtual utilizando una aplicación de hiperterminal.
Cómo funciona el proyecto –
El dispositivo del proyecto recibe los comandos AT ingresados por el usuario de la aplicación hiperterminal. Los comandos se leen en serie mediante comunicación en serie virtual y se pasan al módulo Bluetooth. El módulo Bluetooth responde a los comandos AT y las respuestas se leen nuevamente en serie y se transfieren a la aplicación de escritorio.
El módulo Bluetooth HC-05 admite los siguientes comandos AT:
Y.No
|
Dominio
|
Respuesta
|
Parámetro
|
1 |
EN EL |
DE ACUERDO |
|
dos |
EN+REINICIAR |
DE ACUERDO |
|
3 |
¿EN+VERSIÓN? |
+VERSIÓN: DE ACUERDO |
Parámetro: versión de firmware |
4 |
EN+ORGL |
DE ACUERDO |
|
5 |
¿AL+FIN? |
+DIRECCIÓN: DE ACUERDO |
Parámetro: dirección del módulo Bluetooth |
6 |
EN+NOMBRE=
|
DE ACUERDO |
Parámetro: nombre del módulo Bluetooth (predeterminado: HC-05) |
|
¿EN+NOMBRE? |
+NOMBRE: OK (/FALLO) |
Parámetro: nombre del módulo Bluetooth (predeterminado: HC-05) |
7 |
¿AT+NOMBRER?
|
1. +NOMBRE: OK 2. FALLA
|
Param1,Param 2: la dirección del dispositivo Bluetooth |
8 |
EN+ROL=
|
DE ACUERDO |
Parámetro: 0- Esclavo 1-Maestro 2-Esclavo-Lazo |
|
¿PAPEL AT+? |
+ROLLO: DE ACUERDO |
Parámetro: 0- Esclavo 1-Maestro 2-Esclavo-Lazo |
9 |
EN+CLASE=
|
DE ACUERDO |
Parámetro: Clase de dispositivo |
|
¿CLASE AT+? |
1. + CLASE: OK 2. FALLA |
Parámetro: Clase de dispositivo |
10 |
AT+IAC=
|
1. OK 2. FALLO |
Parámetro: GIAC (predeterminado: 9e8b33) |
|
AT+IAC |
+IAC: DE ACUERDO |
Parámetro: GIAC (predeterminado: 9e8b33) |
11 |
EN+INQM= , ,
|
1. OK 2. FALLO |
Parámetro: 0——inquiry_mode_standard 1——inquiry_mode_rssi Param2: Número máximo de dispositivos Bluetooth para responder a Param3: Tiempo de espera (1-48: 1,28 s a 61,44 s) |
|
¿AT+INQM? |
+INQM: , , DE ACUERDO
|
Parámetro: 0——inquiry_mode_standard 1——inquiry_mode_rssi Param2: Número máximo de dispositivos Bluetooth para responder a Param3: Tiempo de espera (1-48: 1,28 s a 61,44 s) |
12 |
AT+PSWD=
|
DE ACUERDO |
Parámetro: código PIN (predeterminado 1234) |
|
¿AT+PSWD? |
+PSWD: DE ACUERDO |
Parámetro: código PIN (predeterminado 1234) |
13 |
EN+UART= , ,
|
DE ACUERDO |
Parám1: Baudios Parám2: Bit de parada Parám3: Paridad |
|
¿AT+UART? |
+UART= , , DE ACUERDO
|
Parám1: Baudios Parám2: Bit de parada Parám3: Paridad |
14 |
AT+MODOC=
|
DE ACUERDO |
Parámetro: 0 – conecta dirección fija 1 – conecta cualquier
dirección 2 – bucle esclavo
|
|
¿AT+ CMODO? |
+ MODO C: DE ACUERDO |
Parámetro: 0 – conecta dirección fija 1 – conecta cualquier dirección 2 – bucle esclavo |
15 |
EN+UNIR=
|
DE ACUERDO |
Parámetro: Dirección fija (predeterminado 00:00:00:00:00:00) |
|
¿AT+ CONECTAR? |
+ ENCENDER: DE ACUERDO |
Parámetro: Dirección fija (predeterminado 00:00:00:00:00:00) |
dieciséis |
EN+POLAR=
|
DE ACUERDO |
Parámetro1: 0- LED de disparo bajo de PIO8 1- Disparador alto de PIO8
LED de parámetro 2: 0- LED de unidad baja de PIO9 1- LED de unidad alta de PIO9
|
|
¿EN+POLAR? |
+ POLAR= , DE ACUERDO
|
Parámetro1: 0- LED de unidad baja de PIO8 1- LED de unidad alta de PIO8 Param2: 0- LED de unidad baja de PIO9 1- LED de unidad alta de PIO9 |
17 |
EN+PIO= ,
|
DE ACUERDO |
Parámetro1: número de PIO Param2: nivel de PIO 0-bajo 1-alto |
18 |
EN+IPSCAN= , , ,
|
DE ACUERDO |
Parámetro1: Intervalo de tiempo de consulta
Param2: duración de la consulta Param3: intervalo de búsqueda Param4: duración de la llamada
|
|
¿AT+IPSCAN? |
+IPSCAN: , , , DE ACUERDO
|
Parám1: intervalo de tiempo de consulta Parám2: duración de la consulta Param3: intervalo de búsqueda Param4: duración de la llamada |
19 |
EN+OLFEAR= , , ,
|
DE ACUERDO |
Param1: Tiempo máximo Param2: Tiempo mínimo Param3: Tiempo de reintento Param4: Tiempo de espera |
|
¿AT+ olfatear? |
+OLIFERAR: , , , DE ACUERDO
|
Param1: Tiempo máximo Param2: Tiempo mínimo Param3: Tiempo de reintento Param4: Tiempo de espera |
20 |
EN+SENM= ,
|
1. OK 2. FALLO |
Parámetro1:
0——sec_mode0+apagado
1——sec_mode1+ no_seguro
2——sec_mode2_ servicio
3—— tinta sec_mode3_l
4——sec_mode_unknown
Parámetro2:
0——hci_enc_mod e_off
1——hci_enc_mod e_pt_to_pt
2——hci_enc_mod e_pt_to_pt_and_b elenco
|
|
¿AT+SENM? |
+SENM: , DE ACUERDO
|
Parámetro1:
0——sec_mode0+apagado
1——sec_mode1+ no_seguro
2——sec_mode2_servicio
3—— tinta sec_mode3_l
4——sec_mode_unknown
Parámetro2:
0——hci_enc_mod e_off
1——hci_enc_mod e_pt_to_pt
2——hci_enc_mod e_pt_to_pt_and_b elenco
|
21 |
AT+PMSAD=
|
DE ACUERDO |
Parámetro: dirección del dispositivo autenticado |
22 |
AT+ RMAD |
DE ACUERDO |
|
23 |
AT+FSAD=
|
1. OK 2. FALLO |
Parámetro: Dirección del dispositivo |
24 |
¿AT+ADCN? |
+ADCN: DE ACUERDO |
Parámetro: Recuento de dispositivos |
25 |
¿AT+MRAD? |
+MRAD: DE ACUERDO |
Parámetro: Dirección del dispositivo recién autenticado |
26 |
¿ESTADO AT+? |
+ ESTADO: DE ACUERDO |
Parámetro: “INICIALIZADO” “LISTO” “EMPAREJADO” “EMPAREJADO” “CONSULTA” “CONECTANDO” “CONECTADO” “DESCONECTADO” “NUKNOW” |
27 |
EN+INICIACIÓN |
1. OK 2. FALLO |
|
28 |
AT+INQ |
+INQ: , , …. DE ACUERDO
|
Parámetro1: Dirección Parámetro2: Clase de dispositivo Parámetro3: Intensidad de la señal RSSI |
29 |
EN+INQC |
DE ACUERDO |
|
30 |
EN+PAR= ,
|
1. OK 2. FALLO |
Parámetro1: Dirección del dispositivo. Parámetro2: Tiempo de espera. |
31 |
EN+ENLACE=
|
1. OK 2. FALLO |
Parámetro: Dirección del dispositivo |
32 |
EN+DISCO |
1. +DISC: ÉXITO OK 2. +DISC:LINK_LOSS OK 3. +DISC:NO_SLC OK 4. +DISC:TIMEOUT OK 5. +DISC:ERROR OK |
Parámetro: Dirección del dispositivo
|
33 |
EN+ENSNIFF=
|
DE ACUERDO |
Parámetro: Dirección del dispositivo |
34 |
EN+ EXSNIFF =
|
DE ACUERDO |
Parámetro: Dirección del dispositivo |
|
Fig. 3: Tabla que enumera los comandos AT del Módulo Bluetooth HC-05 y su respuesta
Durante la prueba del módulo Bluetooth, se pasaron los siguientes comandos para los cuales se recibió la respuesta proporcionada en la siguiente tabla.
Fig. 4: Diagrama de circuito del proyecto de prueba de comando Bluetooth AT basado en Arduino
Estas respuestas se observaron en la aplicación Hyper Terminal. Si no se reciben respuestas en la aplicación de escritorio, se deben verificar las conexiones del circuito y verificar la velocidad de transmisión. Durante las pruebas, se observó que la velocidad en baudios inicialmente debe establecerse en 9600 bits por segundo, pero luego debe establecerse en 38400 bits por segundo para ejecutar comandos AT.
Consulte el código Arduino para aprender cómo la placa Arduino administra los datos en serie entre el escritorio y el módulo Bluetooth.
Guía de programación –
Para habilitar la comunicación serie virtual, es necesario importar SoftwareSerial.h. Se crea una instancia de un objeto de tipo serie de software y se asigna a los pines 10 y 11 del Arduino.
#incluir
SoftwareSerial mySerial(10, 11); //RX,TX
Se llama a la función de configuración y la velocidad en baudios para comunicarse con la PC se establece en 9600 bits por segundo. El pin 9, que está conectado al pin 34 del módulo Bluetooth, está configurado para salida digital y configurado en lógica ALTA usando los métodos pinMode y digitalWrite. Algunos mensajes iniciales se envían en serie a la aplicación del hiperterminal y la velocidad en baudios del puerto serie del software se establece en 38.400 bits por segundo para la comunicación con el módulo Bluetooth.
configuración vacía {
Serie.begin(9600);
pinMode(9,SALIDA); escritura digital (9, ALTO);
Serial.println(“Taller de ingenieros:”);
Serial.println(“Ingrese comandos AT:”);
miSerial.begin(38400);
}
Se llama a la función de bucle en la que se comprueba la respuesta del módulo Bluetooth y, si está disponible, se escribe en el puerto serie. Del mismo modo, si hay algún comando AT de escritorio disponible, se leerá y escribirá en el módulo Bluetooth.
Nota: Obtenga el código completo en la sección de códigos.
Esto completa el boceto de Arduino para el proyecto de prueba del módulo Bluetooth. Tome una computadora, monte el circuito, inicie una aplicación de hiperterminal y ensúciese las manos. Es hora de probar.
Código fuente del proyecto
###
//Programa para
#incluir
SoftwareSerial mySerial(10, 11); // RX, TX
configuración nula {
Serie.begin(9600);
pinMode(9,SALIDA); escritura digital (9, ALTO);
Serial.println("Garaje de ingenieros:");
Serial.println("Ingrese comandos AT:");
miSerial.begin(38400);
}
bucle vacío
{
si (mySerial.disponible)
Serial.write(mySerial.read);
si (Serie.disponible)
mySerial.write(Serial.read);
}
###
Vídeo del proyecto