Conectar y comunicar módulo Bluetooth + Arduino
Esta entrada es un poco a lo loco!!!. Recientemente me han pasado una consulta sobre conexión y comunicación entre un Arduino Mega y una shield con un módulo Bluetooth. En tema es que yo hace tiempo hice algo con Bluetooth, pero es que ahora me he pasado al módulos con WiFi :). Total, que por ayudar que no quede!!!
Cómo no tenía ninguno de esos módulos Bluetooth ya preparados para conexión con Arduino, encontré en casa un módulo "en bruto" así que tocó hacer un poco de cirugía de guerra para hacerlo funcionar.
Ya veis la pinta que tiene,...se aguanta con un celo. El pinout de estos módulos es éste (en función del modelo, el mío es un HC-05):
Únicamente he conectado los pines necesarios: Rx, Tx, KEY, Vcc y GND, nada mas!!!. Y conectados a un Arduino UNO
Primeros pasos
Configurar módulo BT con comandos AT
Lo primero que tenemos que hacer para que funcione nuestro módulo cómo nosotros queremos (a parte de conectarlo correctamente a nuestra placa Arduino) es configurar sus parámetros, para ello es necesario que acepte comandos AT, para ello tenemos que poner el pin denominado KEY a HIGH, es decir, con voltaje.
pinMode(KEY_PIN, OUTPUT);
digitalWrite(KEY_PIN, HIGH); delay(500);
Una vez tenemos esto comenzamos a configurar nuestro módulo. En el código de ejemplo que os dejaré mas abajo, ejecuto pocas instrucciones y básicamente configuramos el nombre de nuestro dispositivo test_arduino
(todo el código está disponible en mi GitHub)
void setup()
{
// Entramos en modo comandos AT para configurar nuestro módulo bluetooth
pinMode(KEY_PIN, OUTPUT);
digitalWrite(KEY_PIN, HIGH); delay(500);
BT.begin(9600); //Velocidad del puerto del módulo Bluetooth
Serial.begin(9600); //Abrimos la comunicación serie con el PC y establecemos velocidad
Serial.println("Configuracion AT");
enviar_comando_AT("AT");
Serial.println("Version:");
enviar_comando_AT("AT+VERSION");
Serial.println("Nombre dispositivo:");
enviar_comando_AT("AT+NAME=test_arduino");
//Cerramos el modo comandos AT
digitalWrite(KEY_PIN, LOW); delay(500);
}
Preparar escucha
Una vez tengo configurado el módulo BT con los comandos AT, comienzo a el loop()
con simplemente escuchar por el puerto serie establecido con el módulo BT y Arduino y volcar la información por el Serial
para ver lo que me ha llegado.
void loop()
{
if (BT.available())
{
Serial.write(BT.read());
}
if (Serial.available())
{
BT.write(Serial.read());
}
}
Arrancando este programa, tendremos algo similar a esto en la salida del puerto serie de Arduino:
Establecer conexión y comunicarse
Establecer conexión
Yo he utilizado mi móvil Android para conectarme a la señal que emite el módulo Bluetooth
Cómo en mi configuración de comandos AT no he especificado el comando AT+PIN
por defecto el PIN de conexión es 0000
Enviar datos por Bluetooth
Para enviar dados desde mi móvil Android he utilizado una aplicación que permite enviar por Serial Bluetooth. He utilizado BlueTooth Serial Controller, pero podéis utilizar cualquier otra aplicación.
Una vez instalada, conectamos a nuestro dispositivo Bluetooth test_arduino
:
Ahora desde la app enviamos un mensaje Hola mundo!!!, y vemos como nuestro módulo recibe al instante:
Envío
Recepción
Cómo verlo en screenshot es un poco feo, he grabado un pequeño vídeo donde se puede ver mejor.
El código completo
El sketch de Arduino lo podéis encontrar en mi canal de GitHub https://github.com/akirasan/arduino_bluetooth
Recordar de modificar en el código los pines que utilizáis en vuestro proyecto.
Se que me falta mucha información, pero cómo he comentado al inicio ha sido una post del estilo pim-pam. Creo que por lo menos puede ayudar a focalizar el inicio en la comunicación con Arduino + Bluetooth.