本篇主要针对初学者容易遇到的常见开发疑惑点进行思路讲解。主要分为:
纯原生开发,不涉及网络
网络开发
综合性开发
,结合纯原生开发和网络开发
2. 纯原生开发
纯原生开发就是不需要用到任何网络知识
,就当做一块普通的Arduino板子来开发,开发步骤类似于UNO或者Mega之类的。
这一块的开发内容会涉及到的知识点:
各类传感器
(经典如温湿度DHTxx
、人体红外传感器、重力传感器等)
常用电子元器件
(经典如按键、LED灯等)
复杂电子模块
(经典如继电器模块
、OLED液晶屏
、LED点阵屏、w2812
RGB模组等)
此类知识点,基本上网上都可以找到大量的学习资源。
3.网络开发从网络访问范围来看,网络开发又可以分为:
局域网开发
(某个特定范围
内的万物互连,外界无法访问
,当然我们可以搭建局域网内的服务)
广域网开发
(可以访问外界资源,基本上理解为云通信
,云包括阿里云、OneNet、百度天工、腾讯华为云等)
从ESP的工作模式来看,又可以分为;
AP开发
(ESP作为热点,其他模块连接该热点,做WiFi小车会涉及)
ESP8266开发之旅 网络篇③ Soft-AP——ESP8266WiFiAP库的使用
STA开发
(ESP作为站点,连接上其他AP,绝大部分开发都会涉及
)
ESP8266开发之旅 网络篇④ Station——ESP8266WiFiSTA库的使用
从CS(Client、Server)模型来看,又可以分为:
Client开发
典型如 ESP8266开发之旅 网络篇⑨ HttpClient——ESP8266HTTPClient库的使用、ESP8266开发之旅 网络篇⑱ WebSocket Client——全双工通信
Server开发
典型如 ESP8266开发之旅 网络篇⑪ WebServer——ESP8266WebServer库的使用、ESP8266开发之旅 网络篇⑲ WebSocket Server——全双工通信
不管是从网络访问范围还是ESP工作模式来区分,它们都离不开网络编程,也就离不开TCP/IP协议(记住,TCP/IP协议并不是指TCP和IP两个协议,而是统称网络编程中的各种协议
)。
TCP IP学习笔记① 互联网通信过程
网络开发主要会涉及到TCP/IP协议,我们至少要有概念图:
从上到下,主要理解 TCP/IP四层协议。在Arduino ESP8266/ESP32开发过程中,经常涉及到:
应用层协议,MQTT、HTTP、WebSocket、CoAP、DNS
传输层协议, TCP、UDP
网际层协议, IP
网络访问层,主要理解 以太网(有线)
和 802.11(无线)
整体访问图如下:
那么请初学者先记住重点,基本上思路都是:
发送方(简单理解为Client
)
数据包装:应用层->传输层->网络层->链路层
处理方(简单理解为Server
)
数据解包:链路层->网络层->传输层->应用层
记住,每一层都不可缺少
。
但是后面为了数据安全
,在应用层和传输层之间出了0.5层,叫做SSL层
。
ESP8266开发之旅 进阶篇⑪ 深入了解 Esp8266 Https访问
如果看到了MQTTS或者HTTPS等,就意味着它们经过了SSL。
我们可以得出常用的协议流转:
MQTT通信
层说明:MQTT(应用层)/MQTTS(应用层+SSL层) -> TCP(传输层) -> IP(网络层) -> 链路层
深入学习Arduino PubSubClient MQTT库
深入学习Arduino Adafruit_MQTT库(初学者不再惧怕Arduino MQTT)
ESP8266开发之旅 网络篇⑦ TCP Server & TCP Client
HTTP通信
层说明:HTTP(应用层)/HTTPS(应用层+SSL层) -> TCP(传输层) -> IP(网络层) -> 链路层
ESP8266开发之旅 网络篇⑨ HttpClient——ESP8266HTTPClient库的使用
ESP8266开发之旅 进阶篇⑪ 深入了解 Esp8266 Https访问
ESP8266开发之旅 网络篇⑦ TCP Server & TCP Client
WebSocket通信
层说明:WS(应用层) -> TCP(传输层) -> IP(网络层) -> 链路层
ESP8266开发之旅 网络篇⑱ WebSocket Client——全双工通信
ESP8266开发之旅 网络篇⑲ WebSocket Server——全双工通信
ESP8266开发之旅 网络篇⑦ TCP Server & TCP Client
DNS通信
层说明:DNS(应用层) -> UDP(传输层) -> IP(网络层) -> 链路层
ESP8266开发之旅 网络篇⑮ DNSServer——真正的域名服务
ESP8266开发之旅 网络篇⑩ UDP服务
CoAP通信
层说明:CoAP(应用层) -> UDP(传输层) -> IP(网络层) -> 链路层
ESP8266开发之旅 网络篇⑳ 物联网CoAP协议应用 —— ESP-CoAP Client
ESP8266开发之旅 网络篇⑩ UDP服务
其他协议通信
层说明:xxx(应用层) -> TCP/UDP(传输层) -> IP(网络层) -> 链路层
不管是什么应用层协议又或者是自己自定义的,最终还是逃离不了分层。
看到这里,以后就不要再说MQTT和TCP是同一层了。
4.图解常用开发模型 4.1 局域网开发 4.1.1 AP模式 + WebSocket 4.1.2 STA模式 + WebSocket 4.1.3 STA模式 + WebServer 4.2 云开发 4.2.1 MQTT 4.2.2 HTTP当然,开发模型不局限于上面这几种,我们可以综合特点来互相结合使用。
比如,Websocket + Mqtt:
ESP8266开发之旅 阿里云物联网平台篇⑥ LED智能灯控制系统 全面讲解,上手一个小项目(MQTT客户端直连 + Web配网 + WebSocket局域网通信)
在开发中我们遇到最多的需求就是配网,根据各自的情况去选择配网模式。
比如,如果需要有配套app的项目开发,可以考虑 SmartConfig
ESP8266开发之旅 网络篇⑧ SmartConfig——一键配网
如果不需要配套app,可以考虑Web Ap配网
ESP8266开发之旅 网络篇⑭ web配网
基本上以上就是我的开发经验,希望对初学者有帮助。