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

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

    • 1.前言
    • 2. 纯原生开发
    • 3.网络开发
    • 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
      • 4.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协议,我们至少要有概念图:
Arduino ESP8266/ESP32常见开发技巧,解决小白疑惑点_第1张图片
在这里插入图片描述

从上到下,主要理解 TCP/IP四层协议。在Arduino ESP8266/ESP32开发过程中,经常涉及到:

  • 应用层协议, MQTT、HTTP、WebSocket、CoAP、DNS
  • 传输层协议, TCP、UDP
  • 网际层协议, IP
  • 网络访问层,主要理解 以太网(有线)802.11(无线)

整体访问图如下:

Arduino ESP8266/ESP32常见开发技巧,解决小白疑惑点_第2张图片

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

  • 发送方(简单理解为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

Arduino ESP8266/ESP32常见开发技巧,解决小白疑惑点_第3张图片

4.1.2 STA模式 + WebSocket

Arduino ESP8266/ESP32常见开发技巧,解决小白疑惑点_第4张图片

4.1.3 STA模式 + WebServer

Arduino ESP8266/ESP32常见开发技巧,解决小白疑惑点_第5张图片

4.2 云开发

4.2.1 MQTT

Arduino ESP8266/ESP32常见开发技巧,解决小白疑惑点_第6张图片

4.2.2 HTTP

Arduino ESP8266/ESP32常见开发技巧,解决小白疑惑点_第7张图片

当然,开发模型不局限于上面这几种,我们可以综合特点来互相结合使用。

比如,Websocket + Mqtt:
ESP8266开发之旅 阿里云物联网平台篇⑥ LED智能灯控制系统 全面讲解,上手一个小项目(MQTT客户端直连 + Web配网 + WebSocket局域网通信)

4.3 配网

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

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

5.总结

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

你可能感兴趣的:(Arduino ESP8266/ESP32常见开发技巧,解决小白疑惑点)