物联网(IoT)设备越来越受欢迎和可用性 - 例如智能机器人,智能恒温器和灯泡,互联网连接的车库门开启器,GoPro相机等等。这些产品的共同点是,它们可以与移动设备,互联网或两者进行无线通信。随着这些设备变得更加智能并且生成越来越多的数据,由移动设备控制或与移动设备通信的需要给开发者带来了一些困难。
实现这些无线通信的最佳现有技术是什么?物联网设备和应用程序的开发人员如何设计产品以方便用户使用?由于无线通信技术尚未完全满足物联网的需求,遗憾的是,答案很复杂。
选项
让我们忽略三种不适合大多数物联网应用的无线通信技术:红外(IR),蜂窝连接和近场通信(NFC)。
IR在翻盖手机时代很受欢迎,但今天的智能手机几乎都没有这种选择,主要是因为带宽低,距离短,并且要求设备位于彼此的视线范围内。由于需要提供SIM卡并支付订阅费,因此无法使用移动电话。NFC是短距离(<20 cm),没有多少智能手机支持它,并且带宽也很低。
对于物联网产品而言,最理想的技术必须满足消费者开箱即用,理想情况下只需最少的设置。这给我们留下了三个选项:蓝牙,Wi-Fi和蓝牙低功耗(BLE)。
蓝牙和WiFi是历史性的选择,并得到大多数智能手机的支持,但是在开发时考虑了相当具体的用例。WiFi被设想为消除LAN网络上的电线。蓝牙设计用于在计算设备(笔记本电脑,智能手机)和各种外围设备(如键盘和耳机)之间创建个人局域网(PAN),通常距离比WiFi更短。
这些连接类型都不适合物联网应用。WiFi网络依赖于TCP-IP协议,这要求每个设备获得自己的IP地址并在网络上进行身份验证。这不适用于物联网设备,其中一些设备没有用于输入WiFi密码的物理UI。WiFi网络具有非常高的数据吞吐量,但物联网设备并不总是需要这样做。同时,蓝牙需要配对每个设备,这可能会让用户感到困惑。蓝牙支持相当高的数据传输速率,但也使用相当多的能量,这不适合需要长时间运行的小型电池供电设备。
近年来,第三种连接选项已经可用于现代设备 - 蓝牙低功耗(BLE)。BLE非常适合必须在小型能源上长时间运行的设备,例如纽扣电池。今天使用BLE的设备包括从心率监测器到智能手表的智能。BLE特别适合每隔几秒钟接收一次小数据更新,例如当前心率。“配对”过程也大大简化,因为BLE设备可以随意做广告,并且多个BLE设备可以连接到中央设备,例如智能手机。BLE支持可以追溯到iPhone 4S。
大文件传输的挑战
但是BLE不是每个ioT设备或场景的答案。例如,智能手表与配对设备交换大量数据。拥有Apple Watch的任何人都会知道,有时您会无线推送超过200MB的更新。这是一种常见的误解,即手表主要依靠BLE来实现这一目标。对于像这样的高带宽传输,手表使用WiFi和蓝牙。
那么,如果您的目标是传输中等大小的文件,比如500KB图像呢?
您可以使用WiFi,很多产品都可以。GoPro创建自己的WiFi热点,亚马逊Alexa让您通过WiFi设置流程。但是您的智能手机无法同时连接到多个WiFi网络,因此它将选择家庭网络或您的物联网设备的热点。即使您的物联网设备可以充当WiFi接入点,除非该设备已连接到您的家庭WiFi网络,否则您的用户必须退出您的应用,进入设备设置,找到WiFi部分,并从列表中选择您设备的网络以临时连接到它。然后他们将不得不回到应用程序。在使用“连接”移动设备(如相机和家庭自动化工具)时,您可能至少经历过这种情况 - 这是次优的用户体验。
蓝牙怎么样?使用蓝牙3.0高速,吞吐量高达24 Mbps,因此一旦配对,发送500KB将毫不费力。这听起来不错,特别是如果电池消耗不是很大的问题。但至少对于Apple设备,必须注册Apple的MFi程序才能通过Bluetooth Classic进行串行通信。这可能成本过高,因为Apple收取许可和其他费用以换取此功能,并且从技术角度来看相当复杂。这在Android上不是问题,但大多数开发人员希望他们的设备与两个主要平台兼容。
BLE还是你最好的选择。Apple iOS设备支持开箱即用的BLE,无需注册MFI程序,许多Android设备也随BLE一起提供。要发送大型数据文件,需要将有效负载拆分为20个字节的块。在接收端,重新组合这些块。您可以在每个连接间隔发送大约四个这样的块,这可能因设备而异。Android设备支持低至7.5毫秒的间隔。iPhone 6支持30 ms范围内的连接间隔。所以从这里我们可以计算实际带宽:
按此速率,500KB的图像文件需要三分多钟才能传输。由于BLE根本不是为高传输速度而设计的,所以并没有真正的好方法,因此名称中的LE(低能耗)。如果你可以使用BLE,那么这个传输率就是你必须要忍受的。巧妙地使用数据分区,序列化和压缩可以帮助减少有效负载大小。可以想象一种情况,其中JPEG压缩图像被包装为协议缓冲区消息,然后被分解成20个字节的块并通过BLE发送。
但是,如果您的BLE传输速率对您的应用来说太慢,并且您仍然不想加入Apple的MFi计划,您会怎么做?如果您的设备具有Wi-Fi功能,BLE可以充当Wi-Fi芯片组的控制接口。您的用户可以启动应用程序,该应用程序将使用BLE指导您的设备创建Wi-Fi接入点,或者根据通过BLE连接从应用程序收到的信息连接到用户的家庭网络。一旦两个设备在同一网络上,Wi-Fi就可用于传输大块数据。
总而言之,它很复杂
如您所见,物联网设备与智能手机之间无缝无线通信的答案依赖于使用多种不同的无线通信技术。
BLE是常见的最好选择,因此请尽早添加BLE功能。稳恒的蓝牙低功耗BLE模块是个不错的选择,并且有很好的资料和服务支持。BLE非常适合需要在设备之间交换简单数据位而无需配对或任何手动连接步骤的应用。如果您不需要发送大文件,实时视频或具有其他带宽密集型数据要求,您可以在此处停止 - 只需BLE即可。
如果您确实需要发送中等大小的文件,并且您的设备可以连接到家庭WiFi网络,则可以使用BLE命令设备的Wi-Fi芯片组扫描并连接到所需的网络,而无需用户离开你的移动应用。这实现了简化的用户体验 - 理想情况下,使用户不必担心无线魔法的实际发生方式。