经过几十年发展,嵌入式技术已经用在了我们生活中的方方面面,但是嵌入式始终都带有小众,专业性强的属性,让很多非嵌入式领域的同学望而却步。近十几年的发展,物联网覆盖了越来越多领域,包括了家居,商业,工业,农业等领域,不仅吸引了原来嵌入式领域的同学,同时吸引了非常多非嵌入式领域的同学进入物联网领域。从上面的发展趋势,可以发现四个重要的转变:
- 物联网涉及到的技术面越来越广,对物联网开发平台的要求越来越高
- 物联网对开发者的要求发生了变化,更加强调工具和易用性
- 物联网操作系统已经突破了传统操作系统内核的范畴,开始集成越来越多的能力
- 物联网是云端一体的,有丰富的应用场景和商业模式,能够聚合更多的资源
本文将聚焦在技术,人,操作系统和商业模式这四个方面,详细说明嵌入式到物联网的转变及背后的一些思考。
“嵌入式”到“物联网”的转变
一 技术栈的转变
嵌入式和物联网技术是随着单片机,操作系统,云计算,人工智能等技术一起发展的。按照设备工作的模式,把技术的发展分为以下几个阶段:
- 设备单独工作:这个阶段是从1970年代开始,主要涉及到的技术领域包括单片机,硬件开发板,外设驱动,及上层应用。主要用于工业控制领域,比监控,设备指示等。最著名的是8位的51单片机。
- 多个设备互联工作:随着无线通信技术,如ad hoc,ZigBee(802.15.4),低功耗蓝牙的发展,嵌入式设备开始形成网络工作。主要用于智能电网,这类抄表类业务。主要涉及到的技术,除了设备单独工作阶段的技术外,增加了网络连接技术,如802.15.4,低功耗蓝牙等,嵌入式操作系统,如FreeRTOS,Contiki, TinyOS等。
- 云端一体阶段:对设备控制和管理的技术要求不断提高,和云技术的发展,越来越多的设备不仅仅需要互联,也需要连接到云端。出现了Wi-Fi模组,Wi-Fi和BT combo模组。笔者认为从这个阶段开始真正进入了物联网的阶段。通过网关技术,MQTT/CoAP等技术实现设备的连云,和能够通过手机对设备进行管理。相比于多个设备互联工作阶段的技术外,增加了更加丰富的连接技术,如MQTT/CoAP等,及云端技术,如物联网云平台等。
- 物联网智能设备:随着技术的发展,设备端不再仅仅是Wi-Fi和BT类的纯连接类智能设备,出现了前面几年特别火的智能音箱,每年亿级出货的IP Camera等智能设备。这类设备的主要特点是有了多媒体方面的要求,同时能够消耗更多的云资源,不仅仅包括了存储资源,还包括了运算,人工智能AI算法的资源。相比于上个阶段,增加了多媒体技术,流媒体网络技术,云端AI技术等,对物联网技术能力建设的开发人员技术广度和深度提出了更高的要求。
从上面的梳理,可以看到技术栈的内容越来越丰富,要求越来越高。这个时候问题就来了,这么多的技术,难道物联网的开发人员都要懂才能够做开发和创新吗?笔者的回答是当然不是,下面会详细说明笔者对物联网开发人员要求的理解。
二 开发人员的转变
笔者把物联网的开发人员分为两类,一类是物联网平台能力建设的开发人员,另外一类是基于物联网平台提供能力的开发者。
第一类开发者,需要了解整个物联网领域需要用到的技术。随着物联网技术的发展,对这类开发者提出了非常高的要求。这类开发者需要了解从设备端到云端的全链路技术,在其中找到自己的位置。如果不从云端一体的角度去体系化了解物联网技术,而是按照嵌入式的传统思维方式,随着技术的不断发展会逐渐被淘汰。这类开发者开发物联网平台的一个重要目的是吸引越来越多的第二类开发者进来,一起繁荣物联网生态。
相比于第一类开发者,第二类开发者的挑战也不小。这类开发者主要有两个来源,一个来源是传统嵌入式开发者,另外一个是互联网开发者。这些开发者都需要学习更多的知识才能够更好地基于物联网平台开发。传统嵌入式开发者需要了解更多的多媒体,云端,人工智能等技术。互联网开发者需要了解嵌入式设备上的各种限制,将云端,多媒体,AI等技术更好地工程化落地在物联网场景。
笔者觉得第一类开发者的使命是帮助越来越多的第二类开发者进入物联网领域。关键在第一类开发者实现以下两点:
- 丰富的功能组件:包含了各种硬件模组,设备端和云端软件功能模块,及配套的开发和调试工具。
- 低代码开发:Python,JavaScript脚本化语言在物联网领域的充分运用,能够极大地降低开发者门槛。
随着物联网技术的不断发展成熟,基础平台和开发工具的不断完善,笔者觉得第一类开发者会越来越少,而第二类开发者会越来越多。这样以来,物联网开发再也不像嵌入式开发只是一小部分专业开发人员的事情,学校的学生,前端开发者,产品经理,技术爱好者等,都是物联网的贡献者。
三 操作系统的转变
由于操作系统是物联网领域重要的基础型技术,且目前物联网操作系统是百花齐放,专门聊下对操作系统的思考。根据嵌入式和物联网不断发展阶段,操作系统的特征,笔者把操作系统分为以下4个阶段:
- 无操作系统:早期的嵌入式设备,由于逻辑单一,是不需要操作系统的。
- 简单操作系统:发展到多个设备互联工作阶段,出现了专门针对于物联网设备的操作系统,如Contiki,TinyOS。这类操作系统针对设备上报数据和事件设计,非常的简单,最显著的特征是基于事件驱动设计。在发生事件需要上报时,能够快速做出响应,编程逻辑也是按照此思路设计。
- 实时操作系统:随着嵌入式领域的不断发展,出现了针对实时领域的嵌入式操作系统,最典型的代表是FreeRTOS。这类操作系统的特点是相比于Linux实时性好,有较为全面的内核功能,但是并不是强生态,上层应用支持的很少。
- 物联网操作系统:随着物联网的出现,由于实时操作系统主要提供的是系统内核部分的能力,网络,多媒体,配网工具,及应用生态都很难满足物联网领域的要求,出现了物联网操作系统,有RT Thread, LiteOS,AliOS Things等,还包括Linux和Android。笔者认为在一段时间内,这么多的操作系统都会并存,很难被统一。主要原因是目前各芯片原厂并没有动力去做统一,他们各自选用一个合适自己的就好,无论往哪个操作系统上去主动切换,能够换来的优势都是很有限的。
有一部分观点认为,要解决物联网碎片化的问题要从统一操作系统开始,统一了操作系统就能够解决物联网的碎片化。笔者不赞同这个观点。物联网就是碎片化,这是面临的挑战,同时也是它的魅力所在。这里用一个极端的例子来论证笔者的观点。如果操作系统能够统一物联网碎片的问题,那么直接在芯片层面去统一就好了。但是很明显,基本不可能做到。做物联网操作系统的最大的价值在于通过软硬件深度结合,做到极致的性能和成本优势。既然已经有多样的物联网操作系统就让它存在,物联网的碎片化问题的解决不在操作系统。
四 商业模式的转变
本文系作者在时代Java发表,未经许可,不得转载。
如有侵权,请联系nowjava@qq.com删除。