ESP系列芯片对比
ESP8266
ESPduino(安信可 ESP-13模块)
ESPduino使用安信可的ESP-13模组,SMD-18封装.而ESPDUINO是GPIO16拉低是亮LED.
//ESPDuino使用安信可的ESP-13模块(该模块使用ESP8266EX 芯片),该模块的pinout如下: 
//ESPDuino使用ESP-13模块(<基于ESPDuino的智慧物联开发宝典>一书中误写为ESP-12模块)
ESP-13模块的原理图:

//使用《基于ESPDuino的智慧物联开发宝典》一书配套的开发板(没有Flash按键的板子)时,在arduino IDE 2.X下使用时,需要如下配置:
否则会出现 A fatal esptool.py error occurred: Failed to connect to ESP8266: Timed out waiting for packet header 报错.
//板载LED 是GPIO16
WeMos D1 R1(ESP-12F模组)
//WeMos D1(ESP8266) 使用ESP-12F模组,SMD-22封装,D1 R1的GPIO2拉高是LED亮.
Arduino-master\variants\d1\pins_arduino.h
static const uint8_t D15 = GPIO5; //SCL
static const uint8_t D14 = GPIO4; //SDA
static const uint8_t D13 = GPIO14; //SPI
static const uint8_t D12 = GPIO12; //SPI
static const uint8_t D11 = GPIO13; //SPI
static const uint8_t D10 = GPIO15; //SPI
static const uint8_t D9 = GPIO2;
static const uint8_t D8 = GPIO0;
static const uint8_t D7 = GPIO13;
static const uint8_t D6 = GPIO12;
static const uint8_t D5 = GPIO14;
static const uint8_t D4 = GPIO4; //SDA
static const uint8_t D3 = GPIO5; //SCL
static const uint8_t D2 = GPIO16;
static const uint8_t D1 = GPIO1;
static const uint8_t D0 = GPIO3;
//arduino IDE中选择"LOLIN(WEMOS)D1 ER1":
//板载LED 是GPIO2
WeMos D1 R2
//和WeMos D1 R1在板子上有如下红圈的区别:
ESP32
常用arduino库
| 名称 | 库头文件 | 用法 | 在ESP32上是否能使用 |
|---|---|---|---|
| debug库 | #include "Arduino_DebugUtils.h" | setup()阶段:Debug.timestampOn(); | Y |
| Serial Plotter库,Serial Plotter 可以将串口发送的数据以图表的形式显示出来,适合观察数据的变化趋势 | |||
| Debugger:这个库可以让你在 Arduino 程序中使用断点、单步执行等调试功能,就像在 PC 上使用集成开发环境调试程序一样。 | #include <Debugger.h> | 有报错?? | |
| SimpleDebug:这是一个简单的调试库,它允许你通过串口发送调试信息,并且可以设置不同的调试级别。 | |||
| DebugLib:这个库为 Arduino 提供了一个简单而强大的调试功能,支持宏定义来启用或禁用调试代码,无需修改代码即可切换调试模式。 |
AI回答
Q:arduino IDE编译不同开发板时,ino代码如何区分当前是哪种开发板
A:
在 Arduino IDE 中,当你选择不同的开发板时,编译器会包含对应开发板的特定头文件和定义,这允许你在代码中通过条件编译来区分当前是哪种开发板。以下是一些方法来区分不同的开发板:
- 使用预定义的宏:
每个开发板在编译时都会定义一些特定的宏,例如
ARDUINO,ARDUINO_ARCH_{ARCH}和BOARD等。你可以通过这些宏来判断当前的板子。#ifdef ARDUINO_AVR_UNO // 代码专门为 Arduino Uno 编写 #elif defined(ARDUINO_SAM_DUE) // 代码专门为 Arduino Due 编写 #elif defined(ARDUINO_ARCH_ESP8266) // 代码专门为 ESP8266 编写 #elif defined(ARDUINO_ARCH_ESP32) // 代码专门为 ESP32 编写 #endif - 检查
BOARD宏:BOARD宏通常包含了开发板的名称,你可以用它来区分不同的开发板。#if defined(BOARD) && (BOARD == "AVR_UNO" || BOARD == "AVR_MEGA2560") // 代码适用于 Uno 或 Mega2560 #elif defined(BOARD) && BOARD == "SAMD_ZERO" // 代码适用于 Zero 或 itsybitsy_m0 #endif - 检查特定开发板的功能或引脚定义:
某些开发板可能有特定的功能或引脚定义,你可以检查这些来区分开发板。
#if defined(__AVR_ATmega328P__) // 代码专门为基于 ATmega328P 的开发板编写 #elif defined(__SAM3X8E__) // 代码专门为基于 SAM3X8E 的开发板编写 #endif - 自定义宏:
在项目的
platform.local.txt或boards.txt文件中,你可以为特定的开发板定义自定义宏。然后在代码中使用这些宏。 - 使用
pins_arduino.h文件: 每个 Arduino 开发板都有自己的pins_arduino.h文件,定义了该板的引脚映射。虽然这个文件通常不直接在.ino文件中使用,但你可以通过包含它来获取板级信息。#include <pins_arduino.h> #if defined(PIN_A0) // 根据引脚定义区分 #endif
使用这些方法,你可以在 .ino 文件中根据不同的开发板编写特定的代码段,从而确保代码可以在不同的硬件平台上正确运行。记得在编写条件编译代码时,始终要有一个默认的路径,以处理未定义的情况。
Q:arduino 2版本如何选择esp8266开发板
A: 在Arduino IDE 2版本中选择ESP8266开发板的步骤如下:
-
打开Arduino IDE:首先确保你已经安装了Arduino IDE 2版本。
-
添加开发板管理器URL:
- 进入Arduino IDE的“文件”菜单,选择“首选项”(Preferences)。
- 在“附加开发板管理器网址”(Additional Boards Manager URLs)字段中,输入以下URL: arduino.esp8266.com/stable/pack… 如果已经添加了其他URL,请用逗号分隔。
-
打开开发板管理器:
- 通过菜单栏的“工具”(Tools)->“开发板”(Board)->“开发板管理器”(Board Manager)打开开发板管理器。
-
安装ESP8266平台:
- 在开发板管理器中搜索“ESP8266”。
- 找到“esp8266 by ESP8266 Community”并点击安装。
-
选择ESP8266开发板型号:
- 安装完成后,在“工具”(Tools)菜单中选择“开发板”(Board)子菜单。
- 从下拉菜单中选择你拥有的ESP8266开发板型号,例如NodeMCU、Wemos D1等。
-
选择端口:
- 在“工具”(Tools)菜单的“端口”(Port)子菜单中,选择你的ESP8266模块连接的USB端口。
完成以上步骤后,你就可以开始使用Arduino IDE 2版本来编写和上传代码到你的ESP8266开发板了。
Q:ESP32 如何在线调试?
A:
ESP32的在线调试可以通过多种方式实现,以下是几种常见的方法:
1. 使用命令行调试
使用GDB(GNU Debugger)和OpenOCD(Open On-Chip Debugger)进行命令行调试。具体步骤如下:
-
安装OpenOCD:
- 确保你的开发环境中已经安装了OpenOCD。通常在安装ESP-IDF时会自动安装。
-
启动OpenOCD:
-
打开终端,导航到你的项目目录,运行以下命令启动OpenOCD:
sh复制
openocd -f board/esp32s3-builtin.cfg -
如果使用外部ESP-Prog调试器,配置文件可能不同,例如
board/esp32-prog.cfg。
-
-
启动GDB:
-
在另一个终端窗口中,运行以下命令启动GDB并连接到OpenOCD:
sh复制
xtensa-esp32-elf-gdb -q -x build/gdbinit/symbols -x build/gdbinit/prefix_map -x build/gdbinit/connect build/blink.elf -
这将加载符号表并连接到目标设备。如果连接成功,你会看到类似以下的输出:
复制
Reading symbols from build/blink.elf... add symbol table from file "/home/user-name/esp-idf/examples/get-started/blink/build/bootloader/bootloader.elf" [Switching to Thread 1070141764] app_main () at /home/user-name/esp-idf/examples/get-started/blink/main/blink_example_main.c:95 95 configure_led();
-
-
设置断点和开始调试:
-
在GDB中,你可以设置断点并开始调试。例如,设置一个断点在
app_main函数:sh复制
(gdb) break app_main -
运行程序:
sh复制
(gdb) run -
当程序运行到断点时,会暂停,你可以查看变量、单步执行等操作。
-
2. 使用Eclipse调试
Eclipse是一个功能强大的集成开发环境,支持ESP-IDF项目的调试。具体步骤如下:
-
安装Eclipse和IDF Eclipse插件:
- 下载并安装Eclipse IDE。
- 安装IDF Eclipse插件,可以通过Eclipse的
Help>Install New Software菜单进行安装。
-
配置调试环境:
-
打开Eclipse,进入
Run>Debug Configuration,双击GDB Hardware Debugging新建一个配置。 -
在配置窗口中,输入配置名称,例如 “Blink checking”。
-
配置GDB命令行选项,确保
miDebuggerPath指向xtensa-esp32-elf-gdb。 -
设置
program为你的项目生成的.elf文件路径。 -
添加启动命令,例如:
sh复制
target remote :3333 set remote hardware-watchpoint-limit 2 mon reset halt thb app_main flushregs
-
-
启动OpenOCD:
- 在终端中启动OpenOCD,命令同上。
-
启动调试:
- 在Eclipse中,点击
Debug按钮启动调试。如果连接成功,程序会停在设置的断点处,你可以在Eclipse的调试视图中进行单步调试、查看变量等操作。
- 在Eclipse中,点击
3. 使用VSCode调试
VSCode是一个轻量级的代码编辑器,支持ESP-IDF项目的调试。具体步骤如下:
-
安装VSCode和ESP-IDF插件:
- 下载并安装VSCode。
- 安装ESP-IDF插件,可以通过VSCode的扩展市场进行安装。
-
配置调试环境:
-
在项目目录下,创建或修改
.vscode/launch.json文件,内容如下:JSON复制
{ "version": "0.2.0", "configurations": [ { "name": "ESP32-S3 DEBUG", "type": "cppdbg", "request": "launch", "MIMode": "gdb", "miDebuggerPath": "${command:espIdf.getXtensaGdb}", "program": "${workspaceFolder}/build/${command:espIdf.getProjectName}.elf", "windows": { "program": "${workspaceFolder}\build\${command:espIdf.getProjectName}.elf" }, "cwd": "${workspaceFolder}", "environment": [{ "name": "PATH", "value": "${config:idf.customExtraPaths}" }], "setupCommands": [ { "text": "target remote :3333" }, { "text": "set remote hardware-watchpoint-limit 2" }, { "text": "mon reset halt" }, { "text": "thb app_main" }, { "text": "flushregs" } ], "externalConsole": false, "logging": { "engineLogging": true } } ] }
-
-
启动OpenOCD:
- 在终端中启动OpenOCD,命令同上。
-
启动调试:
- 在VSCode中,点击
F5启动调试。如果连接成功,程序会停在设置的断点处,你可以在VSCode的调试视图中进行单步调试、查看变量等操作。
- 在VSCode中,点击
4. 使用ESP-Prog调试板
ESP-Prog是一款乐鑫推出的开发调试工具,支持ESP32的JTAG在线调试。具体步骤如下:
-
硬件连接:
- 通过USB线连接ESP-Prog调试板和电脑。
- 用Pin header选择Program/JTAG接口上的电源输出电压。
- 用灰排线连接调试板和ESP32开发板。
-
安装驱动:
- 在电脑端安装FT2232HL芯片驱动。电脑端识别到两个端口,表明驱动已安装成功。
-
启动OpenOCD:
- 在终端中启动OpenOCD,命令同上。
-
启动GDB:
- 在另一个终端窗口中启动GDB,命令同上。
-
设置断点和开始调试:
- 在GDB中设置断点并开始调试,操作同上。
通过以上几种方法,你可以根据自己的开发环境和需求选择合适的调试方式。希望这些信息对你有所帮助!