ESP32 AT 系列 - (一)ESP32 AT 入门指南

目录

介绍

espressif 基于 esp-idf,针对 ESP32 芯片,实现了一些常用的 AT 指令集,链接地址为 esp32-at。该指令集可用于用户/MCU/PC 同 ESP32 进行交互,也适用于快速进行 ESP32 开发。

一:目的

本文基于 ubuntu 环境和 windows 环境,介绍快速的搭建 ESP32 AT 编译环境和烧写运行过程,供读者参考。

二:硬件准备

  • linux 环境windows 环境

用来编译&烧写&运行等操作的必须环境。

  • ESP32 设备

ESP32 设备包括 ESP32芯片ESP32模组ESP-WROOM-32ESP32开发板ESP32-DevKitCESP32开发板ESP-WROVER-KIT等。
p3

  • USB转UART接口模块

p1

USB 转 UART 接口模块一般采用专用的 USB 转 UART 接口芯片,输出为 TTL 电平,可以和 ESP32 内置的串口(UART)直接连接,使 ESP32 通过 USB 口和计算机通讯,方便、快捷。

三:环境搭建

3.1 编译器环境搭建

编译环境用于编译 ESP32 AT 系列程序,环境搭建请参考 https://github.com/espressif/esp32-at 目录下的 esp-idf 中的编译环境搭建。

注意:

以下的 esp-idf 需要是 esp32-at 下的 esp-idf,这个 esp-idf 通常是比较稳定的版本,而不是最新的 esp-idf,所以 esp32-at 和 esp-idf 必须匹配。如果 esp32-at 和 esp-idf 不匹配,有可能因为 esp-idf 函数接口或者结构体定义等变动,导致 esp32-at 无法正常工作。

3.1.1 ubuntu系统

参考 esp-idf/docs/get-started/linux-setup.rst 教程。
通过此教程,将完成编译器安装并默认生成 ~/esp/xtensa-esp32-elf/ 目录。

3.1.2 window系统

参考 esp-idf/docs/get-started/windows-setup.rst 教程。
通过此教程,您将完成编译器安装并默认在C盘生成 msys32 目录。
以下步骤都将在 C:\msys32\mingw32.exe shell中进行操作。

3.2 接线

默认 ESP32 与 PC/MCU 接线如下配置:
a). 通过串口线将 ESP32 连接到 PC,默认为 UART0 口,UART0口默认用来显示 ESP32 工作中详细的 log 以及用于烧录代码。

这些默认配置可通过 make menuconfig 由用户自己定义。

make menuconfig –> Component config –> ESP32-specific –> UART for console output 来配置 log 输出

b). 通过 USB 转 UART 接口模块将 ESP32 连接到 PC,默认为 UART1 口,UART1 口默认用来发送 AT 指令以及查看命令是否成功执行。

如 ESP-WROOM-32 的默认 GPIO 口如下:[如果要在其他 ESP32 设备上,需要根据官方文档,重新配置引脚]

  • GPIO16 - RXD
  • GPIO17 - TXD
  • GPIO14 - RTS
  • GPIO15 - CTS

这些默认配置可通过 make menuconfig由用户自己定义。

  • make menuconfig –> Component config –> AT 来配置 GPIO 口。

四:SDK 准备

用户可通过如下方式获取整个 SDK。

$ git clone https://github.com/espressif/esp32-at.git
$ cd esp32-at
$ git submodule update --init --recursive

or

$ git clone --recursive https://github.com/espressif/esp32-at.git

目录结构如下:

├── at_customize.csv            // 用户自定义分区表
├── build                       // 存放编译后生成的文件
├── components                  // 核心组件
|   ├── at                      // AT 主目录
|   |   ├── component.mk        // AT 编译入口
|   |   ├── include             // 用户可用的 AT 头文件
|   |   └── lib
|   |       └── libat_core.a    // 核心 AT 功能实现
|   └── customized_partitions   // customized_partitions 用于编译 AT 中,可以自定义使用的一些 bin 文件,如:ssl ca、ssl cert、ble server table 等
├── docs                        // 说明文档
├── esp-idf                     // esp32-at 编译依赖 esp-idf
├── main                        // AT 应用程序入口
├── Makefile                    // 总编译入口 makefile
├── partitions_at.csv           // 系统分区表
├── README.md                   // AT 说明
├── sdkconfig                   // 用户自定义编译配置
├── sdkconfig.defaults          // 默认编译配置
├── sdkconfig.old
└── tools                       // 相关工具集

五:编译&烧写&运行

5.1 python 模块安装

由于编译过程依赖于 python 以及 python 中 yaml,xlrd 模块,在编译前需正确安装好 python,yaml,xlrd。(如已安装,忽略 5.1)

根据自己的环境选择安装步骤a) or b):

a) windows 中安装:
选择安装高版本的 python,如 python 3.6.3,选择完全安装,yaml,xlrd 模块将自动安装在 PC 上。

或:

选择安装低版本的 python,如python 2.7
接着安装下载工具pip
再安装 yaml,xlrd 模块

$ pip install pyyaml xlrd

如果安装失败,请尝试下面方式:

$ easy_install rosinstall
$ easy_install python-yaml
$ easy_install xlrd

b) ubuntu 中安装:

$ sudo apt-get install python
$ sudo apt-get install python-yaml
$ sudo apt-get install python-xlrd

5.2 编译&烧写

5.2.1 [可选]编译前配置

配置 ESP32 AT 的编译环境:

$ make menuconfig

如选择串口:
make menuconfig -> Serial flasher config -> Default serial port

5.2.2 [可选]编译前配置

擦除 ESP32 的 flash & 删除编译信息 & 删除编译配置:

$ make erase_flash && make clean && rm sdkconfig && make defconfig

5.2.3 编译&烧写

$ make flash

通过 make flash 将编译整个 esp32-at ,同时下载/烧录编译好的程序到 ESP32 上。

5.3 运行

1.打开串口工具,连接,连接配置如下:

  • 波特率: 115200
  • 数据位: 8
  • 停止位: 1
  • 奇偶校验: None
  • 流控: None

2.将 ESP32 调到运行状态, 通过串口工具查看并发送 AT 指令,如通过 cutecom 可得到:

p2

以上,可查看 AT 信息并完成具体的交互过程。

六:ESP32 AT 指令集

参考官网文档:ESP32 AT 指令集与使用示例

该文档描述了 ESP32 AT 指令集功能以及使用方法,并介绍几种常见的 AT 指令使用示例。

常见错误处理

a) 为什么 git clone 速度奇慢无比?

可能由于服务器本身原因,可通过为 git 设置代理来git config –global 加速下载。

b) 为什么编译不过?

  • 是不是 python/yaml/xlrd 模块没有下载好,参考 5.1 节,参考 issue 46
  • 是不是子模块没有完整 clone 下来,参考第四节
  • 出现 pthread 编译错误,是不是编译器和 esp32-at 不匹配?
    由于有些用户已经下载过 esp-idf 编译器,以为不用再重新下载编译器,其实不然,用户需下载和 ESP32 AT 对应的编译器,参考 3.1 节,参考issue 48

c) 为什么 AT 启动不了,出现 no factory ,can not find boot 等情况?

编译前没有擦除 flash 中以前参数,请使用 5.2.2 节命令擦除

d) 为什么 AT 启动不了,出现 invalid magic number 1 等情况?

有些用户导出了最新的 esp-idf,将会由于 esp32-at 和 esp-idf 不匹配而启动出错,因为在 ESP32 AT 下,用户无需自己导出 esp-idf, ESP32 AT 将导出默认的 esp-at/esp-idf。参考issue 52

e) 为什么启动了 AT ,两个串口都能看到 log, 但输入命令,控制台无反应?

按照步骤 3.2 上重新接线, RX 和 TX 一定要正确,可以试试反接有没有效果。

猜你喜欢

转载自blog.csdn.net/espressif/article/details/81608992