Tutorial del Internet de las Cosas y Bluetooth con el HM10
Juan Antonio Villalpando
Volver al índice del tutorial
____________________________
161.- HM-10. BLE. Actualizar el firmaware. PIO. MLT-BT05.
- Este tutorial es la continuación de 161_HM10_BLE.htm
- Primero cargaremos en el dispositivo el firmware correspondiente a la versión HV540, para ello necesitaremos soldar 3 cables al módulo.
- Después actualizaremos a la versión v 551, para lo cual necesitaremos un adaptador FTDI.
- Con esto lograremos que funcionen los PIO.
___________________________________________________________
- Firmware HM-10. Convertir MLT-BT05 en un HM-10.
- Para que nuestro clon MLT-BT05 se un verdadero HM-10, vamos a realizar el siguiente proceso.
1.- Soldamos tres cables a los terminales 7, 8 y 11 del módulo como indico en la imagen.
- Cortamos un pequeño rectángulo del plástico transparente que envuelve al módulo, no hace falta quitar todo el plástico, solo cortar una ventana rectangular en las proximidades de los terminales 7, 8 y 11 como indica la imagen y la foto. En vez de soldar cable, puedes soldar directamente el terminal de las resistencias.
- Conectamos tres resistencia de 1 K, para limitar la corriente y proteger al módulo, ya que Arduino entrega 5 V y el módulo requiere entradas de 3,3 V, al colocar esas resistencia se limita la intensidad que entra en el módulo.
- Bajamos y descomprimimos este archivo:
HM10_firmware.zip
- El CCloader.ino lo cargamos en el Arduino UNO.
- Mediante el símbolo de sistema ejecutamos el CCLoader_x86_64.exe
- Para cargar el CC2541hm10v540.bin que es el firmware para convertirlo en HM10 con la versión v540
D:\HM10\ CCLoader_x86_64.exe 2 CC2541hm10v540.bin 0
- El número 2 es el puerto en donde tengo mi Arduino, debes cambiarlo por el puerto de tu Arduino.
- Tuve un problema con este puerto, por defecto mi Arduino estaba en el puerto 63 y la orden no admitía ese puerto, así que tuve que cambiar el número de puerto 63 por el 2.
- Para ello fui al Administrador de dispositivos y lo cambié.
- Ya tenemos a nuestro módulo actualizado a HMSoft con la versión V540.
- Lo conectamos al Arduino como indica la imagen.
- Volvemos a cargar en el Arduino este programa:
Comandos_AT.ino |
// Juan A. Villalpando
// http://kio4.com/arduino/161_HM10_BLE.htm
#include <SoftwareSerial.h>
// El TXD del módulo al pin 2 (RX) del Arduino.
// El RXD del módulo al pin 3 (TX) del Arduino.
SoftwareSerial HM10(2, 3);
void setup(){
Serial.begin(9600);
HM10.begin(9600);
}
void loop(){
if(HM10.available()){Serial.write(HM10.read());}
if(Serial.available()) {HM10.write(Serial.read());}
}
|
- y consultamos los comandos AT.
- Los comandos AT ya no son los mismos que teníamos en el MLT-BT05, han cambiado. Algunas órdenes acaban en ?
- En el Monitor Serie establece "Sin ajuste de línea"
- Escribimos: AT+VERR?
y obtenemos
HMSoft V540
- DataSheet
_________________________________________________________________
- Actualización de V540 a V551.
- Antes de comenzar debemos tener el conectado el HM-10 al Arduino como lo hemos visto en el apartado anterior para poder escribir los comandos AT.
- Escribimos el siguiente comando: (Escribe este comando solo si vas a realizar la actualización).
AT+SBLUP
- Eso lo hacemos para poner al módulo en modo "actualización". Observa que el LED se quedará encendido y no parpadeará.
- Aunque le quitemos la alimentación y la volvamos a poner el LED volverá a quedar encendido.
- Una vez que el módulo está en modo "actualización", lo quitamos del Arduino y lo conectamos una conversor FTDI.
- Debemos conectar el módulo HM-10 al ordenador mediante este conversor FTDI. (el cable para este módulo es USB - USB mini)(tambien lo hay USB - USB, consulta el tipo de conector del cable)
- Entramos en la web de HM-10
-
http://jnhuamao.cn/download_rom_en.asp?id=1#
- Instalé la versión V709 pero no me funcionó bien los comandos AT, así que volví a instalar esta vez la V551.
[A partir de la versión V7xx las velocidad de transmisión por defecto es de 1152000]
- También es conveniente bajar el HMPC Assistant.
- Ejecutamos HMSoft.exe y cargamos HMSoft.bin
- HMPC Assistant.
- Una vez actualizado volvemos a conectarlo al Arduino. Volvemos a cargar este programa.
Comandos_AT.ino |
// Juan A. Villalpando
// http://kio4.com/arduino/161_HM10_BLE.htm
#include <SoftwareSerial.h>
// El TXD del módulo al pin 2 (RX) del Arduino.
// El RXD del módulo al pin 3 (TX) del Arduino.
SoftwareSerial HM10(2, 3);
void setup(){
Serial.begin(9600);
HM10.begin(9600);
}
void loop(){
if(HM10.available()){Serial.write(HM10.read());}
if(Serial.available()) {HM10.write(Serial.read());}
}
|
- Abrimos el Monitor Serie.
- Establecemos 9600 baudios y "Sin ajuste de línea"
- Escribimos en el Monitor Seria: AT+VERR?
y obtenemos
HMSoft V551
- Escribimos: AT+BAUD?
- Obtendremos Get:0, indicando que está a 9600
- También podemos enviar los comando mediante el programa HMPC Assistant.
_________________________________________________________________
- Intento.
- Intenté cargar directamente el firmware V551 con el primer método, es decir con las tres resistencias, pero no me funcionó.
- Cargaba el firmware pero se mantenía con el LED encendido.
- Así que solo lo pude hacer en dos pasos, primero con las tres resistencias cargo la versión V540 y luego con el módulo FTDI actualizo a V551.
_________________________________________________________________
- PIO.
Programmed Input Output.
- Vamos a utilizar los pines del módulo HM-10
- Vamos a probar si funcionan los PIO.
AT+PIO40 ---- Poner el terminal 4 en bajo
AT+PIO41 ---- Poner el terminal 4 en alto
AT+PIO4? ---- Obtener el estado del terminal 4.
AT+PIO?? ---- Obtener el estado de todos los terminales.
- Podemos soldar una resistencia y un LED al PIO2 y encenderlo y apagarlo desde el Monitor Serie mediante:
AT+PIO20 ---- Poner el terminal 2 en bajo
AT+PIO21 ---- Poner el terminal 2 en alto
- Obtener el estado del PIO11
- AT+ADCB?
PIO2 y PIO3 pueden suministrar 20 mA, los demás 4 mA
_________________________________________________________________
- PIO. Programmed Input Output. Stand alone. Independiente.
- Al PIO10 se le denomina PIOA.
- Al PIO11 se le denomina PIOB.
- DataSheet
- Estando conectado al Arduino como en el apartado anterior, escribimos el siguiente comando para ponerlo en MODE2
AT+MODE2
- Confirmamos
AT+MODE?
- También lo vamos a poner de modo que realice notificaciones:
AT+NOTI1
- Ya podemos quitar el módulo del Arduino y alimentarlo independientemente, en mi caso lo alimento con una pila de botón de 3 V.
- Si no tienes pila, aliméntalo con los 3,3 V de la placa de Arduino, (pero sin conectar los cables TX y RX).
- Ahora podemos ejecutar la nRF app y enviar el String AT+PIO21
1.- Lo vamos a realizar también con App Inventor.
p110_hm10_AT_Command.aia
- Enviaremos AT+PIO21 para encender el LED y AT+PIO20 para apagarlo.
_____________________________
- Diseño.
____________________________
- Bloques.
__________________________________________________
2.- Ahora vamos a obtener respuesta mediante RegisterForString.
p110_hm10_AT_Command_Register.aia
- En el mismo ejemplo anterior he añadido RegisterForStrings.
- Cuando cambia el dato, el BLE envía una respuesta de la forma:
["OK+PIO2:0"]
["OK+Col:80"]
---------------------
["OK+PIO2:1"]
["OK+Col:84"]
____________________________
- Diseño.
____________________________
- Bloques.
_______________________________
|