本文档适用于 ESP-AT V2.1.0.0 以及之前的版本,最新版本编译方法请参见 编译 ESP-AT 工程。

AT 工程:https://github.com/espressif/esp-atAT 文档:https://docs.espressif.com/projects/esp-at/zh_CN/latest/

目录

  • 介绍
  • 一:目的
  • 二:硬件准备
  • 三:环境搭建
  • 四:SDK 准备
  • 五:编译&烧写&运行
  • 六:ESP-AT 指令集
  • 常见错误处理

介绍

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

一: 目的

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

二:硬件准备

  • linux 环境 或 windows 环境

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

  • ESP32 设备

ESP32 设备包括 ESP32芯片,ESP32模组ESP-WROOM-32,ESP32开发板ESP32-DevKitC,ESP32开发板ESP-WROVER-KIT等。如:

esplice 代码结构图 esprit编程教程_esp

  • USB转UART接口模块

esplice 代码结构图 esprit编程教程_esp32-at_02

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

三: 环境搭建

3.1 编译器环境搭建

编译环境用于编译 ESP32 AT 系列程序,环境搭建请参考 https://docs.espressif.com/projects/esp-at/zh_CN/latest/Compile_and_Develop/How_to_clone_project_and_compile_it.html#esp-at 目录下的 esp-idf中的编译环境搭建。

注意: 以下的 esp-idf 需要是 esp-at 下的 esp-idf,这个 esp-idf 通常是比较稳定的版本,而不是最新的 esp-idf,所以 esp-at 和 esp-idf 必须匹配。如果 esp-at 和 esp-idf 不匹配,有可能因为 esp-idf 函数接口或者结构体定义等的变动,导致 esp-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/esp-at.git

目录结构如下:

├── build                       // 存放编译后生成的文件
├── components                  // 核心组件
|   ├── at                      // AT 主目录
|   |   ├── component.mk        // AT 编译入口
|   |   ├── include             // 用户可用的 AT 头文件
|   |   └── lib
|   |       └── libat_core.a    // 核心 AT 功能实现
|   ├── fs_image           
|   └── customized_partitions   // customized_partitions 用于编译 AT 中,可以自定义使用的一些 bin 文件,如:ssl ca、ssl cert、ble server table 等
├── module_config            	// partition 配置, 用户配置, SDK 配置等
├── examples			  	 // AT 应用方案
├── docs                        // 说明文档
├── esp-idf                     // esp-at 编译依赖 esp-idf
├── main                        // AT 应用程序入口
├── Makefile                    // 总编译入口 makefile
├── README.md                   // AT 说明
├── LICENSE			            // 版权说明
└── 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 将编译整个 esp-at ,同时下载/烧录编译好的程序到 ESP32 上。

5.3 运行

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

波特率: 115200

数据位: 8

停止位: 1

奇偶校验: None

流控: None

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

esplice 代码结构图 esprit编程教程_at_03

以上,可查看 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 编译错误,是不是编译器和 esp-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,将会由于 esp-at 和 esp-idf 不匹配而启动出错,因为在 ESP32 AT 下,用户无需自己导出esp-idf, ESP32 AT 将导出默认的 esp-at/esp-idf。参考issue 52

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

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