【鸟哥杂谈】物联网体系知识梳理
1.前言
今天不教知识,纯粹属于博哥个人杂谈所想,如有不同看法可忽略。
最近博哥在进行一对一物联网体系知识付费教学培训,发现了很多初学者容易出现的一些误区:
针对这些问题,博哥根据自己对于物联网的理解以及知识教学所整理的资料,给出一些自己的想法。
2.物联网体系知识
在我们常见的场景中,结合硬件可以区分为好几类:
- 蓝牙(经典蓝牙 & Ble低功耗蓝牙)
- 网络(局域网 & 广域网)
2.1 经典蓝牙
这个场景下。
- 核心就是经典蓝牙协议
Bluetooth 2.0 2.1
(虽然现在慢慢用得少了)。 - 关键角色一般包括 实现了经典蓝牙协议的手机APP & 微信小程序(这两者相对用得比较多)、ESP32经典蓝牙、单片机+经典蓝牙模块等等
所以这里就引申出几个学习的方向:
- 经典蓝牙协议
- 实现一个经典蓝牙协议的 手机APP & 微信小程序
- 经典蓝牙模块
参加比赛的条件下,也能按照上面几个方向去组成合适的团队。
2.2 Ble低功耗蓝牙
这个场景下。
- 核心就是蓝牙Ble协议(目前主流)。
- 关键角色一般包括 实现了蓝牙Ble协议的手机APP & 微信小程序(这两者相对用得比较多)、ESP32Ble、单片机+Ble蓝牙模块等等
所以这里就引申出几个学习的方向:
- 蓝牙Ble协议
- 实现了蓝牙Ble协议的 手机APP & 微信小程序
- Ble蓝牙模块
参加比赛的条件下,也能按照上面几个方向去组成合适的团队。
2.3 物联网网络模型
不管是蓝牙还是网络,有一个概念虽然简单但是非常重要。client/server模型:
客户端发起请求,服务器响应请求。
而在博哥看来,物联网网络模型可以用以下图来概括:
区分为三个端:
- 硬件设备端
- 后台服务端
- UI展示端
它们之间的数据传输通过tcp/ip协议
进行。我们接触比较多的就是应用层协议。
每一个端都各自有自己的技术栈,参加比赛的时候也可以按照这个端去组成队伍。
2.3.1 硬件设备端技术栈
比较常见的开发方式包括:
- arduino开发
- microphone开发
- sdk开发(idf方式)
- 单片机 + 网络模块
而如果要深入学习esp源码,可以在tcp/ip协议基础上去分类学习。
区分为:
- 用户层,也就是我们自己写的代码
- 中间层,一些常用的库,跟具体业务平台绑定,比如阿里云sdk、巴法云sdk、配网sdk等等
- 应用层,更多是趋向于网络协议,比如
http
、mqtt
、dns
、websocket
、ntp
以及自己自定义的协议(像onenet的edp
协议) - 会话加密层,主要是像
https
、wss
等等所涉及的ssl、tls等等 - 传输层,主要就是
tcp
、udp
协议 - 往下就是最核心的,
LwIP
,嵌入式里面非常有名的轻量化TCP/IP协议,在TCP/IP基础上针对嵌入式设备进行了裁剪定制。
这里区分了连网前、连网后所涉及的知识点,理论上不管micropython、sdk等等,核心原理都是差不多的。而我们一般更多关注的是应用层、中间层、用户层
代码。
2.3.2 后台服务端技术栈
说到后台服务,一般我们打交道最多就是巴法云、阿里云、onenet、百度华为等等第三方已经写好的,基本上照着官方文档来学习即可。不管哪个云,一般部署大多数都是mqtt服务器
或者http服务器
等等。
它们的核心在于:
逻辑处理一般就是对应的服务器代码(mqtt
、http
逻辑处理),数据存储一般就是mysql、mongdb、redis等等技术。
当你对这些熟悉之后,就可以开始写自己的后台服务器,也叫作自开发服务器。而服务器技术可能包括java、nodejs、python、go等等,但论简单易学以及物联网特性来说,nodejs算是目前博哥比较推荐的,数据库就可以使用mysql。
2.3.3 UI展示端
当你设备端有了,后台服务器也有了,那么剩下最后一个就是UI界面展示数据。
比较常见的开发方式包括:
- 小程序开发
- 手机App开发
- 浏览器web页面开发(比如我们常用的Onenet可视化页面、阿里云web可视化页面等等)
3.总结
这就是博哥对于物联网体系知识的一些简单梳理,希望能解答一些同学关于学习物联网知识的疑问。并且博哥始终认为,学习物联网,千万不要只看到一张叶子,而放弃了整个森林。