基于NRF24L01+无线自组网标定归组的通讯协议设计和思考

基于NRF24L01+的无线自组网标定归组的通讯协议设计和思考


ALGORITHM DESCRIPTION:

在面对不定数量的测量模块并且物理地址随机的情况下,如何进行快速组网并进行标定归组?
我们都知道在集合排队时,当教官下达排队指令时,有的人反应较快,能够迅速做出回应,但是也有的人反应较慢,动作稍微有些迟缓。但是最终都能形成队列。

基于上述现象原理,现提出一种快速组网并且进行标定归组的算法。

DATA FORMAT:

说明 信号类型(1Byte) 根地址(1Byte) 一级地址(1Byte) 二级地址(1Byte) 器件地址(4Byte) 当前信号频道(1Byte) 信号强度(1Byte) 跳频信号频道(1Byte) 功能码(1Byte) 数据(4Byte) 预留位(3Byte) 校验值(1Byte)
广播信号 0x00 0x00 0x00 0x00 0x00 1Byte 1Byte 1Byte 0x00 0x00 0x00 1Byte
响应信号 0x88 0x00 0x01~0xFF 0x00~0xFF 4Byt 1Byte 1Byte 1Byte 0x00 0x00 0x00 1Byte
确认信号 0xFF 0x00 0x01~0xFF 0x00~0xFF 4Byt 1Byte 1Byte 1Byte 0x00 0x00 0x00 1Byte
跳频信号 0x0A 0x00 0x01~0xFF 0x01~0xFF 4Byt 1Byte 1Byte 1Byte 0xA1 0x00 0x00 1Byte
查询信号 0xA0 0x00 0x01~0xFF 0x01~0xFF 4Byt 1Byte 1Byte 1Byte 0xA2 0x00 0x00 1Byte
数据信号 0xAA 0x00 0x01~0xFF 0x01~0xFF 4Byt 1Byte 1Byte 1Byte 0xA4 4Byte 0x00 1Byte

PROTOCOL DESCRIPTION:

广播信号:
1. 根节点主机在固定的间隔时间内发送的自组网信号;其中广播信号中包括信号类型、根地址、当前信号频道、实时信号强度、跳频信号、功能码(用于广播信号发送计数)和校验值。(其他为0x00)接收到的第一个从机信号后,立马将它归为根地址为0x00,一级地址为0x01,二级地址为0x02,其他的不变,并保存下来;对于其他的从机信号要求确立为一级节点的,根据一级节点的主机数量而定,超过额定数量的予以驳回或不予理会。
2. 节点从机在接受到广播信号后,对信号类型进行检查;当为广播信号时,检查自身的一级地址和二级地址是否为0,不为0时,忽略剩余广播信息,并发出已配置地址信号;为0时,则自身给自己分配一个一级地址和二级地址并附加随机延时,回传响应信号给根节点主机,并得到确认信号确认,并且保各自都要有保存备份。(地址分配由低到高)
响应信号:
1. 根节点主机接收到从机返回的信号;其中响应信号中包括信号类型、根地址、一级地址、二级地址、物理地址、当前信号频道、信号强度、跳频信号频道和校验值。(其他为0x00)
2. 节点从机在接收到广播信号后,自身给自己分配一、二级地址后,经过随机延时发送的的信号。
确认信号:
1. 根节点主机在一个广播信号周期内接收到响应信号后,对标定归组信息检查无误后,对相应的物理地址的从机发出确认信号;其中确认信号中包括信号类型、根地址、一级地址、二级地址、物理地址、当前信号频道、信号强度、调频信号频道和校验值。(其他为0x00)
2. 节点从机接收到确认信号后,检查自身是否符合确认信号中的物理地址并作出相应的动作,否则忽略该确认信号。得到确认信号的节点从机,发出已经组网完成信号,并自动忽略往后的组网、响应和确认信号。
调频信号:
1. 根节点主机完成对信号强度的检测,并决定是否进行调频操作,此模式只在组网完成后才能进行操作。
查询信号:
1. 根节点主机对相应一、二级地址的从机下发数据查询指令;
2. 节点从机接收到查询信号后,回传数据信号给根节点主机,此模式只在组网完成后才能进行操作。
数据信号:
1. 根节点主机接收到数据信号后,将有效数据存入缓存区;
2. 节点从机返回的采集数据信号,此模式只在组网完成后才能进行操作。


ADDITIONAL INFORMATIONS:

问题难点: 1. 由于根节点主机发送的所有信号,其他从机都能够接收到,为了避免通讯冲突,从机发送响应信号时引入了随机延时的机制,让响应信号有了先后之分,但是仍然有可能导致个别从机的延时时间是一样的。 2. 由于根节点主机和所有的节点从机通讯的频道相同,是否会因为节点从机的数量过多会引起通讯质量下降? 3. 在当前通讯频道的信号强度弱的情况下,主机如何控制所有从机切换频道,进行跳频操作? 4. 是否在根据一、二级地址和物理地址的基础上,进行频道的分组? 5. 如何确定从机地址的唯一性?