Arduino ESP8266/ESP32常见开发技巧,解决小白疑惑点

Kamilia ·
更新时间:2024-11-13
· 761 次阅读

Arduino ESP8266/ESP32常见开发技巧,解决小白疑惑点1.前言2. 纯原生开发3.网络开发4.图解常用开发模型4.1 局域网开发4.1.1 AP模式 + WebSocket4.1.2 STA模式 + WebSocket4.1.3 STA模式 + WebServer4.2 云开发4.2.1 MQTT4.2.2 HTTP4.3 配网5.总结 1.前言

本篇主要针对初学者容易遇到的常见开发疑惑点进行思路讲解。主要分为:

纯原生开发,不涉及网络 网络开发 综合性开发,结合纯原生开发和网络开发 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(无线)

整体访问图如下:

image

那么请初学者先记住重点,基本上思路都是:

发送方(简单理解为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局域网通信)

4.3 配网

在开发中我们遇到最多的需求就是配网,根据各自的情况去选择配网模式。
比如,如果需要有配套app的项目开发,可以考虑 SmartConfig
ESP8266开发之旅 网络篇⑧ SmartConfig——一键配网

如果不需要配套app,可以考虑Web Ap配网
ESP8266开发之旅 网络篇⑭ web配网

5.总结

基本上以上就是我的开发经验,希望对初学者有帮助。


作者:单片机菜鸟哥



esp8266 esp32 esp 技巧 arduino

需要 登录 后方可回复, 如果你还没有账号请 注册新账号