HM-10 Serial con Arduino a PC/Tablet/móvil

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