¡Bienvenidos! En este blog, exploraremos el módulo HM-10 Bluetooth, una herramienta increíblemente útil para proyectos de Arduino que requieren conectividad inalámbrica. Aprenderemos sobre su funcionamiento básico, cómo configurarlo y cómo podemos usarlo para comunicarnos con otros dispositivos Bluetooth, como nuestros teléfonos inteligentes.
¿Qué es el módulo HM-10?
El módulo HM-10 es un dispositivo Bluetooth de bajo consumo (BLE, por sus siglas en inglés) que puede añadir capacidad inalámbrica a tus proyectos de Arduino. Utiliza el estándar Bluetooth 4.0, lo que le permite comunicarse con otros dispositivos Bluetooth como teléfonos inteligentes y tablets. Se comunica con el Arduino a través de la interfaz serial UART, permitiéndole transmitir y recibir datos.
Ventajas del HM-10
- Bajo consumo de energía: Ideal para proyectos móviles o de baterías.
- Fácil de usar: Se comunica con el Arduino a través del puerto serie.
- Compatible con varios dispositivos: Funciona con iOS y Android.
Configuración del módulo HM-10
- VCC se conecta a 3.3V en el Arduino.
- GND va al pin de tierra (GND) del Arduino.
- TXD (transmisión) del HM-10 se conecta al pin RX (recepción) del Arduino.
- RXD (recepción) del HM-10 se conecta al pin TX (transmisión) del Arduino.
Comandos AT
Los comandos AT son instrucciones que permiten cambiar la configuración predeterminada del dispositivo HM-10.
Configuracion Serial
Conectamos nuetra Placa de Arduino en mi caso un Arduino Mega 2560, seleccionamos la placa en el IDE de Arduino y abrimos el Monito Serial y configurar en «Both NL& CR» a «9600 baud»
Revisamos que el modulo HM-10 se encuentra en modo de configuracion, mandamos la instruccion «AT» y esperamos que regrse un «OK»
Una ves confirmado que el modulo esta en modo configuracion, podemos conocer y cambiar el nombre del dispositivo con «AT+NAME»
Asi como conocer y cambiar el PIN del dispositivo con «AT+PIN»
Aqui dejo Los comandos de configuracion del modulo HM-10
***********************************************************************************
* Comando Descripción *
* --------------------------------------------------------------------------------*
* AT Verificar si el terminal de comandos funciona normalmente *
* AT+RESET Reinicio por software *
* AT+VERSION Obtener versión del firmware, Bluetooth, HCI y LMP *
* AT+HELP Listar todos los comandos *
* AT+NAME Obtener/Establecer nombre del dispositivo local *
* AT+PIN Obtener/Establecer código PIN para emparejamiento *
* AT+BAUD Obtener/Establecer tasa de baudios *
* AT+LADDR Obtener dirección Bluetooth local *
* AT+ADDR Obtener dirección Bluetooth local *
* AT+DEFAULT Restaurar valores de fábrica *
* AT+RENEW Restaurar valores de fábrica *
* AT+STATE Obtener estado actual *
* AT+PWRM Obtener/Establecer modo de potencia (bajo consumo) *
* AT+POWE Obtener/Establecer potencia de transmisión RF *
* AT+SLEEP Modo de reposo *
* AT+ROLE Obtener/Establecer rol actual. *
* AT+PARI Obtener/Establecer bit de paridad UART. *
* AT+STOP Obtener/Establecer bit de parada UART. *
* AT+INQ Buscar modelo esclavo *
* AT+SHOW Mostrar el modelo esclavo buscado. *
* AT+CONN Conectar al índice del modelo esclavo. *
* AT+IMME El sistema espera comando al encender. *
* AT+START El sistema comienza a trabajar. *
* AT+UUID Obtener/Establecer UUID del servidor del sistema. *
* AT+CHAR Obtener/Establecer UUID del CHAR del sistema. *
*---------------------------------------------------------------------------------*
Envió y Recepción de Datos
Una de las aplicaciones más emocionantes del módulo HM-10 es la capacidad de interactuar con dispositivos móviles. Puedes enviar y recibir datos entre un Arduino con un módulo HM-10 y un smartphone o tablet.
Requisitos
- Un módulo HM-10 correctamente conectado a un Arduino.
- Un dispositivo móvil con Bluetooth.
- Una aplicación para la comunicación Bluetooth (por ejemplo, una aplicación genérica de terminal Bluetooth o una aplicación personalizada).
Paso 1: Configuración del HM-10
Asegúrate de que tu módulo HM-10 esté correctamente configurado y emparejado con tu Arduino, como se describió en secciones anteriores.
Paso 2: Preparación del Dispositivo Móvil
- Enciende el Bluetooth: Ve a la configuración de tu dispositivo móvil y asegúrate de que el Bluetooth esté activado.
- Instala una aplicación de terminal Bluetooth: Hay varias aplicaciones disponibles en la App Store o en Google Play Store, como «Serial Bluetooth Terminal» para Android o «LightBlue» para iOS. Estas aplicaciones permiten enviar y recibir datos a través de Bluetooth.
Paso 3: Conexión y Emparejamiento
- Busca dispositivos Bluetooth disponibles en tu aplicación de terminal Bluetooth. Deberías ver el nombre del módulo HM-10 (configurado previamente).
- Conéctate al módulo HM-10 desde la aplicación. Puede que necesites ingresar el PIN que configuraste para el módulo.
Paso 4: Envío de Datos desde el Dispositivo Móvil
Una vez conectado, puedes enviar datos desde tu dispositivo móvil al Arduino. Simplemente escribe en la aplicación de terminal y presiona enviar. Los datos serán recibidos por el módulo HM-10 y transmitidos al Arduino a través de la conexión serial.
Paso 5: Recibir Datos en el Dispositivo Móvil
Para recibir datos en tu dispositivo móvil, el Arduino debe enviar datos al módulo HM-10. Esto se puede hacer utilizando el método Serial.write()
en tu código de Arduino. Los datos enviados por el Arduino serán recibidos por el módulo HM-10 y transmitidos a tu dispositivo móvil.
Código de ejemplo
/*
Nota:
No todos los pines de Arduino Mega y Mega 2560 admiten interrupciones de cambio,
por lo que solo se puede utilizar lo siguiente para RX:
10, 11, 12, 13, 50, 51, 52, 53, 62, 63, 64, 65, 66, 67, 68, 69
*/
#include <SoftwareSerial.h> // libreria que permite establecer pines digitales para comunicacion serie
int Rx = 10;
int Tx = 11;
SoftwareSerial HM10(Rx,Tx);// pin 10 como Rx, pin 11 como Tx
void setup(){
Serial.begin(9600); // comunicacion de monitor serial a 9600 bps
Serial.println("Listo"); // escribe Listo en el monitor
HM10.begin(9600); // comunicacion serie entre Arduino y el modulo a 9600 bps
}
void loop(){
if (HM10.available()) {// si hay informacion disponible desde modulo
Serial.write(HM10.read());// lee Bluetooth y envia a monitor serial de Arduino
}
if (Serial.available()) {// si hay informacion disponible desde el monitor serial
HM10.write(Serial.read()); // lee monitor serial y envia a Bluetooth
}
}
Práctica de Control de LEDs con Bluetooth HM-10
Para llevar a cabo este proyecto, usaremos comandos simples enviados desde un dispositivo móvil para controlar el estado (encendido o apagado) de dos LEDs conectados a un Arduino.
Materiales Necesarios
- 1 x Arduino (Uno, Mega, Leonardo, etc.)
- 1 x Módulo Bluetooth HM-10
- 2 x LEDs
- 2 x Resistencias de 220 ohmios
- Cables de conexión
- Protoboard
Esquema de Conexión
- Conecta los LEDs: Conecta cada LED a la protoboard. Asegúrate de conectar el ánodo (lado más largo) a través de una resistencia de 220 ohmios a los pines digitales del Arduino (por ejemplo, 2 y 3), y el cátodo (lado más corto) al GND del Arduino.
- Conecta el HM-10: Utiliza la conexión estándar para el módulo HM-10 descrita en secciones anteriores.
Código para Arduino
El siguiente código de Arduino está diseñado para escuchar comandos específicos desde el módulo Bluetooth y activar los LEDs en consecuencia.
#include <SoftwareSerial.h> // libreria que permite establecer pines digitales para comunicacion serie
int Rx = 10;
int Tx = 11;
char DATO = 0; // variable para almacenar caracter recibido
int LED1 = 2; // LED rojo a pin digital numero 2
int LED2 = 3; // LED verde a pin digital numero 3
SoftwareSerial HM10(Rx,Tx);// pin 10 como Rx, pin 11 como Tx
void setup(){
HM10.begin(9600); // comunicacion serie entre Arduino y el modulo a 9600 bps
pinMode(LED1, OUTPUT); // pin 2 como salida
pinMode(LED2, OUTPUT); // pin 3 como salida
}
void loop(){
if (HM10.available()){ // si hay informacion disponible desde modulo
DATO = HM10.read(); // almacena en DATO el caracter recibido desde modulo
if( DATO == 'A' ) // si el caracter recibido es el numero 1
digitalWrite(LED1, !digitalRead(LED1)); // escribe valor opuesto al leido del LED rojo
if( DATO == 'B' ) // si el caracter recibido es el numero 2
digitalWrite(LED2, !digitalRead(LED2)); // escribe valor opuesto al leido del LED verde
}
}
En resumen, el código permite controlar dos LEDs con un módulo HM-10 Bluetooth. Cuando se envía el carácter '1' desde un dispositivo conectado al módulo Bluetooth, el estado del primer LED cambia; lo mismo ocurre con el segundo LED cuando se envía el carácter '2'. Este proyecto es un ejemplo básico de cómo se puede utilizar la comunicación Bluetooth para interactuar con componentes electrónicos a través de Arduino.
Instrucciones para el Usuario
- Sube el código a tu Arduino.
- Abre la aplicación de terminal Bluetooth en tu dispositivo móvil.
- Conéctate al módulo HM-10.
- Envía los comandos (‘A’, ‘B’) desde la aplicación para controlar los LEDs.
Consideraciones Finales
- Asegúrate de que la conexión entre el Arduino, el módulo HM-10 y los LEDs sea correcta.
- Verifica que la aplicación de terminal Bluetooth esté enviando los caracteres correctamente.
- Recuerda, este código es sensible a mayúsculas y minúsculas, asegúrate de enviar los comandos en mayúsculas.