物联网这个话题,说复杂也复杂,说不复杂也不复杂,小场景小应用,大场景大应用,很多人对这个概念既模糊又清晰,基于国内大厂的物联网场景广泛应用。其实以下几个点需要关注。
1、网联、联网
万物互联,那么连接万物的是什么?是网络,让所有硬件类电子设备统统联网,怎么连接?
目前联网的方式有三种::
- 有线的网线
- 无线接收SSID
- 物联网卡是运行商的(传云端,这种卡费用低得很)
那么很多传感和控制器是没有网口的,这个时候就用到了嵌入式或单片机PCB将这些控制单元串联起来,主要就是下面讲到的,现在主流的STM32 ARM已经支持绝大多数RFC各种协议,当然如果真不支持,那就组合芯片设计PCB就行。
这个过程就是通过单片机集成电路抛出网口通讯,然后连接传感、控制单元将脉冲二进制进行转化解码,转化为ASCll再通过网口接口交互。所以嵌入式开发板就是一个网关的作用。
2、协议统筹
所有的设备、电子控制单元等都是由组合芯片,单片机等集成电路将物理现象转化为脉冲信号的过程,这个过程中规定了读取这些信号的方式,这些读取信号的方式/工具统一为协议基础,目前协议有很多(串口、MQTT、DDS、Sigfox...),PLC的、工业电子等等,所以这里需要统筹协议组,也就是封装协议包,将所有协议驱动全部打包集中起来,目前协议集中平台有Node-Red、AliOS-Things、LiteOS、IOT-DC3等,这样一来所有的协议就能统筹关联,不用再为单独的协议写代码写通讯,当让你做一些小范围的可以,没问题,批量式、密集型、协议群的话肯定是要上平台的,个人觉得低成本、推广快、好集成选Node-Red准没错,Node-Red已经集成了低代码流程化,我个人上传了一些通讯协议的封装库,直接拿来就用,也不用写代码。
3、数据储存
以前的物联网几个设备在局域网连上后把数据直接甩进局域网服务主机,不管是HTTP、还是Socket,但是这只是个人玩玩或者试验型,企业级或者服务级不可能给设备套一个服务写入局域网:
- 考虑这些数据不存在商业价值,不需要挖掘用户潜力。
- 不需要二开数据或对数据进行深度处理(大数据分析)。
所以像米家、海尔、美的等企业他们都会有自己的云端,让用户的大数据直接进云,在云端又将数据划分为实时消费型和非实时消费型,实时消费型主要面向用户在手机上直接控制设备进行实时交互。如温度调节、遥控升降等,非实时数据如用户的基本信息、设备型号信息、设备开机时间、设备异常时间等等。非常多,然后厂家对这些数据进行分析和处理,可以分析出厂家设备质量的状态、用户的习惯、用户喜好、电子元器件工作稳定性等等。这样一来对产品也好,对用户也好,掌控都是非常精准的。
4、服务
任何产品都是面向服务的,就是物联网也不例外,服务就是提供给用户层带来新奇感受、感受科技的,什么数字孪生啊,智能座舱啥的,那么服务主要基于终端的应用的方式。这里主考一个实时性RealTime,当用户触发终端的交互时,一定是低延时的进行响应,在游戏中,我们将其称为同步帧,但这种主要应用于工业级极低延迟,如果用户发起一个响应,就要在低于500ms进行响应,这样用户体验才比较乐观,不会抱怨。
但是从用户发起到云端计算再到驱动设备,这个过程的网络设计也是非常复杂的(用户并发的时候)。服务还有一个点就是多样性,如果一个产品只能有一个功能操作,那这样的产品也不具备竞争力,也没有价值导向,所以在设计时我们往往会尽量全打通传感、控制单元ECM,或者扩展额外的硬件来支撑。
Demo实践:
首先我们弄了一块嵌入式版子(个人做也不要折腾单片机C),必须有网卡驱动,IO-144,接下来我们搞一个Linux阉割版,有软件网驱的, 我们通过Linux来控制IO,找一个基于IO的温度传感器、在弄一个继电器控制小电机风扇,(原计划Node-Red写插件)Linux自带GPIO的。
做一个H5,挂在腾讯云上,然后写Python / Node 嵌入式嘛,你懂的,我用Node+SocketIO写好一个服务,它将GPIO IN的温度解码10进制实时写入MySQL,但是频率太高,于是将其改为温差1°差值写入一次约束,变化时记录一次就行,别干炸了,然后控制GPIO OUT设置为高于15°Socket就立刻发消息Message给出响应,设置响应事件为”Driver-Rlectrical”,这个时候switch(message)捕获了”Driver-Rlectrical”就启动了电机。给它吹到低于15°,这个时候电机立刻停止,延迟率33ms,比HTTP快多了。手机H5页面做了一个温度div和一个播放键的启动电机按钮,温度用的Server-Send-Event, 电机按钮用Socket Message, 腾讯云用Socket连接设备端,用户端用Socket和SSE,这样一来就将实时性加入到物联网中了。