El HM-19 es una versión mejorada del HM-11. Utiliza el chip CC2640R2F.
En comparación con el HM-11, HM-19 es un módulo Bluetooth 5.0 BLE, tiene una velocidad de transferencia más rápida y una MTU mayor. En espacio abierto tiene un alcance de 100 metros con un consumo en espera de 2,6 mA.
Tensión de trabajo (VCC): 3.6V a 6V
Nivel lógico TTL (TX, RX): 3.3V
Protocolo Bluetooth: 5.0 BLE
Chip: TI CC2640R2F
Para evitar la malfución del módulo hay que utilizar principalmente un divisor de tension en la salida TX ,justo al contrario que los módulos hc-05 que lleva en la salida RX. Mejor ponerlos en ambos
El módulo Bluetooth HM-18 / HM-19 opera en diferentes modos de trabajo segun su versión como transmisión o control remoto.
La versión de transmisión se puede usar para transmitir datos entre dos dispositivos Bluetooth y la versión de control remoto se puede usar para controlar los puertos PIO de salida de alto o bajo nivel sin ninguna otra MCU.
HM-18/HM-16 Schematic


Funciones:
En modo de suspensión, puede enviar una cadena larga (Longitud> 1K Bytes o más), esa cadena puede hacer que el módulo se active, y recibirá una cadena “OK + WAKE” a través de UART. Esa cadena no puede incluir ningún comando AT.
Después de activar el módulo, puede enviar y recibir comandos AT.
¿Cómo dejar que el módulo entre en modo de suspensión?
En modo detectable, envíe la cadena “AT + SLEEP” a través de UART, si todo está bien, el módulo devolverá la cadena “OK + SLEEP” y luego al modo de suspensión.
Ejecute el comando AT + PWRM0 y AT + RESET, el módulo controlará la alimentación por sí mismo.
Paquete de anuncios del sistema
Función KEY del sistema (KEY)
Presione key con un Bajo> 1000ms:
Si el módulo ya se ha conectado al dispositivo remoto, se desconectará de él.
Si el módulo está en modo stby (AT + PIO01) se restablecerá a la configuración predeterminada. Luego reinicie.
Función LED del sistema (PIO1)
Si AT + PIO10 está configurado, la salida PIO1 encendera y apagara el led con la cadencia: Salida Alta 500 ms, Baja 500 ms,esto es indicación de Estado desconectado y una salida alta que deja encendido el led para indicarnos Estado conectado:
Modo de trabajo del sistema
A) Modo 0 (modo de transmisión):
Cuando no está conectado, a través de los comandos AT,-consola serie
Si esta conectado ,solo paraTX/RX de datos en serie.
B) Modo 1 (modo de control remoto).
C) Modo 2 (modo de control remoto limitado):
Cuando el módulo espera una conexión, puede enviar y recibir el comando AT a través de UART, después de la conexión, puede enviar y recibir el comando AT a través de un dispositivo remoto, también puede enviar y recibir datos en serie entre sí a través de UART.
En el modo de control remoto limitado, el módulo solo admite dispositivos remotos para leer algún valor, como AT + BAUD? puede obtener información del módulo UART, pero no puede modificarla en el modo de control remoto limitado.
Comandos AT
Configuración predeterminada de fábrica:
Baudios: 9600, N, 8, 1; Rol periférico (slave); modo de transmisión
Formato de comando AT:
Formato de comando AT solo en mayúscula. formato de cadena, sin ningún otro símbolo. (por ejemplo, \ r o \ n).
En la versión de transmisión: solo acepta el comando AT desde la interfaz UART cuando el dispositivo Bluetooth no está conectado con un dispositivo remoto.
En la versión de control remoto: puede aceptar el comando AT desde la interfaz UART cuando el dispositivo Bluetooth remoto no está conectado. Después de realizar la conexión, el módulo acepta el comando AT desde el dispositivo Bluetooth remoto. En este modo, puede enviar y recibir datos de lo que desea enviar.
COMANDOS BASICOS PARA CONSULTA Y ESTABLECIMIENTO DEL MODO DE TRABAJO
ENVIO UART | RESPUESTA UART | PARAMETRO/OBS |
AT | OK | Cuando no hay conexión |
AT cundo esta conectado con el esclavo | OK+LOST | SI AT+NOTI1 |
AT+ADDR? | OK+ADDR:MAC Address | |
AT+ADVI? | OK+ Get:[P] | ADVERSITING INTERVAL |
AT+ADVI[P] | OK+ Set:[P] | P: 0 ~ F 0: 100ms 1: 152.5 ms 2: 211.25 ms 3: 318.75 ms 4: 417.5 ms 5: 546.25 ms 6: 760 ms 7: 852.5 ms 8: 1022.5 ms 9: 1285 ms A: 2000ms B: 3000ms C: 4000ms D: 5000ms E: 6000ms F: 7000ms Default: 0 |
The maximum 1285ms recommendations form the IOS system. That is to say, 1285ms is apple allowed, but in response to scan and connected all the time will be long. | ||
AT+ADTY? Este comando no me da respuesta | OK+ Get:[P] | ADVERTISING TYPE |
AT+ADTY[P] | OK+ Set:[P] | P: 0 ~ 3 0: Advertising ScanResponse,Connectable 1: Only allow last device connect in 1.28 seconds 2: Only allow Advertising and ScanResponse. 3: Only allow Advertising Default: 0 |
AT+BAUD? | OK+Get:[P] | P: Baud rate |
AT+BAUD[P] | OK+Set:[P] | 0: 1200; 1: 2400; 2: 4800; 3: 9600; 4:19200; 5:38400; 6:57600; 7:115200 8:230400 Default: 3(9600) |
AT+COUP? | OK+Ge(:P1) | CONNECTION UPDATE |
AT+COUP(P1) | OK+Set(P1) | 0: Don’t update 1: Update Default: 1(update |
AT+CLEAR | OK+CLEAR | Clear Last Connected device address |
AT+CONNL | OK+CONN(P1) | Try connect to last succeeded device L: Connecting E: Connect error F: Connect Fail N: No Address Aviso: este comando se utiliza para el rol central. Debe configurar AT + IMME1 y AT + ROLE1 primero. Si el dispositivo remoto ya se ha conectado a otro dispositivo o se ha apagado, se recibirá “OK + CONNF” después de aproximadamente 10 segundos |
AT+CONN(P1) | OK+CONN(P2) | Try to connect a address use array index after AT+DISC? P1: 0~5 P2: A: Connecting E: Connect error F: Connect Fail Notice: Only central role is used. Must set up AT+IMME1 and AT+ROLE1 first. P0 is device type, possible value is 0, 1, 2, could get from AT+DISC? Command. If remote device has already connected to other device or shut down, “OK+CONNF” will received after about 10 Seconds. e.g. Try to connect a device which MAC address is 00:17: EA: 09:09:09 Send: AT+CON0017EA090909 May receive a reply: OK+CONNA ========= Accept request, connecting OK+CONNE ========= Connect error OK+CONN ========= Connected, if AT+NOTI1 is setup OK+CONNF ========= Connect Failed, After 10 seconds |
AT+DISC? | OK+DIS(PO)(P1) | Start a device discovery scan P0: C, 0, 1, 2 C: Common string 0~2: Address type P1: S, E, [MAC String] S: Start discovery E: End discovery MAC String : Device MAC string This command requires AT+IMME1 and AT+ROLE1 support. e.g. Send: AT+DISC? Recv: OK+DISCS Recv: OK+DIS:123456789012 (discovered device address information) If AT+SHOW1 is setup, you will receive then Name information as follow Recv: OK+NAME: xxx After send Name value, will send two extra “\r\n” value ASCII byte Recv: OK+DIS:234567890123 Recv: OK+NAME: xxx After send Name value, will send two extra “\r\n” value ASCII byte …..(Before V535 max results is 6, Since V535 not limit) Recv: OK+DISCE Connect use array index: Connect to a discovered device: AT+CONN0, AT+CONN1……AT+CONN5 Connect use MAC address: AT+CO[MAC String] |
AT+HELP? | Help Information | System Help Information |
AT+IMME? | OK+ Get(P1 | Query/Set Module work type— P1: 0, 1 |
AT+IMME(P1) | OK+ Set(P1) | 1: When module is powered on, only respond the AT Command, don’t do anything. Until AT + START,AT+CON, AT+CONNL,AT+DISC?, AT+DISI? commands is received. 0: When power on, module will start work immediately Default: 0 |
AT+MODE? Este comando no actua como dice su datasheet,he al modo 1 y 2 y no hay diferencia,asi como por defecto me daba el valor 1 cuando se define como 2. | OK+Get(P1) | Query/Set Module Work Mode——P1: 0, 1, 2 |
AT+MODE(P1) | OK+Set(P1) | 0: Transmission Mode 1: Limited remote-control mode +Mode 0 2: Remote Control Mode + Mode 0 Default: 2 Mode 0: Before establishing a connection, you can use the AT command configuration module through UART. After established a connection, you can send and receive data from each other. Mode 2: Before establishing a connection, you can use the AT command configuration module through UART. After established a connection, you can send data to remote side. Remote side can do fellows: Send and receive AT command to configuration module. Remote control PIO2 to PIO11 pins output state of HM-18. Remote control PIO2, PIO3 pins output state of HM-19. Mode 1: Like mode 2, but some command only support query, didn’t support setup value. AT+BAUD, AT+ROLE, AT+PARI, AT+STOP. |
AT+NOTI? Este comando meda valor por defecto de 2 que no existe como parametro pero pareceque se comporta como valor 1 | OK+Get(P1) | Query/Set Notify information P1: 0, 1 Si lo ponemos en 0 no hay notificacion UART de conexion o desconexion |
AT+NOTI(P1) | OK+Set(P1) | 0: Don’t Notify AT+NOTI OK+Set: 1: Notify Default: 0 If this value is set to 1, when link ESTABLISHED or LOSTED module will output OK+CONN or OK+LOST string through UART. |
AT+NOTP? | OK+ Get(P1) | Query/Set notify mode P1: 0, 1; default: 0 |
AT+NOTP(P1) | OK+ Set(P1) | 0: without address 1: with address This command must work with “AT+NOTI1”, if this switch is open, when the link is connected to disconnected, the prompt string will include the remote device address. OK+CONN:001122334455 String “001122334455” is the MAC address string |
AT+NAME? | OK+NAME(P1) | Query/Set Module name |
AT+NAME(P1) | OK+Set(P1) | P1: module name, Max length is 13. Default: HMSoft/DSD TECH |
AT+PARI? | OK+Get(P1) | Query/Set Parity bit |
AT+PARI(P1) | OK+Set(P1) | P1: 0, 1, 2 0:None 1:EVEN 2:ODD Default: 0 (None |
AT+PIO1? | OK+Get(P1) | Query/Set PIO1 output status (System LED) |
AT+PIO1(P1) | OK+Set(P1) | P1: 0, 1 0: Unconnected Output 500ms High 500ms Low, Connected output High. 1: Unconnected output Low, Connected output High. Default: 0 |
AT+PWRM? | OK+Get:[P] | Query/Set Module sleep type ,, Only support peripheral role. |
AT+PWRM[P] | OK+Set:[P] | P: 0~1 0:Auto sleep 1:Doesn’t auto sleep Default: 1 |
AT+POWE? | OK+Get(P1) | Query/Set Module Power |
AT+POWE(P1) | OK+Set(P1) | Para: 0 ~ 9 0:-18dbm 1:-12dbm 2:-6dbm 3:-3dbm 4:-2dbm 5:-1dbm 6:0dbm 7:1dbm 8: 2dbm 9:3dbm Default: 9 |
AT+RENEW | OK+RENEW | Restore all setup value to factory setup |
AT+RESET | OK+RESET | Restart module-Este comando es importante en algunos cambios de configuración.por ejemplo cuando se hace un cambio de velocidad |
AT+ROLE? | OK+Get(P1) | Query/Set Master and Slave Role |
AT+ROLE(P1) | OK+Set(P1) | Para1: 0, 1 0: Peripheral 1: Central Default: 0 |
AT+RADD? | OK+RADD:MAC Address | Query Last Connected Device Address. Este comando es interesante porque si se pierde el enlce lo recompone a la primera y a lasegunda nos daladirección mac |
AT+RESP? | OK+Get(P1) | Query/Set BLE talk method |
AT+RESP(P) | OK+Set(P1) | Para1: 0, 1, 2 0: Writewithoutresponse 1: Writewithresponse 2: Both 0 and 1 Default: 0 |
AT+SYSK? | OK+Get(P1) | Query/Set PIO0 function (System KEY) |
AT+SYSK[P1] | OK+Set(P1) | P1: 0, 1 0: Only cancel operate, 1: When module is standby, restore factory setting. Default:1 |
AT+STOP? | OK+Get(P1) | Query/Set Stop bit |
AT+STOP(P1) | OK+Set(P1 | P1: 0, 1 0: One stop bit 1: Two stop bit Default: 0 (One stop bit) |
AT+SLEEP | OK+SLEEP | Set Module into sleep mode,,,Only support Peripheral role. |
AT+START | OK+START | Let module Work immediately When AT+IMME1 is setted |
Procedimiento de emparejamiento.
He adquirido un par de módulos HM-19 para probarlos y compararlos con los anteriores.Hasta ahora había trabajado con los HC-05 /HC-06 asi como los HC-08.
Los primeros con version 2 de BLuetooth y despues con la version 4 de baja energía BLE .Ambos con sus dificultades y sus peculiaridades a la hora de emparejarlos.
Dsd Tech nos trae un dispositivo con muchas posibilidades y que hay que decir que funcionan todos los comandos AT. Emparejarlos es muy sencillo si dejamos la configuración default.
- El modulo que queremos actúe como slave en principio no le tocamos
- El modulo que vamos a convertir en master ,utilizando un adaptador USB_UART y por ejemplo la aplicación #acces port# o utilizando el sketch de enlace bidireccional entre el monitor y el dispositivo, vamos a introducir los comandos AT ,directamente configurando una velocidad de 9600 bd. Podremos aprovechar para probar las entradas query del cuadro.
- para configurarlo como maestro basta con introducir AT+ROLE1
- Conectaremos el modulo Slave
- en el Master introduciremos ahora AT+CONN y esperamos que se conecten. en caso negativo poner
- AT+CLEAR y AT+CONNL
Don Cristobal muy buenos días: He emparejado dos hm-19 siguiendo su recomendación, de inmediato han funcionado bien a través de de AT+ROLE1 Y AT+CONN.
Pero no pueden estar más separados de 1,5 mts. a partir de esta distancia pierden la conexión. Repasando sus notas, me ha llamado la atención la función AT+POVE que
por defecto esta ajustada a escala 9 que según entiendo es la màs débil 3dbm y siendo la escala 0 la mas potente 18dbm.
Haré esta tarde la prueba de cambiar la potencia tanto al esclavo como al maestro para averiguar si tienen más alcance. Ya que un metro y medio con un super modulo
no es razonable.
Si Vd. sabe sí existe otra manera me hará un gran favor en decírmelo
Con las gracias anticipadas, le saludo muy atentamente. Joaquin.
Si, es interesante, ya me lo comunica por aqui y no se me ocurre otra cosa si no hago yo mismo la experiencia pero ahora mismo el Bt lo tengo algo abandonado.
Una pregunta amigo. Si yo uso el comando AT+CON y la mac el bluetooth hm18 y hm19 se emparejan, pero en el momento que se queda sin alimentación y vuelvo a conectar ya no se empareja más, se que en los HC05 es el comando AT+BIND pero en estos no se que comando usar para que se conecte nada más enchufarlo a la corriente. Puede ayudarme?
Gracias
Gracias por tu comentario. Puedes probar con AT+CLEAR, y despues otra vez con AT+CONN. Al ser BLE 5, puede que se este conectando a un Iphone o un ordenador Mac que tengas cerca como me ocurrió a mi.
Te puedo comentar que actualmente estoy utilizando los módulos Lora “e32 ttl-100 , en baja potencia que no dan problema de emparejamiento aunque no tienen la misma velocidad en el aire que los modulos BT.
Un saludo