【IoT新星导航】物联网技术人的发展方向

目录

物联网的概念

下面是我对物联网两个方向的认识:

物联网硬件方向:

 一般路线:

        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开发
  • 数据库
  • 移动软件开发
  • 人工智能

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/483519.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】进程的进一步认识

目录 进程的创建 fork函数初步认识 fork函数的返回值 写时拷贝 操作系统怎么知道什么时候要写时拷贝的呢? fork的常规用法 fork调用失败的原因 进程终止 进程的退出场景 进程常见退出方法 正常终止(可以通过 echo $? 查看进程退出码&#xff…

Linux 常用命令 1

Tips:终端热键ctrl shift 放大终端窗口的字体 ctrl - 缩小终端窗口的字体 注意区分大小写 查阅命令帮助信息: 1)--help command –help(两个减号) 显示command命令的帮助信息 2)man man command 查阅command命令的使…

【动手学深度学习】深入浅出深度学习之PyTorch基础

目录 一、实验目的 二、实验准备 三、实验内容 1. 数据操作 2. 数据预处理 3. 线性代数 4. 微积分 5. 自动微分 四、实验心得 一、实验目的 (1)正确理解深度学习所需的数学知识; (2)学习一些关于数据的实用…

逆向爬虫技术的进阶应用与实战技巧

前言 在互联网的海洋中,数据是无价的财富。爬虫技术作为获取这些数据的重要手段,一直备受关注。然而,随着网站反爬虫机制的日益完善,简单的爬虫程序已经很难满足我们的需求。因此,掌握爬虫逆向技术,突破反爬…

智慧农业引领未来:数字乡村推动农业现代化与智能化

随着信息技术的飞速发展,数字乡村已成为推动农业现代化与智能化的重要力量。智慧农业作为数字乡村的核心组成部分,正以其独特的优势引领未来农业的发展方向。本文将从智慧农业的内涵、发展现状、面临的挑战以及未来展望等方面,探讨数字乡村如…

初始Java篇(JavaSE基础语法)(2)(逻辑控制)

个人主页(找往期文章包括但不限于本期文章中不懂的知识点):我要学编程(ಥ_ಥ)-CSDN博客 目录 逻辑控制 顺序结构 分支结构 if语句 switch 语句 循环结构 while 循环 for 循环 do while 循环 输入输出 输出到控制台 从键盘输入 …

登录与注册功能(简单版)(4)注册时使用Session校验图片验证码

目录 1、需求及实现流程分析 2、实现 1)新建register.jsp 2)导入CheckCodeUtil工具类 3)新建CheckCodeServlet 4)修改RegisterServlet 5)启动访问 1、需求及实现流程分析 验证码的作用:防止机器自动…

【Leetcode】2549. 统计桌面上的不同数字

文章目录 题目思路代码复杂度分析时间复杂度空间复杂度 结果总结 题目 题目链接🔗 给你一个正整数 n n n ,开始时,它放在桌面上。在 1 0 9 10^9 109 天内,每天都要执行下述步骤: 对于出现在桌面上的每个数字 x &am…

The plain HTTP request was sent to HTTPS port

异常信息 原因 错误信息 “The plain HTTP request was sent to HTTPS port” 表明客户端尝试使用未加密的HTTP协议发送请求到一个配置为使用加密的HTTPS协议的端口。 解决方案 要解决这个问题,需要确保使用正确的协议和端口号进行请求。应该使用的HTTPS前缀。例如…

Naive UI:一个 Vue 3 组件库,比较完整,主题可调,使用 TypeScript,快有点意思。

在当今的前端开发领域,Vue 3已成为中后台应用的首选框架。为了满足开发者的需求,各种组件库如雨后春笋般涌现。其中,Naive UI以其独特的优势,成为了Vue 3开发者的得力助手。本文将深入探讨Naive UI的特性、优势以及如何使用它来提…

【Auth Proxy】为你的 Web 服务上把锁

Auth Proxy 一个极简的用于 Web 服务鉴权的反向代理服务 Demo(密码为:whoami):https://auth-proxy.wengcx.top/ 极其简约的 UI对你的真实服务无任何侵入性支持容器部署,Docker Image 优化到不能再小(不到…

DevEco Profiler性能调优工具简介

一、概述 应用或服务运行期间可能出现响应速度慢、动画播放不流畅、列表拖动卡顿、应用崩溃或耗电量过高、发烫、交互延迟等现象,这些现象表明应用或服务可能存在性能问题。造成性能问题的原因可能是业务逻辑、应用代码对系统API的误用、对ArkTS对象的不合理持有导致内存泄露…

智慧公厕:跨界融合,打造智慧城市新名片

随着城市化进程的不断加快,公共厕所建设成为一个亟待解决的问题。传统的公厕存在着管理繁琐、卫生差、服务不到位等一系列问题,与城市发展的节奏不协调。为此,推进新型智慧公厕建设成为了一个重要的解决方案。智慧公厕的建设需要推进技术融合…

【创作纪念日】1024回忆录

不知不觉中,从创作第一篇文章到现在,已经1024天了,两年多的时间里,已经从硕士到博士了,1024,对于程序员来说,是个特别的数字吧,在此回忆与记录一下这些美好的经历吧。 缘起 很早以前…

YOLOv8-ROS-noetic+USB-CAM目标检测

环境介绍 Ubuntu20.04 Ros1-noetic Anaconda-yolov8虚拟环境 本文假设ROS和anaconda虚拟环境都已经配备,如果不知道怎么配备可以参考: https://blog.csdn.net/weixin_45231460/article/details/132906916 创建工作空间 mkdir -p ~/catkin_ws/srccd ~/ca…

Linux内核-网络代码-关键的数据结构(struct sk_buff、struct net_device)

1、struct sk_buff结构体解析 struct sk_buff:一个封包就存储在这里。所有网络分层都会使用这个结构来储存其报头、有关用户数据的信息(有效载荷),以及用来协调其工作的其他内部信息。 struct net_device:在Linux内核…

力扣-python-合并两个有序链表

题解: 这段代码是用于合并两个有序列表的递归函数,函数的输入是两个链表l1和l2,返回合并后的有序列表。具体操作是比较两个链表的头结点,将较小的头结点作为合并后的链表的头结点,并递归的将剩余的部分与另一个链表进…

unity编辑器扩展高级用法

在PropertyDrawer中,您不能使用来自GUILayout或EditorGUILayout的自动布局API,而只能使用来自GUI和EditorGUI的绝对Rect API始终传递相应的起始位置和维度。 你需要 计算显示嵌套内容所需的总高度将此高度添加到public override float GetPropertyHeig…

深入解析实时数仓Doris:介绍、架构剖析、应用场景与数据划分细节

码到三十五 : 个人主页 心中有诗画,指尖舞代码,目光览世界,步履越千山,人间尽值得 ! Doris是一款高性能、开源的实时分析数据仓库,旨在为用户提供毫秒级查询响应、高并发、高可用以及易于扩展的OLAP解决方…

P1563 [NOIP2016 提高组] 玩具谜题

题目传送门 这道题实在是一道水题 话不多说&#xff0c;上代码 #include<iostream> #include<cstring> using namespace std; struct a{int io;//in朝里 out朝外 小人的朝向 string name;//小人的名字 int number;//角色编号 }a[100000]; int main(){int n, m…