Editing Módulo HM-10
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.
The edit can be undone.
Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 64: | Line 64: | ||
Algunos comandos interesantes son: | Algunos comandos interesantes son: | ||
− | + | - AT simplemente devuelve OK y nos informa de qu el módulo está activo y a la espera de nuevos comandos | |
− | + | - AT+ADDR? devuelve la dirección MAC del módulo HM-10 | |
− | + | - AT+VERR? devuelve la versión actual del firmware | |
− | + | - AT+RENEW revierte el módulo a la configuración de fábrica | |
− | + | - AT+RESET reinicializa el módulo | |
− | + | - AT+MODEx cambia el funcionamiento del módulo de caa al procesamiento de comandos AT. | |
− | + | AT+MODE0 (valor por defecto). Sólo acepta comandos AT vía la conexión serie (TXD/RXD) hasta que se conecta un dispositivo BLE central al módulo. | |
− | + | AT+MODE2 Igual que el MODE0, pero una vez extablecida la conexión se pueden enviar comandos AT desde el dispositivo BLE central. Por ejemplo se puede cambiar el valor de uno de los pines GPIO del módulo HM-10 sin necesidad de un micro adicional. | |
− | + | - AT+UUID0xnnnn cambia el UUID del servicio utilizado por el módulo HM-10 para encapsular la conexión serie (el valor por defecto es 0xFFE1) | |
− | + | - AT+CHAR0xnnnn cambia el UUID de la característica utilizada por el módulo HM-10 para encapsular la conexión serie (el valor pot defecto es 0xFFE1) | |
− | + | - AT+PIOxy (x: 2-B ; y: 0-1) Permite activar el pin GPIO x del módulo HM-10 con el valor y (0 Off; 1 On)- Por ejemplo para encender el GPIO 2 hay que enviar AT+PIO21. | |
− | Este comando permite por ejemplo controlar un relé desde un dispositivo BLE central (un smartphone) si se configura el módulo HM-10 en modo 2 (ver | + | Este comando permite por ejemplo controlar un relé desde un dispositivo BLE central (por ejemplo un smartphone) si se configura el módulo HM-10 en modo 2 (ver AT+MODE más arriba) |
− | + | - AT+BEFCxyz define el valor de los pines GPIO 2 a B cuando el módulo es alimentado (valores permitidos 000 a 3FF). Por ejemplo para que configurar a alto el GPIO2 nada más alimentar el módulo, hay que utilizar el comando AT+BEF200 | |
− | + | - AT+NAMExxxxxxxxx permite cambiar el nombre del módulo | |
− | + | - AT+ROLEx (x: 0-1; 0 periférico; 1 - central; valor por defecto 0) permite definir el rol del módulo HM-10. En el caso de configurar el módulo como un dispositivo central, se pueden utilizar los comandos AT+DISC?, AT+CON y AT+CONN para conectarlo a otro dispositivo periférico | |
− | Hay más comandos que permiten configurar y controlar otros | + | Hay más comandos que permiten configurar y controlar otros parámteros del HM-10. Se recomienda leer la documentación y experimentar con ellos. |
+ | Algunos comandos cuelgan la conexión serie (no sabemos por qué; desconectando la alimentación del módulo y volviéndola a conectar se puede serguir trabajando con el módulo con la configuración actualizada. | ||
− | + | === Congiguración del módulo HM-10 como un dispostivo central === | |
− | + | El firmware del módulo permite configurarlo como un dispositivo central que se puede conectar a otro dispositivo (periférico) e intercambiar datos vía BLE. Para ello hay que ejecutar los sigueintes comandos: | |
− | === | + | |
− | El firmware del módulo permite configurarlo como un dispositivo central que se puede conectar a otro dispositivo (periférico) e intercambiar datos vía BLE. Para ello hay que ejecutar los | + | |
AT+ROLE1 | AT+ROLE1 | ||
AT+IMME1 | AT+IMME1 | ||
Line 94: | Line 93: | ||
AT+CONnnnnnnnnnnnn (dirección MAC en hexadecimal) | AT+CONnnnnnnnnnnnn (dirección MAC en hexadecimal) | ||
− | Una vez conectados, los dos módulos pueden comenzar el intercambio de información encapsulada en sus respectivas conexiones serie. En principio este mecanismo permite conectar dos módulos HM-10, aunque en teoría serviría para conectar cualquier otro periférico BLE que implemente una característica para intercambio de información usando la funcionalidad Write y Notification (el UUID de la característica se podría configurar con el comando | + | Una vez conectados, los dos módulos pueden comenzar el intercambio de información encapsulada en sus respectivas conexiones serie. En principio este mecanismo permite conectar dos módulos HM-10, aunque en teoría serviría para conectar cualquier otro periférico BLE que implemente una característica para intercambio de información usando la funcionalidad Write y Notification (el UUID de la característica se podría configurar con el comando At+CHAR). |
− | + | ||
Hay que tener en cuenta que en el firmware que hemos probado (versión 540) sólo se transmiten caracteres ASCII (no cualquier código/byte hexadecimal) | Hay que tener en cuenta que en el firmware que hemos probado (versión 540) sólo se transmiten caracteres ASCII (no cualquier código/byte hexadecimal) | ||
− | |||
Este mecanismo también permite enviar comandos AT desde el módulo central al periférico (requiere haber cambiado previamente el modo con el comando <code>AT+MODE2</code> en el periférico). | Este mecanismo también permite enviar comandos AT desde el módulo central al periférico (requiere haber cambiado previamente el modo con el comando <code>AT+MODE2</code> en el periférico). | ||
=== Configuración del módulo HM-10 como un iBeacon === | === Configuración del módulo HM-10 como un iBeacon === | ||
− | ( | + | (basado en el turorial de blueminance http://www.blueluminance.com/HM-10-as-iBeacon.pdf) |
+ | AT+RENEW Recupera la configuración por defecto de fábrica | ||
+ | AT+RESET Reinicializa el módulo | ||
+ | AT Reintentar hasta que le módulo esté listo y responda OK | ||
+ | AT+MARJ0xnnn Definir el valor Mayor del iBeacon (hexadecimal) | ||
+ | AT+MINO0xnnnn Definir el valor Minor del iBeacon (hexadecimal) | ||
+ | AT+ADVI5 Definir el intervalo de anuncio/broadcast (5 corresponde a 546.25 milisegundos) | ||
+ | AT+NAMEMakespaceMadrid Definir el nombre del iBecon (elegir un valor único) | ||
+ | AT+ADTY3 Configurar el dispositivo BLE como no conectable | ||
+ | 9. AT+IBEA1 Habilitar el modo iBeacon | ||
+ | 10.AT+DELO2 Configurar iBeacon como sólo broadcast | ||
+ | 11.AT+PWRM0 Habilitar auto-sleep para reducir consumo | ||
+ | 12.AT+RESET Reiniciar el módulo | ||
− | + | Una vez configurdo como iBeacon, el módulo deja de encender el LED de la placa y está dormido la myor parte del tiempo con lo que no responde a los comandos AT | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | Una vez | + | |
Para despertar el módulo y poder mandarle nuevos comandos AT, hay dos opciones: | Para despertar el módulo y poder mandarle nuevos comandos AT, hay dos opciones: | ||
− | + | - Enviarle una cadena larga (más de 80 bytes) de caracteres sin la cadena AT (repetir varias veces hasta que recibamos de respuesta OK+WAKE. | |
− | + | - Conectar el pin PIO0 (System Key) a tierra/GND durante más de un segundo. Este PIN está expuesto en uno de los pines físicos de las placas que seis pines machos (BRK). | |
=== Actualización del firmware === | === Actualización del firmware === | ||
(Se requiere sistema operativo Windows) | (Se requiere sistema operativo Windows) | ||
− | |||
(CUIDADO: si el proceso de instalación del nuevo firmware no termina con éxito, el módulo puede quedar inservible. Si sigues, asumes ese riesgo bajo tu responsabilidad) | (CUIDADO: si el proceso de instalación del nuevo firmware no termina con éxito, el módulo puede quedar inservible. Si sigues, asumes ese riesgo bajo tu responsabilidad) | ||
− | Para conectar el módulo HM-10 al PC y reprogramarlo hace falta un adaptador USB a TTL serie (a 3.3V si | + | Para conectar el módulo HM-10 al PC y reprogramarlo hace falta un adaptador USB a TTL serie (a 3.3V si la placa del módulo no incluye reguladores/conversores de tensión). Una alternativa que nosotros hemos utilizado es usar una placa Arduino Uno con el chip ATmega en formato "through hole". Si quitamos el chip de su zócalo, la placa se comporta como un adaptador USB a TTL serie a 5V exponiendo la conexión serie TTL en los pines 0 y 1. Como las placas en que están montados nuestros módulos HM-10 inluyen los regularodes de tensión, podemos conectar directamente el pin 0 y 1 de la placa Arduino a los pines RXD y TXD del módulo HM-10 sin miedo a quemarlos. También hay que conectar los pines GND y 5V de la placa Arduino a los pines GND y VCC de la placa del módulo. |
− | + | Una vez conectada la placa Arduino al ordenador, abir el Device Manager y anotar el número de puerto serie/COM que se le ha asignado. | |
− | + | ||
Para actualizar el firmware del módulo HM-10, hay que descargar la última versión disponible de la web de Jinan Huamao Technology (http://www.jnhuamao.cn/download_rom_en.asp?id=) | Para actualizar el firmware del módulo HM-10, hay que descargar la última versión disponible de la web de Jinan Huamao Technology (http://www.jnhuamao.cn/download_rom_en.asp?id=) | ||
En esta página hay un manual de instrucciones además de las últimas versiones del firmware para diferentes módulos configuraciones. | En esta página hay un manual de instrucciones además de las últimas versiones del firmware para diferentes módulos configuraciones. | ||
− | Descargar el fichero "HM-10 HMSoft CC254x Vyyy firmware update file". Hay que comprobar (leyendo si hace falta con una lupa) si nuestro módulo integra | + | Descargar el fichero "HM-10 HMSoft CC254x Vyyy firmware update file". Hay que comprobar (leyendo si hace falta con una lupa) si nuestro módulo integra elchip CC2540 o el CC2541 (las versiones ´más actuales del módulo sulene incluir el CC2541). |
− | + | Una vez descargado el fichero, desempaquetarlo en una carpeta y ejecutar el programa HMSoft.exe. En el campo Image File seleccionar el fichero HMSoft-bin presente en la misma carpeta. Actualizar también el puerto COM con el valor que hemos obtenido con el Device Manager. | |
− | Una vez descargado el fichero, desempaquetarlo en una carpeta y ejecutar el programa HMSoft.exe. En el campo Image File seleccionar el fichero HMSoft | + | |
− | + | ||
− | + | ||
+ | Abrir el IDE de Arduino, seleccionar el puero COM de nuestra placa Arduino y abrir una consola. Configurar los menús desplegables de la parte inferior de la ventana a 9600 baudios y "No hay fin de línea". Si hemos realizado bien las conexiones y nuestro módulo está configurado a 9600 baudios, podemos enviar el comando "AT" (sin comillas) en el campo de entrada de texto y veremos en la caja de texto de salida "OK". | ||
Una vez llegados a este punto, podemos comenzar el proceso de instalación del nuevo firmware | Una vez llegados a este punto, podemos comenzar el proceso de instalación del nuevo firmware | ||
− | + | IMPORTANTE: Si el proceso de instalación de un nuevo firmware no termina con éxito el módulo puede volverse inservible ("bricked"). Conviene realizar todo el rpoceso sin desconectar el módulo del ordenador hasta que el programa HMSoft indique que ha terminado con éxito. | |
− | IMPORTANTE: Si el proceso de instalación de un nuevo firmware no termina con éxito el módulo puede volverse inservible ("bricked"). Conviene realizar todo el | + | |
Para comenzar la instalación, lo primero que tenemos que hacer es informar al módulo por medio de un comando AT enviado desde la consola de Arduino: | Para comenzar la instalación, lo primero que tenemos que hacer es informar al módulo por medio de un comando AT enviado desde la consola de Arduino: | ||
− | + | AT+SBLUP | |
A partir de este momento se enciende el led verde fijo en el módulo con una intensidad baja que indica que el módulo se está reprogramando. | A partir de este momento se enciende el led verde fijo en el módulo con una intensidad baja que indica que el módulo se está reprogramando. | ||
− | Ahora hay que cerrar la consola de Arduino para liberar el | + | Ahora hay que cerrar la consola de Arduino para liberar el puero COM y que lo pueda emplear el programa HMSoft. Pulsar "Load Image" y la descarga al módulo deberá empezar. Tras un rato, el proceso terminará y el módulo estará listo con la nueva versión (el led verde brillará de modo intenso e intermitente y aparece una ventana de información en el PC). |
− | Si ahora abrimos de nuevo la consola de Arduino, podemos mandar el comando | + | Si ahora abrimos de nuevo la consola de Arduino, podemos mandar el comando At+VERR? para comprobar que la versión del firmware se ha actualizado. |
− | Si el proceso falla y se queda el módulo con el LED verde fijo a baja intensidad, se puede intentar resetear el proceso conectando el pin PIO0 ( | + | Si el proceso falla y se queda el módulo con el LED verde fijo a baja intensidad, se puede intentar resetear el proceso conectando el pin PIO0 (System Key/BRK) a tierra/GND (no aseguramos que este mecanismo funcione!). |
=== Enlaces interesantes === | === Enlaces interesantes === |