查看: 2449|回复: 0

[经验] ESP32 AT 入门指南

[复制链接]

主题

好友

881

积分

举人

  • TA的每日心情
    无聊
    2019-1-9 09:43
  • 签到天数: 6 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2019-2-27 16:36:15 |显示全部楼层
    本帖最后由 qiaoweiyiyi 于 2019-3-1 15:28 编辑

    介绍

    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等。如:


    1.png

    • USB转UART接口模块
    2.png

    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。

    1. $ git clone https://github.com/espressif/esp32-at.git
    2. $ cd esp32-at
    3. $ git submodule update --init --recursive
    复制代码

    or

    1. $ git clone --recursive https://github.com/espressif/esp32-at.git
    复制代码

    目录结构如下:

    1. ├── at_customize.csv            // 用户自定义分区表
    2. ├── build                       // 存放编译后生成的文件
    3. ├── components                  // 核心组件
    4. |   ├── at                      // AT 主目录
    5. |   |   ├── component.mk        // AT 编译入口
    6. |   |   ├── include             // 用户可用的 AT 头文件
    7. |   |   └── lib
    8. |   |       └── libat_core.a    // 核心 AT 功能实现
    9. |   └── customized_partitions   // customized_partitions 用于编译 AT 中,可以自定义使用的一些 bin 文件,如:ssl ca、ssl cert、ble server table 等
    10. ├── docs                        // 说明文档
    11. ├── esp-idf                     // esp32-at 编译依赖 esp-idf
    12. ├── main                        // AT 应用程序入口
    13. ├── Makefile                    // 总编译入口 makefile
    14. ├── partitions_at.csv           // 系统分区表
    15. ├── README.md                   // AT 说明
    16. ├── sdkconfig                   // 用户自定义编译配置
    17. ├── sdkconfig.defaults          // 默认编译配置
    18. ├── sdkconfig.old
    19. └── 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 模块

    1. $ pip install pyyaml xlrd
    复制代码

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

    1. $ easy_install rosinstall
    2. $ easy_install python-yaml
    3. $ easy_install xlrd
    复制代码

    b) ubuntu 中安装:

    1. $ sudo apt-get install python
    2. $ sudo apt-get install python-yaml
    3. $ sudo apt-get install python-xlrd
    复制代码
    5.2 编译&烧写5.2.1 [可选]编译前配置

    配置 ESP32 AT 的编译环境:

    1. $ make menuconfig
    复制代码

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

    5.2.2 [可选]编译前配置

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

    1. $ make erase_flash && make clean && rm sdkconfig && make defconfig
    复制代码
    5.2.3 编译&烧写
    1. $ make flash
    复制代码
    通过 make flash 将编译整个 esp32-at ,同时下载/烧录编译好的程序到 ESP32 上。
    5.3 运行
    • 打开串口工具,连接,连接配置如下:

    波特率: 115200

    数据位: 8

    停止位: 1

    奇偶校验: None

    流控: None

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



    以上,可查看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 一定要正确,可以试试反接有没有效果。

    本文作者:espressif
    来源 CSDN

    相关阅读:
    ESP32 AT 入门指南
    ESP32 的 ULP 协处理器简介和汇编编译环境设置
    ESP32 - ULP 协处理器在低功耗模式下操作 RTC GPIO






    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

    站长推荐上一条 /5 下一条



    手机版|电路城

    GMT+8, 2020-7-7 16:09 , Processed in 0.071347 second(s), 13 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz!

    返回顶部