ESP32基本介绍

1 Xtensa 内核

  1. 公司主体与归属‌

    ‌开发公司‌:Xtensa 是由 ‌Tensilica 公司‌(现为 Cadence Design Systems 子公司)推出的可配置微处理器内核系列‌13。
    ‌收购历程‌:Tensilica 于 1997 年成立,2013 年被 ‌Cadence Design Systems‌ 收购,成为其旗下关键 IP 核技术分支‌13。

‌2. 核心业务与技术定位‌

产品特性‌:

  • Xtensa 内核基于 ‌32 位 RISC 架构‌,支持高度可配置化设计,允许用户通过 ‌TIE(Tensilica 指令扩展)语言‌自定义指令集与硬件加速模块‌12。
  • 专为 ‌嵌入式系统‌ 和 ‌ASIC/SoC 芯片‌ 优化,适用于物联网、通信、多媒体处理等领域‌13。

‌技术优势‌:

  • 可扩展性强,开发者可针对特定场景(如移动通信、数字电视接收)定制处理器功能,降低功耗与成本‌34。

‌3. 应用案例与行业合作‌

典型应用‌:

  • 三星 ‌HD Radio 基带芯片组‌(移动通信领域)‌45。
  • 华为海思半导体 ‌ConnX DSP IP 核‌(数字信号处理)‌6。
  • 台湾 Afa 公司 ‌多标准手机数字电视接收 SoC‌(数字电视解调)‌7。
  • ‌生态合作‌:投资者与客户包括 Cisco、NEC、松下等电子行业巨头,形成广泛的技术应用生态‌13。

ESP32及其MDK

乐鑫官网-SDK-相关资源-入门指南-ESP32-快速入门-Windows Installer-Windows Installer Download-离线安装
在这里插入图片描述

SDK的Demo

下载好esp之后打开IDF文件夹如下:
在这里插入图片描述
里面全部都是Demo。

ESP使用

  1. 在esp的powershell中将目录放到当前的工程中。
  2. idf.py build编译
  3. 烧录
    在这里插入图片描述
    要查看实际端口号。

4 VScode IDE

Visual Studio:作为一个全功能的集成开发环境(IDE),主要面向专业开发人员和大型项目。它支持多种编程语言和框架,提供了丰富的功能,如高级调试、源码控制集成、自动化构建、数据库管理等。

Visual Studio Code:作为一个轻量级的代码编辑器,主要面向代码编辑和轻量级编程任务。虽然它支持调试和版本控制,但功能相对简单,更适合快速代码编写和小型项目。

在这里插入图片描述

4.1 Vscode几个插件

第1个是c和c加加的编程提示。
在这里插入图片描述
第2个是这个注释的插件。安装插件“Doxygen Documentation Generator”,用来生成注释。这玩意儿可以帮我们自动补全注释。
安装插件”C/C++ Snippets”,用来生成文件头、代码块分割线等。

4.3 Espressif IDF

在这里插入图片描述
ctrl+shift+p 呼出命令栏,在弹如下提示框后,搜索“配置 ESP-IDF 插件”

在这里插入图片描述
点击“ADVANCED”进入高级配置界面
在这里插入图片描述

4.3.1 新建工程

按下“Ctrl+Shift+P”快捷键打开命令面板,并在搜索栏内输入“新建项目”
在这里插入图片描述

4.2 platFormIO

PlatformIO 是开源的物联网开发生态系统,专注于嵌入式系统和物联网设备的跨平台开发。其核心优势在于整合了代码构建、调试、库管理等功能,支持超过 350 种嵌入式设备和 20 多个开发平台(如 Arduino、ESP32、树莓派等)‌

跨平台支持‌

支持 Windows、Linux、macOS 系统,并兼容主流开发框架(Arduino、ESP-IDF、STM32Cube 等)‌12。
提供预编译工具链和调试器,简化多架构开发流程‌16。

‌统一开发环境‌

集成多种 IDE 插件(如 VS Code、Atom、Sublime Text),支持代码智能提示、语法检查、Git 版本控制等功能‌12。
VS Code 插件提供构建、部署、设备监视器等核心功能,用户评价为 Marketplace 中评分最高的扩展之一‌45。

‌库管理与依赖管理‌

内置程序库管理器,支持通过命令行或网站搜索、安装和更新开源库(如 ESP32 框架依赖包)‌15。
支持自动解析项目依赖关系,提升开发效率‌26。

功能特性

‌跨平台构建系统‌:基于 Python 的构建工具(PIO Core),支持快速编译和部署‌46。
‌调试与测试‌:提供统一调试器,支持条件断点、内存查看、热重启等功能;集成单元测试模块‌56。
‌固件更新‌:支持远程更新设备固件,适配商业产品开发需求‌58。

应用场景

‌嵌入式开发‌:适用于 STM32、ESP8266、Arduino UNO 等硬件开发‌56。
‌物联网设备‌:支持传感器、智能家居设备的快速原型设计与部署‌15。
‌开源社区支持‌:全球超过 300 万开发者使用,拥有活跃的社区和丰富的示例库‌47。

安装‌:
在这里插入图片描述

  • 在 VS Code 中安装 PlatformIO IDE 插件,自动配置开发环境‌

5 原理图

5.1 ESP8266

开发背景与厂商‌
ESP8266是由乐鑫科技(Espressif Systems)推出的Wi-Fi芯片,集成MCU功能,专为物联网(IoT)设计‌34。
    经典产品包括ESP-01、ESP-07、ESP-12等系列,不同型号在尺寸、IO口数量、Flash容量上有所差异‌7。

‌技术参数‌
    ‌处理器‌:32位Tensilica L106,主频80/160MHz‌36。
    ‌存储‌:64KB指令RAM + 96KB数据RAM,支持外部QSPI闪存(容量8Mbit至32Mbit)‌37。
    ‌通信能力‌:支持2.4GHz Wi-Fi(802.11 b/g/n协议)、Station/AP/混合模式‌35。
    ‌接口‌:UART、SPI、I2C等,便于连接传感器‌67。
    ‌功耗‌:供电电压2.5-3.6V,适合电池供电场景‌36。

二、应用场景与开发资源

‌典型应用‌
    智能家居、工业控制等物联网设备的无线联网‌35。
    支持接入云平台(如OneNet),实现远程数据传输与控制‌5。
    可作为Wi-Fi中继、无线传感器节点等‌56。

‌开发支持‌
    ‌编程工具‌:可通过Arduino IDE开发,需安装ESP8266板库‌8。
    ‌引脚映射‌:部分模块需注意物理引脚与GPIO逻辑编号的转换(如D4对应GPIO 2)‌8。
    ‌参考设计‌:Altium Designer提供PCB布局方案,需考虑信号完整性和电磁兼容性‌6。

在这里插入图片描述

5.2 ESP32

ESP32 是由乐鑫科技(Espressif Systems)推出的一款高性能、低成本的 Wi-Fi 和蓝牙双模微控制器芯片,广泛应用于物联网(IoT)、智能家居、可穿戴设备等领域。它不仅继承了传统微控制器的通用性,还集成了无线通信功能,是构建联网设备的理想选择。以下是关于 ESP32 的详细介绍:
‌核心硬件参数‌

‌CPU‌:双核 Xtensa LX6 32 位处理器(主频 80/160/240 MHz,可动态调节)
‌无线通信‌:支持 Wi-Fi 4(802.11 b/g/n)和蓝牙 5.0(经典蓝牙 + BLE)
‌内存‌:520 KB SRAM(其中 8 KB 为 RTC 内存)
‌存储‌:
    内置 Flash:通常 4 MB(不同型号可选)
    外置 Flash 支持:通过 SPI 接口扩展
‌输入/输出接口‌:
    34 个 GPIO(部分复用)
    18 个 12 位 ADC 通道(模拟输入)
    2 个 8 位 DAC 通道(模拟输出)
    支持 PWM、I²C、SPI、UART、CAN、SDIO、红外遥控等协议
‌功耗管理‌:
    低功耗模式(Deep Sleep 模式下功耗低至 5 μA)
    支持动态调频和电源域控制
‌安全特性‌:硬件加密加速器(AES、SHA-2、RSA 等),支持安全启动和 Flash 加密。

‌主要特点‌

‌强大的无线功能‌
    内置 Wi-Fi 和蓝牙,无需外接模块即可实现联网或设备间通信。
    支持 STA(客户端)、AP(热点)和 STA+AP 混合模式。

‌双核处理能力‌
    双核 CPU 可并行处理任务(如一个核处理网络协议,另一个核控制硬件)。

‌丰富的外设接口‌
    支持多种传感器、显示屏、SD 卡、电机驱动等外设连接。

‌低功耗设计‌
    适用于电池供电的物联网设备,续航时间可达数月。

‌高性价比‌
    价格低廉(约 2-5 美元),性能远超传统 8/16 位微控制器。

‌开源生态系统‌
    支持 Arduino、ESP-IDF(乐鑫官方框架)、MicroPython、CircuitPython 等多种开发环境。

开发环境与工具‌

‌Arduino IDE‌
    通过安装 ESP32 开发板支持包,使用 Arduino 语法快速开发。
‌ESP-IDF‌(官方框架)
    基于 FreeRTOS,提供更底层的 API 和高级功能(如 OTA 升级、多线程)。
‌MicroPython/CircuitPython‌
    通过 Python 脚本编程,适合快速原型开发。
‌PlatformIO‌
    跨平台的专业开发工具,支持多种框架和调试功能。
‌图形化编程‌
    支持 Blockly(如 TinkerGen 的 CodeCraft)或 Node-RED 简化逻辑设计。

‌常见开发板型号‌

‌ESP32-DevKitC‌:官方基础开发板,适合通用场景。
‌ESP32-CAM‌:集成摄像头和 MicroSD 卡槽,用于图像传输。
‌NodeMCU-32S‌:兼容 Arduino 生态,板载 USB 转串口芯片。
‌TTGO T-Display‌:集成 LCD 屏幕,适合可视化项目。
‌FireBeetle 系列‌:低功耗设计,适合电池供电设备。

在这里插入图片描述

5.2.1 外设

在这里插入图片描述

5.2.2 模拟输出LEDC

在这里插入图片描述在这里插入图片描述

5.2.3 IIS

ESP32 是一款功能强大的微控制器,其 I2S(Inter - IC Sound)外设常用于音频数据的传输和处理。下面为你详细介绍 ESP32 的 I2S 外设引脚相关信息。

1. I2S 基本概念

I2S 是一种用于数字音频设备之间传输音频数据的串行通信协议,它使用三条主要的信号线:

  • 位时钟(BCK,Bit Clock):用于同步每一位数据的传输,每个时钟周期传输一位数据。
  • 字选择(WS,Word Select):也称为帧同步信号,用于指示一个新的数据帧的开始,区分左右声道数据。
  • 数据(SD,Serial Data):用于传输实际的音频数据。

2. ESP32 I2S 引脚分配

ESP32 有两个 I2S 控制器(I2S0 和 I2S1),每个控制器都可以配置不同的引脚。引脚的选择并不是固定的,你可以根据实际的硬件连接情况进行灵活配置,但有一些引脚由于其特殊功能,可能不适合用作 I2S 引脚。

可配置的 I2S 引脚

ESP32 的大多数 GPIO 引脚都可以配置为 I2S 功能引脚,但在实际使用中,需要注意避免与其他外设冲突。以下是一些常见的 I2S 引脚配置示例:

I2S 信号常用 GPIO 引脚建议
BCKGPIO26、GPIO5、GPIO14 等
WSGPIO25、GPIO15、GPIO2 等
SDGPIO22、GPIO23、GPIO4 等
示例代码配置

以下是一个使用 ESP-IDF 框架配置 I2S 引脚的示例代码:

#include "driver/i2s.h"

void i2s_init() {
    i2s_config_t i2s_config = {
        .mode = I2S_MODE_MASTER | I2S_MODE_TX,
        .sample_rate = 44100,
        .bits_per_sample = I2S_BITS_PER_SAMPLE_16BIT,
        .channel_format = I2S_CHANNEL_FMT_RIGHT_LEFT,
        .communication_format = I2S_COMM_FORMAT_I2S,
        .dma_buf_count = 8,
        .dma_buf_len = 64,
        .use_apll = false,
        .tx_desc_auto_clear = true,
        .fixed_mclk = 0
    };

    i2s_pin_config_t pin_config = {
        .bck_io_num = 26,
        .ws_io_num = 25,
        .data_out_num = 22,
        .data_in_num = I2S_PIN_NO_CHANGE
    };

    i2s_driver_install(I2S_NUM_0, &i2s_config, 0, NULL);
    i2s_set_pin(I2S_NUM_0, &pin_config);
}

3. 注意事项

  • 引脚冲突:在选择 I2S 引脚时,需要确保这些引脚没有被其他外设(如 SPI、UART 等)使用,否则可能会导致功能冲突。
  • 电源和接地:除了信号引脚外,还需要确保 ESP32 和外部音频设备的电源和接地连接正确,以避免信号干扰和噪声。
  • 电平匹配:ESP32 的 GPIO 引脚输出的是 3.3V 电平,而某些外部音频设备可能需要 5V 电平,这时需要使用电平转换电路进行匹配。

4. 引脚映射表

以下是 ESP32 部分 GPIO 引脚的功能及是否适合作为 I2S 引脚的参考:

GPIO 编号特殊功能是否适合 I2S
GPIO0下载模式检测不适合
GPIO2内置 LED适合
GPIO4-适合
GPIO5-适合
GPIO12启动时拉低可能导致问题不建议
GPIO13-适合
GPIO14-适合
GPIO15-适合
GPIO22-适合
GPIO23-适合
GPIO25-适合
GPIO26-适合
GPIO27-适合

通过合理选择和配置 I2S 引脚,可以实现 ESP32 与外部音频设备之间的稳定音频数据传输。

5.3 Arduino uno

Arduino 是由 ‌意大利开源硬件公司 Arduino‌ 开发并维护的全球知名开源电子平台。以下是其公司背景的关键信息:
‌公司归属与发展‌

‌创立背景‌
Arduino 由意大利设计师 ‌Massimo Banzi‌ 及其团队于 ‌2005 年‌ 创立,最初旨在为学生提供低成本、易上手的微控制器开发工具‌36。其名称源于意大利国王 ‌Arduin‌ 和团队常聚的酒吧 di Re Arduino‌6。

Arduino Uno 是一款基于开源硬件和软件设计的微控制器开发板,是 Arduino 系列中最经典且广泛使用的型号。它专为电子爱好者、学生、艺术家和工程师设计,适用于快速原型开发和互动项目。以下是关于 Arduino Uno 的详细介绍:

核心硬件参数‌

‌微控制器‌:ATmega328P(8位 AVR 架构)
‌工作电压‌:5V
‌输入电压‌:7-12V(推荐通过电源接口供电)或 5V(通过 USB 直接供电)
‌数字 I/O 引脚‌:14 个(其中 6 个支持 PWM 输出)
‌模拟输入引脚‌:6 个(10 位分辨率)
‌闪存‌:32 KB(其中 0.5 KB 用于引导程序)
‌SRAM‌:2 KB
‌EEPROM‌:1 KB
‌时钟速度‌:16 MHz
‌通信接口‌:UART、I²C、SPI
‌USB 接口‌:Type-B,用于编程和供电

‌主要特点‌

‌易用性‌
    无需专业编程或电子知识即可入门,适合初学者。
    配套的 Arduino IDE 提供简化的编程环境(基于 C/C++)。

‌开源生态系统‌
    硬件设计、原理图和软件库全部开源,允许用户自由修改和扩展。
    兼容大量第三方传感器、模块和扩展板(称为 ‌Shields‌)。

‌丰富的接口‌
    支持数字信号输入/输出、模拟信号读取、PWM(脉宽调制)控制等。
    可通过串口(UART)与计算机或其他设备通信。

‌低功耗‌
    适合电池供电的小型项目,如物联网设备或便携式装置。

‌典型应用场景‌

‌教育与实验‌:学习电子电路基础、编程逻辑和传感器交互。
‌智能家居‌:控制灯光、温度传感器、自动浇花系统等。
‌机器人‌:驱动电机、舵机,实现避障或巡线功能。
‌艺术装置‌:结合灯光、声音和交互式传感器创作动态艺术。
‌原型开发‌:快速验证物联网(IoT)设备或自动化控制方案。

‌编程与开发‌

‌Arduino IDE‌:免费集成开发环境,支持 Windows、macOS 和 Linux。
‌代码结构‌:基于 setup()(初始化)和 loop()(主循环)函数。
‌库支持‌:提供大量预置库(如控制舵机、读取温湿度传感器等)。
‌上传程序‌:通过 USB 线将代码烧录到板载微控制器。

‌与其他 Arduino 型号的区别‌

‌Uno vs. Mega 2560‌:Mega 的 I/O 引脚更多(54 个数字引脚),适合复杂项目。
‌Uno vs. Nano‌:Nano 更小巧,适合紧凑空间,但功能类似。
‌Uno vs. ESP32/ESP8266‌:后者内置 Wi-Fi/蓝牙,适合物联网项目。

在这里插入图片描述

6 硬件

6.1 LED灯

LED 灯与 Arduino 开发板的接线方式总结
‌一、基础接线原则‌

‌正负极区分‌
    ‌正极(长引脚)‌:连接 Arduino 数字/模拟输出引脚或电源正极(需串联限流电阻)‌34。
    ‌负极(短引脚)‌:直接连接开发板 GND(接地)‌34。
    ‌错误后果‌:反接可能导致 LED 不亮或损坏‌34。

‌限流电阻的必要性‌
    需串联 ‌220Ω~1kΩ 电阻‌(常用 220Ω),防止电流过大烧毁 LED‌13。
    电阻可串联于正极与引脚之间,或负极与 GND 之间(推荐正极串联)‌34。

、二、单色 LED 控制方式‌

‌数字引脚控制(开关模式)‌

  • 正极‌ → 电阻 → Arduino 数字引脚(如 D9)
  • 负极‌ → GND‌35。

‌代码示例‌:

cppCopy Code
pinMode(9, OUTPUT);
digitalWrite(9, HIGH); // 点亮

模拟输出(PWM 调光)‌

  • 需选择 ‌支持 PWM 的引脚‌(如 Arduino Uno 的 D3、5、6、9、10、11,标有 ~ 符号)‌8。
  • 正极‌ → 电阻 → PWM 引脚
  • 负极‌ → GND‌8。

代码示例‌:

cppCopy Code
analogWrite(9, 128); // 50% 亮度

6.2 面包板

在这里插入图片描述
面包板内都是一些铁片,最上面的横条通常作为电源使用或者是地使用,然后下面的这些竖。着的都是铁片连接的,也就是导电的。

6.3 电路

在这里插入图片描述

7 MicroPython

7.1 固件下载

一、通用下载步骤‌

获取固件文件‌

  • 访问 ‌MicroPython 官方固件仓库‌(micropython.org/download)
  • 根据开发板型号选择对应固件(如 ESP32、ESP8266、STM32 等)‌12。
    • 运行—选择解释器—ESP32—Install or update firmware
  • 文件名通常为 .bin 格式,需确认固件版本与硬件兼容‌7。

在这里插入图片描述

安装烧录工具‌

  • 命令行工具‌:esptool.py(支持 ESP 系列芯片),通过 pip install esptool.py 安装‌13。

图形化工具‌:

  • Flash Download Tools(乐鑫官方工具,适用于 ESP 系列芯片)‌23。
    ST-Link Utility(适用于 STM32)‌5。
    Web 工具‌:web esptool(无需安装,通过浏览器直接烧录)‌6。

连接设备并擦除旧固件‌

  • 将开发板通过 USB 连接至电脑,确认设备管理器中的 COM 端口‌24。
    执行擦除命令(以 ESP32 为例):

      bashCopy Code
      esptool.py --chip esp32 --port COMx erase_flash
    
      其中 COMx 为实际端口号‌13。
    

烧录新固件‌

  • ESP 系列‌(ESP32/ESP8266):

      bashCopy Code
      esptool.py --chip esp32 --port COMx write_flash -z 0x1000 firmware.bin
    
      0x1000 为固件烧录起始地址,需与芯片型号匹配‌12。
      ‌STM32‌:
    
      bashCopy Code
      st-flash write firmware.bin 0x8000000
    
      0x8000000 为 STM32 的 Flash 起始地址‌5。
    

‌二、不同开发板的特殊配置‌

‌ESP32/ESP8266‌
    ‌驱动安装‌:需安装对应 USB 转串口驱动(如 CP210x 或 CH340)‌24。
    ‌烧录模式‌:部分板子需手动进入烧录模式(如按住 BOOT 键后复位)‌38。

‌Wemos D1 Mini(ESP8266)‌
    推荐使用 esptool.py 或 NodeMCU Flasher 工具,烧录地址为 0x00000‌48。

‌STM32‌
    需通过 ST-Link 调试器连接,烧录前确保芯片已解除写保护‌5。

‌三、验证与调试‌

‌串口通信测试‌
    使用 PuTTY 或 Arduino IDE 的串口监视器,设置波特率(通常为 115200),发送 print("Hello") 验证固件运行‌8。

‌常见问题‌
    ‌烧录失败‌:检查 COM 端口、芯片型号和固件地址是否匹配‌13。
    ‌无法连接‌:确认开发板进入烧录模式,或重新安装驱动‌24。

‌工具与资源推荐‌

‌官方文档‌:MicroPython 固件下载页‌7。
‌社区支持‌:GitHub 仓库及开发者论坛(如电子工程世界)‌68。

通过上述流程,可快速完成 MicroPython 固件的下载与烧录,适配主流开发板‌

8 Arduino IDE

安装软件
打开Preference 语言改为中文,将编译上传勾选。
安装开发版包到这个路径
在这里插入图片描述
上传
在这里插入图片描述

9 串口驱动

不同板子对应不同驱动
在这里插入图片描述下载链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

万码无虫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值