本文档描述了STM32 MCU基于LoRa无线通信模块的数据传输协议。该协议用于按键事件检测和上报,电池状态监控,以及设备在线状态维护。
发送消息采用如下格式:
$XXXX<LORA7>,<E><V>#\r\n
其中:
$
: 消息起始符XXXX
: 设备MAC地址 (4字节)LORA7
: 固定设备标识,
: 分隔符E
: 事件类型代码 (ASCII字符,实际为事件类型值+48)V
: 事件数值 (ASCII字符,实际为事件数值+48)#
: 消息结束符\r\n
: 回车换行示例: $ABCDEFGLORA7,1F#\r\n
总长度: 16字节
接收消息格式与发送格式相同,MCU会检查消息中的MAC地址是否与自身MAC地址匹配,如果匹配则处理该消息。
系统支持以下事件类型:
事件类型 | 十六进制值 | 描述 | 详细消息示例 |
---|---|---|---|
VALUE_UNKOWN | 0x00 | 未知事件 | $ABCDFGLORA7,01#\r\n |
VALUE_CALL | 0x01 | 面板呼叫事件 | $ABCDFGLORA7,11#\r\n |
VALUE_CANCEL | 0x02 | 取消呼叫事件 | $ABCDFGLORA7,21#\r\n |
VALUE_NURSING | 0x03 | 护理呼叫事件 | $ABCDFGLORA7,31#\r\n |
VALUE_CB | 0x04 | 增援呼叫事件 | $ABCDFGLORA7,41#\r\n |
VALUE_UNPIN | 0x05 | 拔针事件 | $ABCDFGLORA7,51#\r\n |
VALUE_C_D | 0x06 | 更换药物事件 | $ABCDFGLORA7,61#\r\n |
VALUE_SOS | 0x07 | 紧急事件 | $ABCDFGLORA7,71#\r\n |
VALUE_HANDLE_CALL | 0x08 | 手柄呼叫事件 | $ABCDFGLORA7,81#\r\n |
VALUE_CANCEL_TO | 0x09 | 取消超时事件 | $ABCDFGLORA7,91#\r\n |
VALUE_ONLINE_FB | 0x18 | 设备在线心跳 | $ABCDFGLORA7,H1#\r\n (H=0x18+48=72) |
VALUE_BAT_LOW | 0x1C | 电池电量低事件 | $ABCDFGLORA7,L1#\r\n (L=0x1C+48=76) |
事件数值用于表示事件的附加信息:
事件数值 | 描述 |
---|---|
KEY_EVENT_0 | 0 - 默认值 |
KEY_EVENT_1 | 1 - 常用事件值 |
KEY_EVENT_3 | 2 - 备用事件值 |
设备上的物理按键与事件类型的映射关系:
物理按键 | 引脚 | 事件标记 | 实际触发事件 |
---|---|---|---|
CANCEL_KEY | PA9 | EVENT_MARK_CANCEL | VALUE_CB (增援) |
REINFORCE_KEY | PA12 | EVENT_MARK_CB | VALUE_NURSING (护理) |
NURSE_KEY | PA11 | EVENT_MARK_NURSE | VALUE_CALL (呼叫) |
CALL_KEY | PA10 | EVENT_MARK_CALL | VALUE_CANCEL (取消) |
UNPIN_KEY | PA7 | EVENT_MARK_UNPIN | VALUE_UNPIN (拔针) |
HADLE_KEY | PB0 | EVENT_MARK_HANDLE | VALUE_HANDLE_CALL (手柄呼叫) |
CHANGE_KEY | PB1 | EVENT_MARK_C_D | VALUE_C_D (更换药物) |
LoRa模块通过UART接口接收以下AT命令进行配置:
命令 | 说明 |
---|---|
AT+WORKMODE=82 | 设置为AT命令模式 |
AT+WORKMODE=81 | 设置为透传模式 |
AT+FREQ=483200000,483200000,483200000,483200000 | 设置工作频率为483.2MHz |
AT+RATE=6,6 | 设置通信速率为1868bps |
AT+ENTERSLEEP | 使模块进入休眠模式 |