【鸟哥杂谈】物联网体系知识梳理
- 3.总结
1.前言
今天不教知识,纯粹属于博哥个人杂谈所想,如有不同看法可忽略。
最近博哥在进行一对一物联网体系知识付费教学培训,发现了很多初学者容易出现的一些误区:
- 1、很多初学者容易陷入
身在深林,只知一木
的错觉,很容易在没有理解整个体系结构的基础上就深入其中学习某一点知识。- 2、很多初学者以为硬件就是物联网整个全部,容易忽略后端整个业务逻辑或者无从下手。
- 3、一些参加物联网比赛的同学,对于分工方面没有一个合适的分工。
- 4、一些阅读esp源码的时候无从下手
…
针对这些问题,博哥根据自己对于物联网的理解以及知识教学所整理的资料,给出一些自己的想法。
2.物联网体系知识
在我们常见的场景中,结合硬件可以区分为好几类:
- 蓝牙(经典蓝牙 & Ble低功耗蓝牙)
- 网络(局域网 & 广域网)
2.1 经典蓝牙
这个场景下。
- 核心就是经典蓝牙协议
Bluetooth 2.0 2.1
(虽然现在慢慢用得少了)。 - 关键角色一般包括 实现了经典蓝牙协议的手机APP & 微信小程序(这两者相对用得比较多)、ESP32经典蓝牙、单片机+经典蓝牙模块等等
经典蓝牙模块代表:
-
HC-05
与HC-06
蓝牙串行端口通讯模块
所以这里就引申出几个学习的方向:
- 经典蓝牙协议
- 实现一个经典蓝牙协议的 手机APP & 微信小程序
- 经典蓝牙模块
参加比赛的条件下,也能按照上面几个方向去组成合适的团队。
2.2 Ble低功耗蓝牙
这个场景下。
- 核心就是蓝牙Ble协议(目前主流)。
- 关键角色一般包括 实现了蓝牙Ble协议的手机APP & 微信小程序(这两者相对用得比较多)、ESP32Ble、单片机+Ble蓝牙模块等等
所以这里就引申出几个学习的方向:
- 蓝牙Ble协议
针对ESP32 Ble,博哥讲述了一些知识
- 实现了蓝牙Ble协议的 手机APP & 微信小程序
- Ble蓝牙模块
经典代表
- 目前市场中SKYLAB的BLE蓝牙模块主要是基于
Nordic
方案的蓝牙模块
参加比赛的条件下,也能按照上面几个方向去组成合适的团队。
2.3 物联网网络模型
不管是蓝牙还是网络,有一个概念虽然简单但是非常重要。client/server模型:
客户端发起请求,服务器响应请求。而在博哥看来,物联网网络模型可以用以下图来概括:
区分为三个端:
- 硬件设备端
- 后台服务端
- UI展示端
它们之间的数据传输通过tcp/ip协议
进行。我们接触比较多的就是应用层协议。
tcp/ip协议算是计算机网络的重中之重。
务必认真学习
。博哥也稍微写过一两篇。
每一个端都各自有自己的技术栈,参加比赛的时候也可以按照这个端去组成队伍。
2.3.1 硬件设备端技术栈
比较常见的开发方式包括:
- arduino开发
博哥所写过的相关资料:
- microphone开发
博哥所写过的相关资料:
- sdk开发(idf方式)
计划会写
- 单片机 + 网络模块
这里的单片机特指本身没有自带网络功能,比如51单片机、msp系列、stm32等等,而网络模块特指支持网络通信的模块,比如esp8266系列、esp32系列、dtu物联网卡、以太网模块等等
而如果要深入学习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开发
目前主流技术包括android、ios、flutter、uniapp,对于物联网同学来说,可能uniapp更好,基于vue,这样在学习nodejs这些前端知识的时候可以慢慢统一到web前端技术栈。
- 浏览器web页面开发(比如我们常用的Onenet可视化页面、阿里云web可视化页面等等)
对于一些不想花费太多时间的同学,可以使用Node-Red这门图形化技术,相对比较简单。而且学习门槛不高。
博哥所写过的相关资料:
3.总结
这就是博哥对于物联网体系知识的一些简单梳理,希望能解答一些同学关于学习物联网知识的疑问。并且博哥始终认为,学习物联网,千万不要只看到一张叶子,而放弃了整个森林。