物联网 (IoT) 是由互连的物理设备组成的一个全球化系统,这些设备通过互联网传送数据,而且 IoT 正在改变着我们的生活和工作方式。IoT 设备已在各行各业得到广泛应用,这些行业包括医疗保健、制造、汽车、零售、建筑自动化等等。许多企业正在利用来自互连设备的数据提高运营效率,改善提供给客户的价值和体验。随着采用 IoT 解决方案的快速增长,并且互连设备数量已达数十亿,因此对能熟练使用 IoT 解决方案的开发人员的需求也在不断增长。
想紧紧抓住 IoT 机会的开发人员,应掌握一系列有关主题领域涉及的关键技能,其中包括:
- 硬件
- 网络
- 应用程序设计
- 应用程序开发
- 安全性
- 商业智能和数据分析
- 机器学习和人工智能(AI)
1. 硬件
IoT 的核心是数十亿个互连的“事物”或设备,它们与用来感知和控制物理设备的传感器和执行器相连。为这些设备开发硬件需要电气工程方面的技能,而物理设计则需要工业设计和 CAD 技能。
除了需要网络连接来传输收集的数据之外,这些设备通常还需要具备一些基本的处理和存储能力,这些能力由微控制器或单芯片系统 (SoC) 集成电路提供。IoT 设备是嵌入式设备,因此每个设备的电路设计必须考虑到操作局限性,
比如:
- 环境条件
- 与设备相连的传感器和执行器的类型和数量
- 要收集和传输的数据量
- 设备的大小、功率和范围
- 单位成本
- 其他
IoT 设备可利用商用的微控制器平台(比如 Arduino)或单板计算机(比如 Raspberry Pi)来设计原型,然后在后续阶段开发定制的印刷电路板 (PCBs)。使用这些平台设计原型需要掌握电路设计和微控制器编程技能,还需要熟悉硬件通信协议,比如常用来在微控制器与相连的传感器和执行器之间进行通信的串行、I2C 或 SPI 协议。嵌入式程序通常是使用 C++ 或 C 开发的,而在 IoT 设备原型设计方面,Python 和 JavaScript 变得更受欢迎。
2. 网络
连接是 IoT 的另一个重要方面。它使设备之间能够相互通信,还使得设备能够与在云中运行的应用程序和服务进行通信。由于互连设备的巨大数量和网络设计决策可能造成的大规模影响,网络设计和管理是 IoT 中必不可少的技能。例如,网格网络是一种非常容易扩展且可靠的网络拓扑设计,IoT 中通常会采用它;但是,网格网络的分布式性质使系统变得更复杂,也增加了网络中每个设备的延迟和功耗需求。
除了网络设计之外,开发人员还应掌握网络标准、协议和技术方面的实用知识。这些知识包括客户端应用程序中使用的 wifi、低功耗蓝牙、Zigbee、蜂窝和 RFID 技术,以及 LoRa 等低功耗广域网 (LPWAN) 技术。LPWAN 还包括 SigFox 和 NB-IoT(窄带 IoT),它们提供了更低成本、更低功耗、更长距离的无线连接,更适合大规模的工业级 IoT 应用。
3. 应用程序设计和开发
Web 和移动应用程序支持用户界面来与 IoT 设备进行交互,并使用来自这些设备的数据。但是,IoT 设备可能也拥有自己的用户界面 (UI)。基于语音和手势的界面在 IoT 应用中很受欢迎,尤其是对于家庭自动化,与此同时,增强现实接口为覆盖整个物理世界的 IoT 数据提供了令人兴奋的可能性。因此,UI 和 UX 设计技能是 IoT 领域目前最热门的技能。
Web 和移动应用程序是使用高级语言开发的,其中 Java、Swift 和 Node.js 是开发 IoT 应用程序的最主要语言。GPS 编程技能尤为重要,因为包括可穿戴设备和智慧汽车在内的许多 IoT 应用都需要感知位置。开发人员应时刻关注可用来快速构建原型的新兴框架和开发工具包,以及一些 IoT 平台,这些平台提供了基础架构和工具来帮助自动化 IoT 应用程序的构建、部署、管理和操作。
4. 安全性
Security for IoT安全性是 IoT 中最重要的问题之一。必须在系统设计的每一步内置安全保护,而不是在事后进行添加。与安全性密切相关的关键问题包括数据伦理、隐私和责任。
IoT 安全性比较大的挑战是需要保护:
- 对设备及其数据的物理和网络访问
- 与设备进行通信的应用程序和服务
- 网络本身
每天连接的新设备达数百万个,这使潜在的攻击点数量与日俱增。遭到侵害的 IoT 设备被用于发动分布式拒绝服务 (DDoS) 攻击。但是,一旦设备不受控制,如果没有建立安全和设备管理实践或安全基础架构,则很难部署固件更新来修复安全问题。
在如此紧迫的形势下,安全工程技能开始在 IoT 中备受关注。这些技能包括威胁评估( threat assessment)、伦理黑客攻击(ethical hacking)、加密以保证数据完整性、保护网络架构和应用程序,以及事件监控、活动记录和威胁情报(threat intelligence)。
5. 商业智能和数据分析
随着 IoT 设备传输数据的数量增加,大数据变成了真正巨大的数据。开发人员需要一流的数据管理技能,才能安全可靠地获取、存储和查询源自这些设备的海量异构数据(heterogeneous data)。
许多 IoT 设备会生成延迟或时间敏感的数据,所以必须筛除或丢弃无关数据。IoT 开发人员应掌握的关键的数据分析技术和平台包括 Hadoop、Spark,以及 MongoDB 等 NoSQL 数据库。
6. 机器学习和人工智能(AI)
为了提供价值并理解 IoT 设备生成的海量数据,IoT 开发人员最后还必须掌握机器学习和 AI 技能。智能大数据分析涉及到应用从数据挖掘、建模、统计、机器学习和 AI 中获得的认知计算技术。可将这些技术实时应用于传感器数据流上,以便执行预测分析或自主决策来响应传入的数据,也可以将它们应用于历史数据,以便识别数据中的模式或异常。
您准备好开始开发 IoT 解决方案了吗?
开发 IoT 应用程序所涉及的技术正在迅速演化。开发人员应准备好培养各种各样的技能,保持敏捷并乐于适应新流程、平台和工具。