Los módulos HM-10 permiten usar comunicación serial usando instrucciones AT, tanto para configuración como para mensajería de datos.
Para conectase con el módulo desde el computador se puede usar un arduino como intermediario, pudiendo así configurar el dispositivo. Posteriormente, usando un esquema semejante se puede ampliar para enviar/recibir un mensaje a un dispositivo, por ejemplo una tablet o un móvil.
Referencia: https://people.ece.cornell.edu/land/courses/ece4760/PIC32/uart/HM10/DSD%20TECH%20HM-10%20datasheet.pdf
Conexión con Arduino
La comunicación hacia el HM-10 se realiza con un computador y un arduino, aprovechando la conexión serial del módulo y enviando instrucciones AT.
El módulo tiene dos pines para alimentación Vcc y GND y los dos pines de comunicación Tx y Rx.
La conexión con el arduino requiere el acondicionamento de la señal de transmision Tx desde el arduino a 5V hacia el módulo HM-10 a 3.3V mediante un divisor de voltaje. El divisor de voltaje se implementa con las resistencias R1 de 1KΩ y R2 de 2.2KΩ.
Configuración Serial – Arduino
La configuración serial se puede realizar mientras el módulo no se encuentre conectado o «emparejado» a otro dispositivo.
El led del módulo parpadea en esta modalidad, indicando que no está emparejado y contesta instrucciones de configuración.
La terminal o «monitor de arduino» se debe configurar a ala misma velocidad que lo indicado en la sección script de Arduino, y se usa envío de NL y CR (nueva linea y enter)
Ejemplos de instrucciones enviadas desde «monitor de arduino»
AT+VERSION
+VERSION=Firmware V4.2.0,Bluetooth V4.0 LE
AT+NAME
+NAME=BT05
AT+ROLE
+ROLE=0
AT+HELP
******************************************************************** * Command Description * * ---------------------------------------------------------------- * * AT Check if the command terminal work normally * * AT+RESET Software reboot * * AT+VERSION Get firmware, bluetooth, HCI and LMP version * * AT+HELP List all the commands * * AT+NAME Get/Set local device name * * AT+PIN Get/Set pin code for pairing * * AT+PASS Get/Set pin code for pairing * * AT+BAUD Get/Set baud rate * * AT+LADDR Get local bluetooth address * * AT+ADDR Get local bluetooth address * * AT+DEFAULT Restore factory default * * AT+RENEW Restore factory default * * AT+STATE Get current state * * AT+PWRM Get/Set power on mode(low power) * * AT+POWE Get/Set RF transmit power * * AT+SLEEP Sleep mode * * AT+ROLE Get/Set current role. * * AT+PARI Get/Set UART parity bit. * * AT+STOP Get/Set UART stop bit. * * AT+START System start working. * * AT+IMME System wait for command when power on. * * AT+IBEA Switch iBeacon mode. * * AT+IBE0 Set iBeacon UUID 0. * * AT+IBE1 Set iBeacon UUID 1. * * AT+IBE2 Set iBeacon UUID 2. * * AT+IBE3 Set iBeacon UUID 3. * * AT+MARJ Set iBeacon MARJ . * * AT+MINO Set iBeacon MINO . * * AT+MEA Set iBeacon MEA . * * AT+NOTI Notify connection event . * * AT+UUID Get/Set system SERVER_UUID . * * AT+CHAR Get/Set system CHAR_UUID . * * -----------------------------------------------------------------* * Note: (M) = The command support slave mode only. * * For more information, please visit http://www.cyobd.com * * Copyright@2013 www.cyobd.com. All rights reserved. * ********************************************************************
Algunas instrucciones pueden variar en otros módulos con diferente firmware.
Lo presentado es solo un ejemplo de lo que se puede hacer en éste módulo de www.cyobd.com
Instrucciones Arduino
/* Comunicación Serial por Bluetooth Basada en: https://www.arduino.cc/en/Tutorial/SoftwareSerialExample */ #include <SoftwareSerial.h> int Rx = 10; //conexión al módulo int Tx = 11; SoftwareSerial moduloBtLE(Rx,Tx); void setup(){ int baudiosArduino = 9600; // Serial USB Serial.begin(baudiosArduino); while (!Serial) { }// espera conexión Serial.println("\n USB <->PC, Listo..!!"); //Puerto Serial Módulo Bluetooth int baudiosBtLE = 9600; moduloBtLE.begin(baudiosBtLE); moduloBtLE.println("Listo Bluetooth a Tablet/móvil"); delay(1000); moduloBtLE.write("AT+VERSION"); delay(1000); } void loop(){ // recibe mensaje Bluetooth y envia por USB a PC if (moduloBtLE.available()){ Serial.write(moduloBtLE.read()); } // envia mensaje Serial-USB a Bluetooth if (Serial.available()){ moduloBtLE.write(Serial.read()); } }
Conexión a tablet/móvil
Se realizó la prueba en una tablet con arduino, descargando el programa «Serial Bluetooth terminal» desde la tienda Play Store de Google.
Referencia: https://play.google.com/store/apps/details?id=de.kai_morich.serial_bluetooth_terminal&hl=es_EC
El siguiente paso en la tablet es usando la aplicación, realizar una búsqueda de dispositivos, menú/dispositivos/scan , y así encontrar el que tiene el nombre de la sección anterior donde se pide AT+NAME, en este caso: «BT05».
una vex que se han conectado al módulo desde la tablet/móvil se pueden intercambier mensajes con la PC.
y la consola de Arduino