目录
物联网的概念
下面是我对物联网两个方向的认识:
物联网硬件方向:
一般路线:
C语言:
单片机:
嵌入式RTOS:
嵌入式Linux:
物联网软件方向:
一般路线:
编程语言的选择与学习:
物联网软件的方面:
物联网的概念
物联网即"万物互联的网络"。"物联网"是在"互联网"的基础上,将其用户端延伸和扩展到任何物品与物品之间,进行信息交换和通信的一种网络概念。
物联网的三个字分别对应三个基础层面:
“物”——感知驱动层,也可以说是硬件层。实现了对物体的感知与操作;
“联”——网络通信层。网络就是联系万物的桥梁,实现人与人、人与物、物与物之间的相互通信;
“网”——平台服务层,也可以说是软件层。这是互联网体现最多的地方,物联网体系的管理、人机交互将在这里实现。
物联网的"物"是区别于互联网的关键,它不是指随随便便的物体,而是要满足以下条件:
- 要有相应信息的接收器;
- 要有数据传输通路;
- 要有一定的存储功能;
- 要有处理运算单元(CPU);
- 要有操作系统;
- 要有专门的应用程序;
- 要有数据发送器;
- 遵循物联网的通信协议;
- 在世界网络中有可被识别的唯一编号。
物联网的"联",目前使用的都是针对互联网的网络通信协议,相信以后会有针对于物联网的网络协议。包括MQTT、TCP/IP等协议。
物联网的"网",目前有针对物联网的平台和云平台,但是普及率还很低。人们一般都喜欢使用手机实现与物联网世界的联系,所以移动软件也是很重要的一个方面。另外,由于Web界面在电脑和手机上都可以使用,所以也很重要。
另外,人工智能、大数据、云计算技术,也对物联网的发展做出了重大贡献。
综上所述,物联网的发展方向分为智能硬件和交互软件。作为物联网人,这些方面都要了解,然后选择一个方向深入学习。
物联网的开发必须是多人合作的,因为我们不可能也没必要精通这么多的知识。
下面是我对物联网两个方向的认识:
硬件方向:硬件的更新换代速度很慢,因为硬件设备成本较高,而且对半导体技术和工业技术的依赖性很强,比如上个世纪的51系列单片机,到现在还没有淘汰,而且现在的高性能单片机的原理和51单片机差不多。所以硬件方向是“越老越吃香”。
软件方向:相对而言,软件的更新速度是非常快的,因为软件只需要数据的修改,更新成本很低,这就需要我们不断学习,才能跟上时代的步伐。
就拿编程语言排名的图像来看,如下图所示,20年以前,好几年都是Java排第一,而人们刚刚习惯Java是第一之后,python在获得5次年度编程语言后一举成为第一,而且势头远超Java。(不信的话,你可以试一下,问问其他人:你认为最火的编程语言是什么?Ta大概会脱口而出“当然是Java”)
IT行业:编程语言的使用率的改变体现这IT行业的趋势。
Python的发展得益于大数据、人工智能,这说明Python和物联网有着重要的羁绊关系。又因为物联网的发展,类C语言(C/C++/C#)也超过或即将超过Java,如下图所示。
可以看到,因为物联网的发展,Python和类C语言如日中天,这说明物联网的势头正盛!
注意!!:无论是选择软件方向还是硬件方向,作为物联网人,这些技术你都需要有一个基本的了解,不然在后面的合作中,你可能不知道对方在说什么。
物联网硬件方向:
一般路线:
正如前面所讲,硬件学习就是不断积累的过程,就是一步一步的进阶。
最实用的路线:C语言→单片机→嵌入式RTOS→嵌入式Linux。一路学到嵌入式Linux,正常情况下月薪过万。
C语言:
硬件编程使用的编程语言就是C语言,因为C对寄存器底层的操作很方便,而且占用内存低。所以学习物联网硬件,就要先会C语言。
单片机:
单片机是物联网中“物”的大脑,它实现了对物体上传感器信息的处理与汇总、将信息发送到应用层、控制物体实现各种功能。
我现在鼓励先直接使用STM32Cube生态来学习STM32单片机,不再学习51了。因为STM32Cube生态的开发方式完全颠覆了单片机开发的方式,几乎和底层的寄存器完全隔离,我们只需要知道外设的原理和配置方法就可以完成功能代码的编写。
嵌入式RTOS:
实时操作系统(RTOS)是一种专门设计用于嵌入式系统的操作系统,它能够确保任务在严格的时间限制内完成。RTOS通常用于控制机器或设备,如机器人、汽车电子、工业自动化系统等,这些系统需要快速、可靠地响应外部事件。
使用STM32Cube生态,还可以直接开发freeRTOS,这是目前最火的RTOS。熟练了STM32Cube生态,只需要很短的时间,就可以掌握freeRTOS。
嵌入式Linux:
相对于RTOS,Linux是通用型的操作系统,它更适合于用于高级的人机交互和总体控制。可以采用让一个带有嵌入式Linux的硬件开统一协调多个带有freeRTOS的硬件。这样就兼顾了实时性和高级人机交互的功能。
物联网软件方向:
一般路线:
软件的路线就很多元化了,你可以使用各种语言,向各种方面发展。但是我建议选择一个主要的语言,这样可以省下很多事。实用的路线如下:
编程语言的选择与学习→选择一个方面进行学习掌握学习模式→学习另外的方面(可以同步)
编程语言的选择与学习:
作为物联网人,我强烈建议你使用Python。
首先,Python在几乎所有方面都可以用,就算你不做物联网,精通Python,你就可以找到工作。
其次,Python主要针对数据分析和处理方面,这也是它火爆的原因。当前的大数据、人工智能、大模型等等,都是基于数据的分析和处理。而物联网的软件平台层主要的功能就是海量信息的分析和处理,也需要Python。
物联网软件的方面:
因为是互联网的衍生,所以物联网软件方面其实就是所有的软件方面,不过就是有所侧重而已。物联网软件人应该先把这些方面的基础掌握了,然后选择一个主要的方向。
- 数据分析及其可视化
- Web开发
- 数据库
- 移动软件开发
- 人工智能