IoT时代:Wi-Fi“配网”技术剖析总结
导读
近年来,物联网市场竞争激烈,从物联网平台厂商,设备生产商,到服务提供商,都在涌入这片红海。预计到2020年,全球联网设备数量将达到260亿个,年复合增长率达到20%;全球联网设备带来的数据将达到44ZB,这一数据将是2012年的22倍,年复合增长率48%。
cdn.xitu.io/2019/8/22/16cb74e1f9ddce36?imageView2/0/w/1280/h/960/format/webp/ignore-error/1">
物联网时代对网络的需求
物联网系统层次
物联网系统从架构上划分为三个层次:感知层、网络层、应用层:
-
感知层:解决的是人类世界和物理世界的数据获取问题,由各种传感器以及传感器网关构成。该层被认为是物联网的核心层,主要是物品标识和信息的智能采集,它由基本的感应器件(例如RFID标签和读写器、各类传感器、摄像头、GPS、二维码标签和识读器等基本标识和传感器件组成)以及感应器组成的网络(例如RFID网络、传感器网络等)两大部分组成。该层的核心技术包括低速和中高速短距离传输技术、自组织组网技术、协同信息处理技术,传感器网络中间件技术等,涉及的核心产品包括传感器、电子标签、传感器节点、无线路由器、无线网关等。
-
传输层:也被称为网络层,解决的是感知层所获得的数据的接入和传输功能,是进行信息交换、传递的数据通路。物联网传输层分为有线通信传输层和无线通信传输层。有线通信技术包括中长距离的广域网络和短距离的现场总线;无线通信层分为长距离的无线局域网、中短距离的无线局域网和超短距离的无线局域网。而由于物联网的网络层承担着巨大的数据量,并且面临更高的服务质量要求,物联网需要对现有网络进行融合和扩展,利用新技术以实现更加广泛和高效的互联功能。
-
应用层:也可称为处理层,解决的是信息处理和人机界面的问题。网络层传输而来的数据在这一层里进入各类信息系统进行处理,并通过各种设备与人进行交互。处理层由业务支撑平台(中间件平台)、网络管理平台(例如M2M管理平台)、信息处理平台、信息安全平台、服务支撑平台等组成,完成协同、管理、计算、存储、分析、挖掘、以及提供面向行业和大众用户的服务等功能,典型技术包括SOA技术、海量存储、分布数据处理、数据挖掘、信息管理等先进技术可被广泛采用。
在各层之间,信息不是单向传递的,可有交互、控制等,所传递的信息多种多样,包括在特定应用系统范围内能唯一标识物品的识别码和物品的静态与动态信息。
尽管物联网在环境监测、智能电力、智能交通、工业监控、智能家居等经济和社会各个领域的应用特点千差万别,但是每个应用的基本架构都包括感知、传输和应用三个层次,各种行业和各种领域的专业应用子网都是基于三层基本架构构建的。
物联网接入协议与传输协议的区别
我们将物联网通信协议分为两大类,一类是接入协议,一类是传输协议:
接入协议一般负责子网内设备间的组网及通信,接入协议大多都不属于TCP/IP协议族,只能用于设备子网(设备与网关组成的局域网)内的通讯;传输协议主要是运行在传统互联网TCP/IP协议之上的设备通讯协议,负责设备通过互联网进行数据交换及通信。
采用接入协议的物联网设备,需要通过网关进行协议转换,转换成通讯协议才能接入互联网。而采用通讯协议的物联网设备,则可以直接接入互联网。
常用的接入协议包括Wi-Fi、RFID、NFC、ZigBee、Bluetooth、LoRa、NB-IoT、GSM、GPRS、3/4/5G网络、Ethernet、RS232、RS485、USB等等;常用的通讯协议包括HTTP、CoAP、MQTT、XMPP、AMQP、JMS等。接入协议位于网络层次架构中的物理/数链层,通讯协议位于应用层。
物联网接入协议和通讯协议区别如下:
那么,既然有了可以直接接入互联网的通讯协议,那么接入协议的意义何在呢?接入协议的优势说起了,相对于通讯协议,接入协议所依赖的硬件资源要求更低,功耗更低,网络传输的数据量也更小,因此,在控制领域等一些场景中更具优势。
这些场景中,物联网设备往往没有外接电源,因此要求功耗尽可能低,比如,一节纽扣电池能够供电一年左右。这样的要求是HTTP等协议的所需的硬件环境难以胜任的。
常用的几种物联网接入协议
目前市场上常见的接入协议有ZigBee、蓝牙以及Wi-Fi协议等:
- ZigBee目前在工业控制领域应用广泛,在智能家居领域也有一定应用。它有以下主要优势:
①低成本:ZigBee协议数据传输速率低,协议简单,所以开发成本也比较低。并且zigbee协议还免收专利费用。
②低功耗:由于ZigBee协议传输速率低,节点所需的发射功率仅1mW,并采用休眠+唤醒模式,功耗极低。
③自组网:通过ZigBee协议自带的mesh功能,一个子网络内可以支持多达65000个节点连接,可以快速实现一个大规模的传感网络。
④安全性:使用crc校验数据包的完整性,支持鉴权和认证,并且采用aes-128对传输数据进行加密。
ZigBee协议的最佳应用场景是无线传感网络,比如水质监测、环境控制等节点之间需要自组网以相互之间传输数据的工业场景中。在这些场景中ZigBee协议的优势发挥的非常明显。目前国内外很多厂商也将ZigBee运用在智能家居方案中。
- 蓝牙协议大家都非常熟悉了,特别是随着蓝牙4.0协议推出后发展迅速,目前已经成为智能手机的标配通信组件。蓝牙4.0之所以在近几年发展迅速,主要有以下两点原因:
①低功耗:我认为这个是蓝牙4.0的大杀器,使用纽扣电池的蓝牙4.0设备可运行一年以上,这对不希望频繁充电的可穿戴设备具有十分大的吸引力。当前基本世面上的可穿戴设备基本都选用蓝牙4.0方案。
②可手机接入:近年来支持蓝牙协议基本成为智能手机的标配,用户无需购买额外的接入模块。
-
Bluetooth最大的优点是不依赖于外部网络、便携、低功耗。只要有手机和智能设备,就能保持稳定的连接,走到哪连到哪。所以大部分运动和户外使用的设备都会优先考虑Bluetooth。它的主要不足是:不能直接连接云端,传输速度比较慢,组网能力比较弱。
-
Wi-Fi协议和蓝牙协议一样,目前也得到了非常大的发展。由于前几年家用Wi-Fi路由器以及智能手机的迅速普及,Wi-Fi协议在智能家居领域也得到了广泛应用:
①Wi-Fi可以直接接入互联网:相对于ZigBee,采用Wi-Fi协议的智能家居方案省去了额外的网关,相对于蓝牙协议,省去了对手机等移动终端的依赖。
②Wi-Fi最大的优点是连接快速、持久、稳定,它是IoT设备端连接的首选方案,唯一需要考虑的是智能设备对Wi-Fi覆盖范围的依赖导致smart devices的活动范围比较小,不适合随时携带和户外场景。
相当于蓝牙和ZigBee,Wi-Fi协议的功耗成为其在物联网领域应用的一大瓶颈。但是随着现在各大芯片厂商陆续推出低功耗、低成本的Wi-Fi soc(如esp8266),这个问题也在逐渐被解决。
何谓“配网”
WIFI的 “联网”和“自动联网”
- 连网:一般指的是Wi-Fi设备通过SSID和密码来连接热点AP或路由器,以加入后者所建立的网络的过程。
- 自动连网:一般指的是Wi-Fi设备在启动、掉线、或扫描到特定的SSID后,会使用之前保存的SSID与密码,自动连接热点AP或路由器,而不需要手工重新输入。其中,WIFI设备掉线后的“自动连网”,又常常被称为“自动重连”。
- 自动连网:一般需要在之前配网成功后,将SSID和密码进行保存,以便在需要“自动连网”时可以从保存的地址读取出来使用。
Wi-Fi的“配网”
“配网”指的是,外部向Wi-Fi模块提供SSID和密码,以便Wi-Fi模块可以连接指定的热点或路由器并加入后者所建立的相关Wi-Fi网络。
Wi-Fi模块一般不像电脑手机或平板等设备,有丰富的人机交互界面,可以方便的实现配网,因此,Wi-Fi模块的“配网”方式支持,会成为Wi-Fi模块特性的一个基本话题。
能提供方便、灵活多样、条件约束少的配网方式,常常成为Wi-Fi模块的卖点之一,更是Wi-Fi模块的使用者,在选型时需要慎重考虑评估的一个重要方面。
Wi-Fi常用配网方式及原理实现
常见的配网方式,可归为如下几大类:直接配网、WPS配网、WEB配网、SoftAP配网、智能配网配网、声波配网。用户可以根据具体的使用场合选择各种最适合的配网方式。
直接配网
所谓直接配网,就是通过UART串口、SPI口、SDIO口、I2C等主机接口,按照一定的通信协议,将SSID和密码,直接传递给WIFI模块。Wi-Fi模块在收到SSID和密码后去连接热点或路由器,并将连接的结果从主机接口返回。目前斑马车机采用的这种方式连接盯盯拍。
例如,常见的通过UART串口AT指令配网、SPI API函数配网、SDIO API函数配网、I2C API函数配网等。
直接配网方式软件方案实现简单,但需要铺设其他的通信线路,比较适合于板载WIFI模块,或有其他协议传输线连接的设备间。因此对于环境要求比较高,需要在系统间有其它的通信链路存在。
WPS配网
路由器中WPS是由Wi-Fi联盟所推出的全新Wi-Fi安全防护设定(Wi-Fi Protected Setup)标准,该标准推出的主要原因是为了解决长久以来无线网络加密认证设定的步骤过于繁杂艰难之弊病。WPS用于简化Wi-Fi无线的安全设置和网络管理。它支持两种模式:个人识别码(PIN)模式和按钮(PBC)模式。
这种方式需要模块支持WPS功能。使用者往往会因为步骤太过麻烦,以致干脆不做任何加密安全设定,因而引发许多安全上的问题。因为安全性的缘故,近几年已经逐步被放弃,越来越多的路由器开始放弃或者自动关闭对这种方式的支持。
WEB配网
在支持AP模式的Wi-Fi模块上内嵌一个简易的WEB服务器,在WEB网页里提供了配网的交互接口。其他网络设备(例如手机、平板、电脑等)直接连接上Wi-Fi模块的AP热点,在浏览器上打开该WEB网页,在WEB网页里配置该Wi-Fi模块去连接其他的AP或路由器。
归因于近年来越来越多的Wi-Fi芯片解决方案都开始支持STA+AP混合模式(即WIFI模块不仅可以作为工作站STA使用去连接其他路由器或热点,同时本身也可以作为一个热点AP供其他WIFI设备节点来连接),也归因于近年来许多Wi-Fi芯片解决方案越来越高的集成度可以将TCP
IP协议栈直接集成在Wi-Fi模块上,因此,可以简单地在Wi-Fi模块上直接实现一个WEB服务器,且这个服务器可以通过Wi-Fi模块的AP模式直接访问(不需要依赖其他网络,手机等设备直接访问WIFI模块自建立的Wi-Fi网络和WEB网页,进行配置)。
这种配网方式的基本思想是,Wi-Fi模块工作在STA+AP混合模式并启动内嵌的WEB服务器,电脑手机或平板等Wi-Fi设备连接WIFI模块所建立的AP热点,并获取得到一个IP地址(即:加入了这个Wi-Fi模块的热点AP模式所建立的Wi-Fi局域网),然后电脑手机或平板等Wi-Fi设备通过其上标配的浏览器访问Wi-Fi模块上的WEB服务器,在打开的WEB网页中,完成各种配置,包括设置Wi-Fi模块在STA模式下去链接第三方热点或路由器的SSID和密码,让WIFI模块作为STA去连接其他热点AP或路由器。
SoftAP配网
SoftAP配网方式在小米智能家居产品中被广泛应用。其原理是在Wi-Fi网络中另外启动TCP服务,通过TCP进行SSID和密码的配置,使智能硬件接入到指定的路由器。
在机器复位后,首先智能硬件会工作在Wi-Fi的AP模式,且开启TCP服务器,进入监听状态。
在此时,使用手机接入该AP热点,连接成功后,打开客户端,手机会去连接TCP服务器,三次握手连接成功后,则传输协议数据,内容包括指定智能硬件将要连接的Wi-Fi的SSID和密码。
硬件成功接收到手机发来的数据包解析得到Wi-Fi名字和密码。回复手机正在尝试连接了。关闭AP模式,开启station模式连接路由器,成功连接到指定的路由器。然后手机切回到指定路由器并开启UDP通讯,智能硬件用UDP协议广播配网成功数据。
智能配网(SmartConfig/SmartConnection....)
所谓智能配网,就是使用Wi-Fi设备本身自带的WIFI信号,在MAC层将SSID和密码按照一定的协议格式填充在MAC包中不加密的包头部分,采用广播和抓包方式,从手机等设备将SSID和密码分段多次传递给WIFI模块。
目前市面上常见的多种SmartConfig/SmartConnection技术,虽然各个Wi-Fi芯片方案会取不同的英文名字,但是基本原理则基本相同,只是填充的数据协议格式稍有区别。
智能配网一般需要在发送SSID和密码的设备(例如手机)上安装一个APP,该APP实现了和Wi-Fi模块之间的协议交互(发送SSID和密码)。
这个功能最早是TI提出并应用于CC3200上;不过从原理上讲,只要芯片驱动支持开启混杂模式(Wi-Fi Promiscuous),就可以支持一键配网功能,只是各个厂家叫法及实现编码方式不同而已。
SNAP:格式数据包
DA:目标MAC地址
SA:源MAC地址
LENGTH:表示后面数据的长度
LLC:表示LLC头
SNAP:表示3byte的厂商代码和2byte的协议类型表示
DATA:载荷数据
FCS:帧检验序列
由于无线数据传播必定是广播的,所以必然可以被监听到;如果AP没有加密的话,UDP直接可以把相关的信息发送出来.但是路由器AP一般都是加密的,而且加密方式不固定。
Wi-Fi模块在无法直接解析出数据包。从802.11的MAC层帧格式中可以看到, 链路层载荷数据(即网络层头部及网络层数)在数据帧中是清晰可辨的, 只要接收到802.11帧就可以立刻提取出载荷数据, 计算载荷数据的长度自不用说, 而这里的载荷数据, 通常就是密文。
在发送端,可以采用2种不同的编码发送方式:
- UDP广播:从802.11帧格式分析中获知,无线信号监听方的角度来说,不管无线信道有没有加密,DA、SA、LENGTH、LLC、SNAP、FCS字段总是暴露的,因此信号监听方可以从这6个字段获取有效信息.从发送方讲,由于操作系统的限制,如果采用广播只剩下LENGTH发送方可通过改变其所需要发送数据包的长度进行控制.所以只要指定出一套使用长度编码的通讯协议,就可利用数据包的Length字段进行数据传递;
- UDP组播:组播地址是保留的D类地址从224.0.0.0-239.255.255.255,IP地址与MAC地址映射关系为:将MAC地址的前25位设定为01.00.5e,而MAC地址的后23位对应IP地址的位;故发送端可以将数据编码在组播ip的后23bit中,通过组播包发送,接收端进行解码即可;
接收端进入一键配置功能后,Wi-Fi智能硬件从信道1开始监听路由上的数据,如当前监听信道有符合规则的数据包,就停止信道切换,停留在当前信道接收完全部数据.否则就依次切换至信道2.3.4....直到信道14后又从信道1开始继续监听依次循环;
当然,Wi-Fi智能硬件可以在开启混杂模式之前,先行扫描当前环境下存在的AP获取所有当前AP的信道,然后只对当前扫描到的信道进行依次监听,如当前环境下只存在2个路由,分别在1.6信道,只需轮流扫描channel1和channel6,这样可以提高配置效率。
声波配网
声波配网,即通过手机发出声波,将SSID、password等信息传给设备的一种配网方式。通过手机播放声波把Wi-Fi的初始化连接信息传递给智能设备,让设备识别完成Wi-Fi初始化流程建立网络连接。
一定程度上,声波传输可以理解为类似NFC的一种近场通讯技术。适用于没有触屏或触屏较小不易于信息输入,但是拥有麦克风的智能设备,如对话机器人,智能音响等。其优点是配网速度快、可人耳感知,缺点是受环境干扰较大。
实现声波配网,首先需要一套特定的算法库,算法库分手机端和设备端两部分。手机端算法库将ssid信息由字符串转化为声音信号(PCM),然后将声音信号通过音频模块播放出来。
同时,设备端录下这一段声音,然后用同一套算法库将声音信息解析出来,还原成原来的ssid信息(字符串),最后用解析到的ssid信息用于连接WIFI。
编解码可选择范围分为低频、中频、高频三种,其中低频的频率范围为2K~5K,中频的范围为8K~12K,高频的范围为16K~20K。频率越高,声音越尖锐,抗噪性能越强。
显然声波配网技术中的技术难点就是声波传输技术。而声波传输的应用其实已经很广啦:支付宝的声波支付,QQ音乐中的歌曲的声波分享,茄子快传,蛐蛐儿等。
其实原理很简单,可以近似理解为对称加密,加解密的过程大概如下所示:
仅传输ASCII可打印字符。
传输UTF-8字符串。
简单的说就是在发送端把你把要识别的字符映射成频率,然后把一个频率映射成一个音节信号(单频率的正弦波)编码成音频播放;在接收端接收到音频信号后,解析出频率,然后根据两边共同的码表找到频率对应的字符,从而解码出数据。
具体来说就是我们可以将700HZ的正弦波对应成字符'a',800HZ的正弦波对应数字'b',900HZ的正弦波对应数字'c',以此类推。那么数字串"abc"就对应成频率串就是{700,800,900},然后把这个频率串变成3个音节的正弦波音频。如果规定每个音节持续100ms,则{700,800,900}对应300毫秒的音频段。接收方录制声音,对收到的声音进行解析,识别出700HZ,800HZ,900HZ三段正弦波频率,然后查找码表,解码出的字符串就是"abc"。
声波配网主要流程如下:
- 首先,在手机(或平板等其它一代设备)输入ssid信息(或获取当前或系统保存的ssid信息),将信息由buffer编码为pcm数据;
- 将使用算法库编码出来的pcm数据通过喇叭播放出来,同时,设备端打开录音,捕获pcm数据;
- 设备端将pcm数据通过算法库解码回原来的buffer数据;
- 从数据中解析出ssid、password等信息,并将其用于连接路由器。
IOT场景下的Wi-Fi配网选择
Wi-Fi作为最适合物联网连接的技术,它可以作为物联网的粘合剂。随着连接节点的无限激增,联网设备的覆盖面和总量也将随着快速增长。其内部集成了射频收发、MAC、基带处理、Wi-Fi协议和配置信息及网络协议栈,用户利用它可以轻松实现串口设备的无线网络功能。用户在实际使用中可根据表中各配网方式的优劣选择。
高德今年发布天猫精灵高德版套装。车盒借助盯盯拍mini3行车记录仪的摄像头实现AR导航功能。在该案例中,充分考虑产品功能,论证其安全性,采用SoftAP的配网方式。