Bluetooth HC-05 comunicación simplex «digital», Pic C Compiler
Por
/
En esta sección aprenderás a establecer una comunicación inalámbrica en modo simplex utilizando dos módulos Bluetooth para enviar y recibir datos. El objetivo es establecer la comunicación inalámbrica entre un PIC Maestro y un PIC Esclavo para enviar comandos al pulsar un botón y recibir comandos para encender un LED correspondiente.
Bluetooth HC-05
El Bluetooth HC-05 es un módulo de comunicación inalámbrico que utiliza la tecnología Bluetooth para establecer un enlace de comunicación serie entre dos dispositivos. Es un dispositivo muy popular en proyectos de electrónica y robótica, ya que permite la comunicación inalámbrica entre un microcontrolador, como Arduino, y otros dispositivos como un ordenador, smartphone o tablet. El HC-05 puede funcionar como maestro o esclavo y utiliza el perfil serial port profile (SPP) de Bluetooth, lo que lo hace compatible con una amplia variedad de dispositivos que soportan este perfil.
Características:
Tecnología: Bluetooth 2.0 + EDR (Enhanced Data Rate)
Alcance de comunicación: hasta 10 metros (en condiciones ideales)
Velocidad de transmisión: 2.1 Mbps máx. en modo EDR, 721 kbps máx. en modo estándar
Frecuencia: 2.4 GHz a 2.4835 GHz banda ISM
Potencia de transmisión: Clase 2, hasta 4 dBm (2.5 mW)
Sensibilidad de recepción: -80 dBm típico
Protocolos de soporte: Bluetooth serial port profile (SPP)
Modo de operación: Maestro o Esclavo
Compatibilidad: Compatible con dispositivos que soportan Bluetooth SPP
Consumo de energía: 30 mA en modo de operación, 1 mA en modo de espera
Dimensiones: 28 mm x 15 mm x 2.35 mm
Circuito de conexión
Configuración
Inicialmente se deben configurar los módulos Bluetooth en modo maestro y esclavo para poder transmitir los datos mediante una comunicación inalámbrica.
Cuando se reciben datos por el pin de recepción el programa detiene sus funciones para recibir los datos, el programa guarda los datos en la variable recibido[i] y termina la comunicación rs232 cuando recibe un carácter de salto de linea.
#int_rda
void rda_isr()
{
memset(recibido, 0, sizeof(recibido)); //limpia los registros de la varible
int8 i=0;
while(true)
{
recibido[i]=getc();//RECIBE EL CARACTER
if(recibido[i]=='\r')//busca el salto de linea \r
{
recibido[i]='\0';//fin de la cadena = caracter nulo \0
leds();
return;
}
i++;
}
}
Se define una variable de caracteres que contienen el identificador del led que se encenderá o apagara.