【ESP32最全学习笔记(基础篇)——1.ESP32简介】
作者:mmseoamin日期:2023-12-14

          ESP32 新手?从这里开始!

关于本教程:

ESP32 基础篇                                

1.ESP32简介 ☑                                                                 

2.ESP32 Arduino 集成开发环境

3.ESP32 Arduino IDE 2.0

4.VS 代码和 PlatformIO

5.ESP32 引出线

6.ESP32 输入输出

7.ESP32 脉宽调制

8.ESP32 模拟输入

9.ESP32 中断定时器

10.ESP32 深度睡眠

ESP32 协议篇

ESP32 网络服务器

ESP32 LoRa

ESP32 BLE

ESP32 BLE 客户端-服务器

ESP32 蓝牙

ESP32 MQTT

ESP32 ESP-NOW

ESP32 Wi-Fi

ESP32 WebSocket

ESP32 ESP-MESH

ESP32 邮箱

ESP32 短信

ESP32 HTTP 获取 POST

HTTP GET Web APIs

HTTP POST Web APIs

 ESP32 服务器篇

持续更新,关注博主不迷路!!!

 ESP32 传感器模块篇

持续更新,关注博主不迷路!!!

ESP32 终极实战篇

百余项ESP32实战项目,敬请关注!!!

        ESP32 是 Espressif 开发的一系列低成本、低功耗的片上系统 (SoC) 微控制器,包括 Wi-Fi 和蓝牙无线功能以及双核处理器。如果您熟悉 ESP8266,那么 ESP32 就是它的继任者,加载了许多新功能。

【ESP32最全学习笔记(基础篇)——1.ESP32简介】,第1张

        ESP32 的新手?你来对地方了。本指南包含您开始使用 ESP32 所需的所有信息。了解什么是 ESP32、如何选择 ESP32 开发板、如何让您的第一个程序运行等等。以下是我们将在本指南中介绍的内容: 

目录

■ 介绍 ESP32

        ■ ESP32规格

        ■ ESP32与ESP8266

■ ESP32开发板

        ■ 如何选择ESP32开发板?

        ■ 什么是最适合初学者的ESP32开发板

■ ESP32开发套件DOIT

■ ESP32GPIO引脚指南

■ 如何对ESP32进行编程?

■ ESP32与Arduino IDE

■ 利用Arduino IDE将代码上传至ESP32

▲介绍 ESP32

首先,首先,什么是 ESP32?ESP32 是乐鑫自主研发的一系列芯片微控制器。

【ESP32最全学习笔记(基础篇)——1.ESP32简介】,第2张

为什么他们如此受欢迎?主要是因为有以下特点:

■ 低成本:您可以从 6 美元起购买 ESP32,这使得普通大众可以轻松获得它;

■ 低功耗:与其他微控制器相比,ESP32功耗极低,支持深度睡眠等低功耗模式状态,以节省电能;

■ Wi-Fi 功能:ESP32 可以轻松连接到 Wi-Fi 网络以连接互联网(station 模式),或创建自己的 Wi-Fi 无线网络(接入点模式)以便其他设备可以连接到它——这是对于物联网和家庭自动化项目至关重要——您可以让多个设备使用它们的 Wi-Fi 功能相互通信;

■ 蓝牙:ESP32 支持经典蓝牙和低功耗蓝牙 (BLE) ——适用于各种物联网应用;

■ 双核:大多数 ESP32 都是双核的——它们带有 2 个 Xtensa 32 位 LX6 微处理器:核心 0 和核心 1。

■ 丰富的外设输入/输出接口——ESP32支持电容触摸、ADC、DAC、UART、SPI、I2C等多种输入(从外界读取数据)和输出(向外界发送命令/信号)外设、脉宽调制等等。

■ 与 Arduino“编程语言”兼容:那些已经熟悉 Arduino 板编程的人,您会很高兴知道他们可以用 Arduino 风格对 ESP32 进行编程。

■ 与 MicroPython 兼容:您可以使用 MicroPython 固件对 ESP32 进行编程,它是针对微控制器和嵌入式系统的 Python 3 的重新实现。

ESP32 规格

如果您想了解更多技术和具体信息,可以查看以下 ESP32 的详细规格(来源:http://esp32.net/)——有关更多详细信息,请查看数据表):

【ESP32最全学习笔记(基础篇)——1.ESP32简介】,第3张

 无线连接 WiFi:  HT40 数据速率为 150.0 Mbps

蓝牙: BLE(低功耗蓝牙) 和 经典蓝牙

处理器:  Tensilica Xtensa 双核 32 位 LX6 微处理器,运行频率为 160 或 240 MHz

内存:

ROM:  448 KB(用于引导和核心功能)

SRAM:  520 KB(用于数据和指令)

RTC fas SRAM:8 KB(用于从深度睡眠模式启动 RTC 期间的数据存储和主 CPU)

RTC 慢速 SRAM:8KB(用于深度睡眠模式下的协处理器访问)

eFuse:1 Kbit(其中256位用于系统(MAC地址和芯片配置),其余768位保留给客户应用,包括Flash-Encryption和Chip-ID)

嵌入式闪存:ESP32-D2WD 和 ESP32-PICO-D4 上通过 IO16、IO17、SD_CMD、SD_CLK、SD_DATA_0 和 SD_DATA_1 内部连接的闪存。

0 MiB(ESP32-D0WDQ6、ESP32-D0WD 和 ESP32-S0WD 芯片)

2 MiB(ESP32-D2WD 芯片)

4 MiB(ESP32-PICO-D4 SiP 模块)

低功耗: 确保您仍然可以使用 ADC 转换,例如,在 深度睡眠期间。

外设输入/输出:

带 DMA 的外设接口,包括 电容式触摸

ADC(模数转换器)

DAC(数模转换器)

I²C(内部集成电路)

UART(通用异步接收器/发送器)

SPI(串行外设接口)

I²S(集成芯片间声音)

RMII(精简媒体独立接口)

PWM(脉冲宽度调制)

安全性:  AES 和 SSL/TLS 的硬件加速器

 ESP32 和 ESP8266 的主要区别

【ESP32最全学习笔记(基础篇)——1.ESP32简介】,第4张

         之前,我们提到 ESP32 是 ESP8266 的继任者。ESP32 和 ESP8266 板之间的主要区别是什么?

        ESP32 增加了 额外的 CPU 核心、更快的 Wi-Fi、更多的 GPIO,并支持蓝牙 4.2和蓝牙低功耗。此外,ESP32 带有  可用于将 ESP32 从深度睡眠中唤醒的触敏引脚,以及 内置的霍尔效应传感器。

所以,总结一下:

  • ESP32 比 ESP8266 更快;
  • ESP32 自带更多功能齐全的 GPIO;
  • ESP32 支持 18 个通道(模拟启用引脚)的模拟测量,而 ESP8266 仅支持一个 10 位 ADC 引脚;
  • ESP32支持蓝牙,ESP8266不支持;
  • ESP32为双核(大部分机型),ESP8266为单核;
  • ESP32 比 ESP8266 贵一点。

        如需更详细地分析这些开发板之间的差异,我们建议阅读以下文章:ESP32 与 ESP8266 – 优缺点。

▲ESP32 开发板

        ESP32指的是ESP32裸芯片。但是,“ESP32”一词也用于指代 ESP32 开发板。使用 ESP32 裸芯片并不容易或不实用,尤其是在学习、测试和制作原型时。大多数时候,您会想要使用 ESP32 开发板。

【ESP32最全学习笔记(基础篇)——1.ESP32简介】,第5张

        这些开发板配备了为芯片供电和编程、将其连接到您的计算机、连接外围设备的引脚、内置电源和控制 LED、用于 wi-fi 信号的天线以及其他有用功能所需的所有电路。其他的甚至带有额外的硬件,例如特定的传感器或模块、显示器或 ESP32-CAM 的摄像头。

如何选择ESP32开发板?

        一旦开始在线搜索 ESP32 开发板,您会发现有来自不同供应商的各种各样的开发板。虽然它们都以类似的方式工作,但有些板可能比其他板更适合某些项目。在寻找 ESP32 开发板时,您需要考虑几个方面:

  • USB转UART接口及稳压电路。大多数全功能开发板都具有这两个功能。这对于轻松将 ESP32 连接到您的计算机以上传代码和通电非常重要。
    • BOOT 和 RESET/EN 按钮将电路板置于闪烁模式或重置(重启)电路板。有些板子没有BOOT按钮。通常,这些板会自动进入闪烁模式。
      • 引脚配置和引脚数量。要在您的项目中正确使用 ESP32,您需要能够访问电路板引出线(就像一张地图,显示哪个引脚对应哪个 GPIO 及其功能)。因此,请确保您可以访问您所获得的电路板的引出线。否则,您可能最终会错误地使用 ESP32。
        • 天线连接器。大多数开发板都带有用于 Wi-Fi 信号的板载天线。一些电路板带有天线连接器,可以选择连接外部天线。添加外部天线可增加您的 Wi-Fi 覆盖范围。
          • 电池连接器。如果您想使用电池为 ESP32 供电,可以使用带有锂聚合物电池连接器的开发板——这样会更方便。您还可以通过电源引脚用电池为“常规”ESP32 供电。
            • 额外的硬件功能。有具有额外硬件功能的 ESP32 开发板。例如,有些可能带有内置 OLED 显示屏、LoRa 模块、SIM800 模块(用于 GSM 和 GPRS)、电池座、摄像头等。

什么是最适合初学者的 ESP32 开发板?

        对于初学者,我们建议使用 ESP32 开发板,该开发板具有大量可用的 GPIO,并且没有任何额外的硬件功能。同样重要的是,它带有常规电压和用于供电和上传代码的 USB 输入。

        在我们的大多数 ESP32 项目中,我们都使用ESP32 DEVKIT DOIT 开发板,这是我们推荐给初学者的开发板。该板有不同版本,具有不同数量的可用引脚(30、36 和 38)——所有板的工作方式都相似。

【ESP32最全学习笔记(基础篇)——1.ESP32简介】,第6张

▲ESP32 开发套件 DOIT

在本文中,我们将使用 ESP32 DEVKIT DOIT 开发板作为参考。如果您有不同的板,请不要担心。本页信息也适用于其他 ESP32 开发板。

下图显示了 ESP32 DEVKIT DOIT V1 开发板,具有 36 个 GPIO 引脚的版本。

【ESP32最全学习笔记(基础篇)——1.ESP32简介】,第7张

规格 – ESP32 DEVKIT V1 DOIT

下表汇总了 ESP32 DEVKIT V1 DOIT 开发板的特性和规格:

【ESP32最全学习笔记(基础篇)——1.ESP32简介】,第8张

        这个特殊的 ESP32 板有 36 个引脚,每侧 18 个。可用 GPIO 的数量取决于您的开发板型号。

        要了解有关 ESP32 GPIO 的更多信息,请阅读我们的 GPIO 参考指南:  ESP32 引脚参考:您应该使用哪些 GPIO 引脚?

 【ESP32最全学习笔记(基础篇)——1.ESP32简介】,第9张

        它带有一个 microUSB 接口,您可以使用该接口将电路板连接到您的计算机以上传代码或通电。

        它使用 CP2102 芯片(USB 转 UART)通过 COM 端口使用串行接口与您的计算机通信。另一种流行的芯片是 CH340。检查开发板上的 USB 转 UART 芯片转换器是什么,因为您需要安装所需的驱动程序,以便您的计算机可以与开发板通信(本指南稍后将详细介绍)。

        该开发板还带有一个 RESET 按钮(可能标有 EN)以重新启动开发板,以及一个 BOOT 按钮以将开发板置于闪烁模式(可用于接收代码)。请注意,某些板可能没有 BOOT 按钮。

        它还带有一个内置的蓝色 LED,在内部连接到 GPIO 2。此 LED 可用于调试以提供某种视觉物理输出。当您为电路板供电时,还有一个红色 LED 会亮起。

【ESP32最全学习笔记(基础篇)——1.ESP32简介】,第10张

▲ESP32 GPIO 引脚指南

        ESP32 芯片有 48 个引脚,具有多种功能。并不是所有的 ESP32 开发板的管脚都是外露的,有些管脚是不应该使用的。ESP32 DEVKIT V1 DOIT 板通常带有 36 个外露的 GPIO,可用于连接外设。

电源引脚

        通常,所有电路板都带有电源引脚:3V3、GND 和 VIN。您可以使用这些引脚为电路板供电(如果您不通过 USB 端口供电),或为其他外围设备供电(如果您使用 USB 端口为电路板供电)。

通用输入输出引脚 (GPIOS)

        几乎所有的 GPIO 都分配了一个编号,这就是您应该如何称呼它们——通过它们的编号。

        使用 ESP32,您可以决定哪些引脚是 UART、I2C或SPI您只需在代码中进行设置即可。这是可能的,因为 ESP32 芯片的多路复用功能允许将多个功能分配给同一引脚。

        如果您不在代码中设置它们,则默认配置引脚如下图所示(引脚位置可能会因制造商而异)。此外,还有一些具有特定功能的管脚,使它们适合或不适合特定项目。

【ESP32最全学习笔记(基础篇)——1.ESP32简介】,第11张

        我们有专门针对 ESP32 GPIO 的详细指南,我们建议您阅读:ESP32 引脚分配参考指南。它展示了如何使用 ESP32 GPIO,并解释了根据您的项目使用的最佳 GPIO。

        GPIO 的位置​​可能因您的电路板型号而异。然而,通常情况下,无论您使用何种开发板,每个特定的 GPIO 都以相同的方式工作(有一些例外)。比如不管是什么板子,通常GPIO5总是VSPI CS0引脚,GPIO 23总是对应VSPI MOSI进行SPI通信等。

▲如何对 ESP32 进行编程?

ESP32 可以使用不同的固件和编程语言进行编程。您可以使用:

■ Arduino C/C++ 为 ESP32 使用 Arduino 内核

■ 乐鑫 IDF(物联网开发框架)

■ MicroPython

■ JavaScript

■ LUA

……

我们首选的 ESP32 编程方法是使用 C/C++“Arduino 编程语言”。我们还有一些使用MicroPython 固件的指南和教程。

▲使用 Arduino IDE 对 ESP32 进行编程

【ESP32最全学习笔记(基础篇)——1.ESP32简介】,第12张

要对电路板进行编程,您需要一个 IDE 来编写代码。对于初学者,我们推荐使用 Arduino IDE。虽然它不是最好的 IDE,但它运行良好并且对于初学者来说简单直观。在熟悉 Arduino IDE 并开始创建更复杂的项目后,您可能会发现将VS Code 与 Platformio 扩展一起使用会很有用。

如果您刚刚开始使用 ESP32,请从Arduino IDE开始。在编写本教程时,我们建议将旧版本 (1.8.19)与 ESP32 一起使用。虽然版本 2 与 Arduino 配合良好,但仍然存在一些错误和 ESP32 尚不支持的一些功能。

安装 Arduino 集成开发环境

要运行 Arduino IDE,您需要在计算机上安装 JAVA。如果没有,请访问以下网站下载并安装最新版本:http://java.com/download。

下载 Arduino IDE

要下载 Arduino IDE,请访问以下 URL:

  • Software | Arduino

    不要安装 2.0 版本。在编写本教程时,我们建议将旧版本 (1.8.19)与 ESP32 一起使用。虽然版本 2 与 Arduino 配合良好,但仍然存在一些错误和 ESP32 尚不支持的一些功能。

    向下滚动,直到找到旧版部分。

    【ESP32最全学习笔记(基础篇)——1.ESP32简介】,第13张

    选择您的操作系统并下载软件。对于 Windows,我们建议下载“ Windows ZIP 文件”。 

    运行 Arduino IDE

    获取您刚刚下载的文件夹并将其解压缩。运行名为arduino.exe的可执行文件(下面突出显示)。

    【ESP32最全学习笔记(基础篇)——1.ESP32简介】,第14张

    Arduino IDE 窗口应该打开。

    【ESP32最全学习笔记(基础篇)——1.ESP32简介】,第15张

    ▲在 Arduino IDE 中安装 ESP32

    为了能够使用 Arduino IDE 对 ESP32 进行编程,您需要添加对 ESP32 开发板的支持。按照以下步骤操作:

    1. 转到文件>首选项。

    【ESP32最全学习笔记(基础篇)——1.ESP32简介】,第16张

    1. 在“ Additional Board Manager URLs ”字段中输入以下内容。这也将增加对 ESP32 和 ESP8266 板的支持。

    https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json,

    http://arduino.esp8266.com/stable/package_esp8266com_index.json

     见下图。然后,单击“确定”按钮。

    【ESP32最全学习笔记(基础篇)——1.ESP32简介】,第17张

    1. 打开开发板管理器。转到工具>董事会>董事会经理...
    1. 搜索ESP32并安装“ ESP32 by Espressif Systems ”:

     就是这样。它将在几秒钟后安装。

    【ESP32最全学习笔记(基础篇)——1.ESP32简介】,第18张

    在此之后,重新启动您的 Arduino IDE。

    然后,转到“工具” > “电路板”并检查您是否有可用的 ESP32 电路板。

    【ESP32最全学习笔记(基础篇)——1.ESP32简介】,第19张

    现在,您已准备好开始使用 Arduino IDE 对 ESP32 进行编程。

    ESP32 示例

    在您的 Arduino IDE 中,您可以找到 ESP32 的多个示例。首先,确保您在Tools > Board中选择了 ESP32 开发板。然后,只需转到“文件” > “示例”并查看 ESP32 部分下的示例。

    【ESP32最全学习笔记(基础篇)——1.ESP32简介】,第20张

    在 Arduino IDE 中更新 ESP32 内核

    偶尔检查一下您是否安装了最新版本的 ESP32 开发板附加组件是个好主意。

    您只需要转到Tools  > Board  > Boards Manager,搜索ESP32,然后检查您安装的版本。如果有更新的版本可用,请选择该版本进行安装。

    ▲使用 Arduino IDE 将代码上传到 ESP32

            为了向您展示如何将代码上传到您的 ESP32 板,我们将尝试 ESP32 的 Arduino IDE 示例中提供的一个简单示例。

         首先,确保您在Tools > Board中选择了 ESP32 。然后,转到文件>示例> WiFi > WiFiScan。

         这将加载扫描 ESP32 板范围内的 Wi-Fi 网络的代码。

    【ESP32最全学习笔记(基础篇)——1.ESP32简介】,第21张

             使用 USB 数据线将 ESP32 开发板连接到计算机。如果您有 ESP32 DEVKIT DOIT 开发板,内置的红色 LED 会亮起。这表明电路板正在通电。

    1) 转到Tools > Board,向下滚动到 ESP32 部分并选择您的 ESP32 开发板的名称。就我而言,它是 DOIT ESP32 DEVKIT V1 板。

    2) 转到 工具 > 端口 并选择一个可用的 COM 端口。如果 COM 端口显示为灰色,则表示您没有所需的 USB 驱动程序。在继续之前检查安装 USB 驱动程序部分。

    【ESP32最全学习笔记(基础篇)——1.ESP32简介】,第22张

    3) 按上传按钮。

    【ESP32最全学习笔记(基础篇)——1.ESP32简介】,第23张

    有些开发板会自动进入闪烁模式,代码会立即成功上传。

    其他开发板不会自动进入闪烁模式,因此您最终可能会遇到以下错误。

     无法连接到 ESP32:超时...正在连接...

    或者类似的东西:

    发生致命错误:无法连接到 ESP32:检测到错误的启动模式(0x13)!芯片需要处于下载模式。

            这意味着当您尝试上传代码时 ESP32 并未处于闪烁模式。在这种情况下,您应该长按开发板的BOOT按钮,当您开始看到“正在连接……”时。”调试窗口中的消息。

            注意:在某些板子中,一个简单的技巧可以使 ESP32 自动进入闪烁模式。查看以下教程:[已解决]无法连接到 ESP32:等待数据包标头超时。

            现在,代码应该已成功上传到电路板。你应该得到一个“完成上传”消息。

    【ESP32最全学习笔记(基础篇)——1.ESP32简介】,第24张