- Requisitos:
- Programación del microcontrolador PIC para comunicación Bluetooth:
- Diagrama de circuito y configuración del hardware:
- Control de LED mediante la aplicación móvil Bluetooth:
En este tutorial, aprenderemos a distinguir proyectos PIC de forma inalámbrica mediante la interfaz de un módulo Bluetooth (HC-06). En nuestro tutorial anterior ya aprendimos cómo usar el módulo USART en nuestro microcontrolador PIC y establecimos la comunicación entre PIC y la computadora. Si es un principiante absoluto, consulte aquí todos los tutoriales de PIC, donde hemos comenzado desde cero, como aprender MPLAB y XC8, conectar LED, LCD, usar temporizadores, ADC, PWM, etc.
Aquí, hemos utilizado el popular módulo Bluetooth HC-06. Con este módulo podemos recibir y enviar información de forma inalámbrica desde nuestro PIC MCU a una aplicación móvil o una computadora. La comunicación entre PIC y HC-06 se establece mediante el módulo USART presente en el microcontrolador PIC. También puede utilizar el HC-05. Volvemos a operar en el mismo modo Asíncrono de 8 bits, pero esta vez modificaremos un poco nuestro código para que funcione con el módulo Bluetooth. Por lo tanto, aprender el tutorial de UART de antemano es una ventaja adicional para este proyecto.
En este tutorial, cambiaremos un LED enviando un comando de encendido o apagado desde nuestro teléfono inteligente. Usaremos una aplicación de Android llamada Terminal Bluetooth que puede enviar y recibir datos a través de Bluetooth. Si enviamos un carácter '1' desde la aplicación, la luz se ENCENDERÁ en la placa PIC y obtendremos un reconocimiento al teléfono de que la luz se ha encendido. De manera similar, podemos enviar '0' desde el teléfono para apagarlo. De esta manera podemos controlar la luz LED en nuestra placa PIC, similar al tutorial de UART pero ahora de forma inalámbrica. El programa completo y el video detallado se encuentran al final de este tutorial.
El diagrama de bloques básico para la configuración se muestra a continuación.
Requisitos:
Hardware:
- Tablero de perforación PIC16F877A
- Módulo Bluetooth HC-05 o HC-06
- Computadora (para programación)
- Teléfono móvil
- Programador PICkit 3
Software:
- MPLABX
- Terminal Bluetooth (aplicación móvil)
Módulo Bluetooth HC-06:
Bluetooth puede funcionar en los dos modos siguientes:
- Modo de comando
- Modo operativo
En la modalidad de mandatos podremos configurar las propiedades Bluetooth como el nombre de la señal Bluetooth, su contraseña, la velocidad de transmisión de funcionamiento, etc. El modo de funcionamiento es aquel en el que vamos a ser capaces de enviar y recibir datos entre el microcontrolador PIC y el módulo Bluetooth. Por lo tanto, en este tutorial jugaremos solo con el modo operativo. El modo de comando se dejará con la configuración predeterminada. El nombre del dispositivo será HC-05 (estoy usando HC-06) y la contraseña será 0000 o 1234 y, lo más importante, la velocidad en baudios predeterminada para todos los módulos Bluetooth será 9600.
El módulo funciona con un suministro de 5 V y los pines de señal funcionan con 3,3 V, por lo que hay un regulador de 3,3 V en el módulo. Por tanto, no debemos preocuparnos por ello. De los seis pines, solo cuatro se utilizarán en el modo de funcionamiento. La tabla de conexión de pines se muestra a continuación
S. No |
Pin en HC-05 / HC-06 |
Pin nombre en MCU |
Número de pin en PIC |
1 |
Vcc |
Vdd |
31 st pin |
2 |
Vcc |
Gnd |
32 nd pin |
3 |
Tx |
RC6 / Tx / CK |
25 º pin |
4 |
Rx |
RC7 / Rx / DT |
26 th pin |
5 |
Estado |
CAROLINA DEL NORTE |
CAROLINA DEL NORTE |
6 |
ES (habilitado) |
CAROLINA DEL NORTE |
CAROLINA DEL NORTE |
Consulte nuestros otros proyectos para obtener más información sobre el módulo Bluetooth HC-05 con otros microcontroladores:
- Coche de juguete controlado por Bluetooth usando Arduino
- Sistema de automatización del hogar controlado por Bluetooth usando 8051
- Luces controladas por voz usando Raspberry Pi
- Radio FM controlada por teléfono inteligente usando Arduino y procesamiento
- Coche robot controlado por teléfono móvil usando G-Sensor y Arduino
Programación del microcontrolador PIC para comunicación Bluetooth:
Como todos los módulos (ADC, Timer, PWM) también debemos inicializar nuestro módulo Bluetooth. La inicialización será similar a la inicialización de UART, pero necesitamos hacer algunos cambios para que Bluetooth funcione sin problemas con nuestro MCU PIC16F877A. Definamos los bits de configuración y comencemos con la función de inicialización de Bluetooth.
Inicializando Bluetooth:
Casi todos los módulos Bluetooth en el mercado funcionan a una tasa de baudios de 9600, es muy importante configurar su tasa de baudios igual que la de los módulos Bluetooth operando la tasa de baudios, aquí configuramos SPBRG = 129 ya que estamos operando a una frecuencia de reloj de 20Mhz con 9600 como velocidad en baudios. Por lo tanto, la inicialización anterior funcionará solo para los módulos Bluetooth que operan a una velocidad de 9600 baudios. También es obligatorio tener habilitado el bit BRGH de velocidad en baudios de alta velocidad. Esto ayudará a establecer una velocidad de transmisión precisa.
// ****** Inicializar Bluetooth usando USART ******** // void Initialize_Bluetooth () {// Establecer los pines de RX y TX // TRISC6 = 1; TRISC7 = 1; // Establezca la velocidad en baudios usando la tabla de búsqueda en la hoja de datos (pg114) // BRGH = 1; // Utilice siempre una velocidad en baudios de alta velocidad con Bluetooth; de lo contrario, no funcionará SPBRG = 129; // Encienda Asyc. Puerto serie // SYNC = 0; SPEN = 1; // Establecer recepción y transmisión de 8 bits RX9 = 0; TX9 = 0; // Activar transmisión y recepción // TXEN = 1; CREN = 1; // Habilita global y ph. interrumpe // GIE = 1; PEIE = 1; // Habilita interrupciones para Tx. y Rx.// RCIE = 1; TXIE = 1; } // ___________ BT inicializado _____________ //
Si tiene un módulo BT que funciona a una velocidad en baudios diferente, puede consultar la tabla de búsqueda a continuación para averiguar su valor para el SPBRG.
Cargando datos en Bluetooth:
Una vez que se inicializa la función tenemos tres funciones en nuestro programa para enviar y recibir datos desde Bluetooth. A diferencia de UART, tenemos pocas cosas que considerar aquí antes de que podamos transmitir o recibir datos. El módulo Bluetooth tiene un búfer de transmisión y recepción en su interior, los datos enviados se almacenarán en el búfer de Tx. Estos datos no se difundirán (se enviarán al aire) a menos que se envíe un retorno de carro al módulo. Por lo tanto, para transmitir datos, debemos cargar el búfer Rx de BT y luego transmitirlo utilizando el retorno de carro.
El trabajo anterior se puede lograr fácilmente utilizando las siguientes funciones. La siguiente función se puede usar cuando tenemos que cargar solo un carácter en el búfer de Rx. Cargamos los datos en el registro TXREG y esperamos hasta que se procesen verificando el indicador TXIF y TRMT usando bucles while.
// Función para cargar el Bluetooth Rx. búfer con un carácter // void BT_load_char (byte de caracteres) {TXREG = byte; mientras (! TXIF); mientras (! TRMT); } // Fin de la función //
La siguiente función se utiliza para cargar una cadena en el búfer Rx del módulo Bluetooth. La cadena se divide en caracteres y cada carácter se envía a la función BT_load_char () .
// Función para cargar Bluetooth Rx. búfer con cadena // vacío BT_load_string (char * cadena) {while (* cadena) BT_load_char (* cadena ++); } // Fin de función /
Transmisión de datos a través de Bluetooth:
Hasta ahora acabamos de transmitir información al búfer Rx del módulo HC-05. Ahora debemos indicarle que transmita los datos por aire utilizando esta función.
// Función para transmitir datos desde RX. búfer // vacío broadcast_BT () {TXREG = 13; __delay_ms (500); } // Fin de la función //
En esta función enviamos un valor 13 al registro TXREG. Este valor 13 no es más que el equivalente decimal para transporte (consulte la tabla ASCII). Luego, se crea un pequeño retraso para que comience la emisora.
Lectura de datos de Bluetooth:
Similar a UART, la siguiente función se utiliza para leer datos de Bluetooth
// Función para obtener un carácter de Rx.buffer de BT // char BT_get_char (void) {if (OERR) // comprobar si hay un error de ejecución excesiva {CREN = 0; CREN = 1; // Reset CREN} if (RCIF == 1) // si el usuario ha enviado un char, devuelve el char (valor ASCII) {while (! RCIF); return RCREG; } else // si el usuario no ha enviado ningún mensaje return 0 return 0; } // Fin de función /
Si el usuario ha enviado un dato, esta función devolverá ese dato en particular que se puede guardar en una variable y procesar. Si el usuario no ha enviado nada, la función devolverá cero.
Función principal:
Hemos utilizado todas las funciones explicadas anteriormente dentro de la función principal. Enviamos un mensaje introductorio y luego esperamos a que el usuario envíe algunos valores en base a los cuales cambiamos la luz LED ROJA conectada al pin RB3 en nuestra placa Perf.
void main (void) {// Declaraciones de variables de alcance // int get_value; // Fin de la declaración de variable // // Declaraciones de E / S // TRISB3 = 0; // Fin de la declaración de E / S // Initialize_Bluetooth (); // dejemos nuestro bluetooth listo para la acción // Muestre algún mensaje introductorio una vez en el encendido // BT_load_string ("Bluetooth inicializado y listo"); broadcast_BT (); BT_load_string ("Presione 1 para encender el LED"); broadcast_BT (); BT_load_string ("Presione 0 para apagar el LED"); broadcast_BT (); // Fin del mensaje // while (1) // El lop infinito {get_value = BT_get_char (); // Leer el char. recibido a través de BT // Si recibimos un '0' // if (get_value == '0') {RB3 = 0; BT_load_string ("LED apagado"); broadcast_BT (); } // Si recibimos un '1' // if (get_value == '1') {RB3 = 1; BT_load_string ("LED encendido"); broadcast_BT ();}}}
Consulte el programa completo en la sección de códigos a continuación.
Diagrama de circuito y configuración del hardware:
Las conexiones de circuito para este proyecto es muy sencillo, simplemente tenemos que encender el módulo Bluetooth y conecte el Tx a la 26 ª pin del PIC y Rx a la 25 ª pin del PIC como se muestra en el diagrama del circuito a continuación:
Ahora procedamos al hardware. Una vez que se realiza la conexión, debería verse algo así.
Control de LED mediante la aplicación móvil Bluetooth:
Ahora, preparemos nuestra aplicación para Android. Descargue la aplicación llamada Terminal Bluetooth de la tienda de aplicaciones o use este enlace. Una vez descargada e instalada la aplicación, encienda su placa PIC perf que estamos usando desde el principio. La pequeña luz LED de su módulo Bluetooth debe parpadear para indicar que está encendido y está buscando activamente un teléfono para establecer una conexión.
Ahora ingrese a la Configuración de Bluetooth de su teléfono y busque un nuevo dispositivo Bluetooth. Debería poder ver el nombre HC-05 o HC-06 según su módulo. Estoy usando HC-06, por lo que mi teléfono muestra la siguiente pantalla. Luego intente emparejarlo y le pedirá una contraseña. Ingrese la contraseña como 1234 (para algunos podría ser 0000) y haga clic en Aceptar como se muestra a continuación.
Una vez que el emparejamiento sea exitoso, abra la aplicación de Terminal Bluetooth que acabamos de instalar. Ingrese a la opción de configuración y seleccione "Conectar un dispositivo - Seguro" como se muestra a continuación. Esto abrirá un cuadro emergente donde se enumerarán todos nuestros dispositivos emparejados como se muestra a continuación. Seleccione el módulo HC-05 o HC-06.
Una vez establecida la conexión, la luz del módulo Bluetooth que estaba parpadeando hasta ahora debe haberse vuelto constante para indicar que se ha conectado correctamente a su móvil. Y deberíamos recibir el mensaje introductorio de nuestro Programa como se muestra a continuación.
Ahora presione '1' para encender la luz LED y presione '0' para apagar la luz. El trabajo completo se mostrará en el Video. La pantalla de su móvil se verá similar a la que se muestra a continuación.
Así que eso es todo, chicos, hemos aprendido Cómo conectar el módulo Bluetooth a nuestro microcontrolador PIC, ahora con la ayuda de esto podemos probar proyectos inalámbricos. Hay muchos proyectos que usan Bluetooth, puedes probarlos o crear tu propia Idea y compartirlos en la sección de comentarios. También consulte nuestro proyecto anterior con la aplicación de terminal Bluetooth y HC-05 como la automatización del hogar controlada por teléfono inteligente usando Arduino y el bloqueo de código digital controlado por teléfono inteligente usando Arduino.
¡Espero que este tutorial te haya ayudado! Si te quedaste atascado en algún lugar, utiliza la sección de comentarios.