您的位置:首页 > 大数据 > 物联网

构思一个面向无网络基础的,基于串口操作的,对电子工程师和单片机嵌入式友好的物联网传输控制协议:一

2018-04-03 23:23 169 查看


1          项目背景/行业现状

1.1         物联网行业当前发展迅速。NBIOT/MQTT/LORA/WIFI/BLE/4G/5G等概念火热,高通、西门子、通用、阿里、腾讯等巨头纷纷在这个领域开疆拓土,依托强大的资金、技术优势,合纵连横,期望获得进一步发展和抢占下一个技术浪潮的制高点。

1.2         物联网行业目前技术和资金壁垒高。虽然概念提出有些年份,支持物联网的技术日新月异,却一直没有形成像互联网浪潮一样对中小企业发展起到明显的推动,物联网的发展和互联网不同的地方在于,物联网的发展没有带动中小企业的发展,而是促进了行业巨头的发展。因为对于工业物联网来说,真正有实力进行物联网化和智能化、工业4.0的企业,全部都是行业巨头,中小企业尤其是小微企业,由于技术和资金等问题,几乎无法借力物联网的浪潮;而对于智能家居、消费类市场、中小企业也面临同样的问题,没有规范的协议,没有规范的技术支撑实现,没有给予草根阶层以低门槛进入和尝试的机会。

1.3         巨头有推动标准协议的行动,然而没有抓住痛点。虽然IBM发布了MQTT协议,其他互联网巨头也发布了一些简单易用的协议实现和接口,甚至ONENET/机智云/阿里云等云服务商提供了各种实现和中间件;但是坦率的说,MQTT协议的门槛仍然偏高。

理由如下:

1.3.1    对于硬件开发者来说,并没有技术基础进行APP等前端应用界面的开发。而这是硬件开发者面临的痛点和难点;云服务往往使用HTTP等重量级的协议,或者需要维护TCP协议栈;而物联网的大部分应用场景中,对硬件性能、成本、功耗各方面都有苛刻的要求,8位MCU主力担纲,简单地采集一些数据点的数据并上传即可,维护协议栈或者使用HTTP等协议难度颇大;并且对于大部分爱好者来说,也没有精力和时间去完善整个系统架构。而类似NBIOT等技术,尤其NB模组的落地应用,虽然给硬件开发者提供了简单的方式来实现数据通过网络传输的问题,却依然缺乏简单易用的云服务和APP等前端来提供支撑。

1.3.2    对于应用开发者来说,物联网的距离有点远。物联网,顾名思义是和物有关的,实现的是物理世界的数据采集、整合和分析。实现物联网应用的基础便是物理世界进行数字化,而这不可避免要和硬件打交道。而应用开发者来说,对于硬件的进入门槛甚至比硬件开发者进入APP等前端的门槛更高。

1.3.3    综合来说,现阶段物联网需要实现的阶段目标是对物理世界进行数字化。这个过程预计需要较长时间,并且不能一蹴而就。只有物理世界基本实现了数字化,才有后面的统计、分析、智能。而物理世界数字化的重担,其实是落在广大硬件开发者身上的。考虑到大部分硬件开发者的知识结构等因素,只有设计一套简单、易用的同时,能够保证稳定、可靠的传输协议,就像html之于互联网,才可以真正调动硬件开发者的积极性,一起来实现物理世界数字化的愿景。

2          本项目期望解决的问题

2.1         上文提到,现阶段的阶段目标是实现对物理世界进行数字化。而要实现这个目标,就需要广大硬件开发者,不论是资深的、刚入门的、亦或只是感兴趣的发烧友,都可以付出一点时间,即可实现对物理世界的数据数字化,网络化。同时可以让广大硬件开发者能够自己的数据自己掌握。

2.2         在初步实现物理世界数字化的目标下,进一步完善云端后台和前端,来实现数据的统计、分析,依据开发者不同的目的来使用这些数据。真正解决中小企业甚至是个人创业者面对的痛点。

3          协议需求分析

3.1         要实现上文提出的目标,我们一期任务要确定硬件设备和云端后台的数据交互协议。协议要实现的指标有:

3.1.1    基本满足简单、易用、稳定、可靠四个设计目标,同时考虑可拓展。

3.1.2    协议需要是联网方式无关的,不论是NBIOT网络、LORA低功耗广域网,还是以太网、WIFI等方式;也不论硬件工程师使用哪家的联网模块、串口服务器,都可以通过简单的移植来实现硬件设备的联网需求。

3.1.3    协议云端后台的实现需要是联网方式无关,可以任意部署的。联网方式无关,不论是基于任何网络方式,都可以实现连接云端后台。可以任意部署,意味着云端后台的实现是一个轻量的、跨平台的实现,可以进行公有云部署,也可以进行私有云部署,即使是爱好者,也可以基于树莓派,嵌入式LINUX来实现自己的云服务主机,实现自己的家庭设备的网络化和智能化。

3.2         协议实现我们规划为一个基于串口的通讯协议,以此来实现联网方式无关的目标。原因是,串口目前仍然是MCU使用最广泛的外设接口,并且异步通讯,通过匹配不同的电路接口(RS232/RS485等)可以实现与多种传感器、控制器等设备的互联互通。另一方面,MCU通过串口,可以连接各种网络模组,网络模组透传即可联网,无需电子工程师进行深度开发,解决了使用云服务需要绑定硬件平台的弊端,让硬件工程师可以从容选型,不受限制。

3.3         应用层协议基于MODBUSRTU协议,以此来实现简单、易用的指标。这样可以最大限度兼容已有的硬件设备,只需要进行简单适配和转换即可。

3.4         传输协议设计为请求/应答机制,发送端发送的数据,接收端接收后返回应答的机制,来实现数据稳定、可靠的传输。通过请求/应答机制,搭配超时重传机制,来实现数据通讯的稳定、可靠传输。并且增加加密机制,可以选择对应用层数据进行加密,来保障数据通讯安全。

4          协议文档

4.1         协议设计分为两层:传输层和应用层。其中传输层实现数据的稳定、可靠送达,请求/应答机制,超时重传等功能。应用层使用MODBUS-RTU协议,来尽量简化使用门槛。

4.2         协议名称:

消息队列控制协议(Message queue control protocol,简写为MQCP协议)

4.3         数据请求帧格式

序号

字节数

功能定义

取值

备注

1

1

帧头HEAD

0XEF

固定为0xEF

2

1

版本号VER

00~255

表示当前协议版本为第几次修改(只计算发布版本)

3

1

帧序号NUM

0~255

从第一次登录开始的帧序号,循环使用

4

4

ID

0~全F

表示当前终端的ID号,其中,1~9999留作内部测试使用,10000开始开放给用户

5

1

命令字CMD

0~0x7F

标记当前帧类型

6

2

帧长度LEN

0x0000~0xffff

表示当前帧数据区字节数量

7

0~N

数据区DATA

NA

数据帧携带的有效数据信息,(可使用内置秘钥加密)

8

1

校验CHK

0~0xff

帧头~数据区全部字节异或后取最低字节

 

4.4         数据应答帧格式

序号

字节数

功能定义

取值

备注

1

1

帧头HEAD

0XFE

固定为0xEF

2

1

版本号VER

00~255

表示当前协议版本为第几次修改(只计算发布版本)

3

1

帧序号NUM

0~255

从第一次登录开始的帧序号,循环使用

4

4

ID

0~全F

表示当前终端的ID号,其中,1~9999留作内部测试使用,10000开始开放给用户

5

1

命令字CMD

0X80+CMD

标记当前帧类型,应答帧的命令字最高位置1

6

2

帧长度LEN

0x0000~0xffff

表示当前帧数据区字节数量

7

0~N

数据区DATA

NA

数据帧携带的有效数据信息,(可使用内置秘钥加密)

8

1

校验CHK

0~0xff

帧头~数据区全部字节异或后取最低字节

 


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: