ESP-AT

  • at
  • AT
  • ESP-AT
  • AT+CWCOUNTRY
  • AT+BLEADVPARAM
  • AT+BLEINIT
  • AT+BLUFI
  • BLE

ESP8266通过AT指令使用浏览器进行WiFi配网,每次发送"AT+WEBSERVER=1,80,25"之后就会报错"ERROR"无法成功创建web server

问题出现的原因:默认的 AT 固件并不支持 AT web server 的功能
解决方式:

  1. 基于ESP_AT工程环境通过./build.py menuconfig命令配置开启AT web server 的功能;对于 ESP8266 设备,需要关闭一些不必要的选项来存储必要的 html文件。
  2. 完成配置后保存,然后./build.py进行编译,编译完成后将支持AT web server 功能的固件烧录进ESP8266里。

AT+CWCOUNTRY 指令配置国家代码后,工作信道是否会依据对应法规自动调整,还是仅更新 country_code 字段而不影响信道参数?

country_policy 配置为 0 时,模块国家代码将随接入 AP 的不同自动变更,信道参数则完全由路由器分配决定。

模块工作信道一般由路由器下发。如果路由器具备信道跳频功能,相关信道变化可同步至模块。

AT+BLEADVPARAM 指令如何设置广播间隔为 1.6 秒?

AT+BLEADVPARAM 的最小/最大广播间隔由 <adv_int_min><adv_int_max> 参数控制,单位为 0.625 ms

如果要设置 1.6 s 广播间隔:

1600 ms / 0.625 = 2560

2560 转换成十六进制为 0xA00,因此最小和最大广播间隔都应填 0xA00

AT+BLEADVPARAM=0xA00,0xA00,0,0,7,0,,

参考文档:
https://docs.espressif.com/projects/esp-at/zh_CN/latest/esp32/AT_Command_Set/BLE_AT_Commands.html#id31

ESP-AT 执行 "AT+CIPSTART" 阻塞,有指令可以中断吗?

  • AT 层不提供强制中断 CIPSTART 的命令
  • 在 TCP 连接超时之前,AT+CIPSTART 会处于阻塞状态

规避/优化方式:

  • 缩短 TCP 连接超时时间(服务端或设备侧配置)。
  • 业务层避免并发下发 BLUFI / 配网类命令 与网络连接命令。
  • 合理规划命令时序,避免在网络不稳定场景下频繁发起 CIPSTART

ESP-AT 在 STA 模式下 ping 延迟较高,如何降低延迟?

  • 原因说明:

ESP-AT 默认配置为 AT+SLEEP=1,即 Wi-Fi Modem-sleep 模式。在该模式下,当设备工作在 Station (STA) 模式时,Wi-Fi 射频会依据 AP 的 DTIM 周期周期性进入休眠,从而增加数据包(如 ping)的响应延迟。

解决方法:
在设备上电后,将睡眠模式关闭即可显著降低 ping 延迟:

AT+SLEEP=0

该设置会禁用 Modem-sleep,使 Wi-Fi 射频保持常开状态,从而避免因 DTIM 机制引入的延迟问题。

注意事项:

  • 关闭睡眠模式会提升实时性,但同时会增加功耗
  • 该设置仅在 Wi-Fi 工作于 STA 模式时生效

ESP-AT 作为 BLE GATT Server 时,是否支持通过 AT 指令自定义 Service UUID 或 Characteristic UUID?

不支持通过普通 BLE AT 指令动态自定义 Service UUIDCharacteristic UUID

ESP-AT 的 GATT 数据库在固件编译阶段已经固定创建,AT 指令仅支持对已有 Attribute 的数值进行读写,不支持动态创建、删除或修改 Service 和 Characteristic UUID。

其中,AT+BLEGATTSSETATTR 仅用于修改已有特征值的数据内容,不能创建新的 Characteristic,也不能修改 UUID。

如果确实需要定制 GATT 表,应在固件侧预先配置或重新编译固件,而不是依赖运行时 AT 指令动态修改。

在 ESP-AT 固件中,AT+BLEINIT=2 与 AT+BLUFI=1 是否可以同时使用?

不建议同时使用。AT+BLEINIT=2 启用 BLE 角色,AT+BLUFI=1 启用蓝牙配网,两项功能会占用相同的蓝牙资源,存在资源冲突,不能稳定同时启用。

推荐流程是:完成蓝牙配网后,先关闭 BLUFI 蓝牙配网功能,再启用需要的 BLE 功能,确保蓝牙任务和 GATT 资源不会互相冲突。

ESP-AT 中修改 BLE UUID 后,会立即生效吗?

不会立即生效。

BLE 的 GATT 表会在初始化时注册到协议栈中,UUID 属于 Attribute Table 的静态属性;同时,客户端在连接建立后通常还会缓存服务结构。因此修改 UUID 后,必须重新初始化 BLE,新的 UUID 才能生效。

ESP-AT 如何修改 UART 配置?

ESP-AT 提供多种修改 UART 配置的方法:

  • 使用 AT+UART_CURAT+UART_DEF 设置当前或默认 UART 波特率。
  • 通过 AT+SYSMFG 修改出厂默认参数。
  • 重新编译 AT 固件,修改默认 UART 配置。

使用 ESP32-C3 AT 固件建立蓝牙连接后,发送 “AT+SLEEP=2” 进入 Light-sleep 失败,是什么原因?

如果出现该问题,UART0 通常会输出如下报错日志:

E (40369) at-base: shouldn't enable sleep when softap is enabled

这说明当前设备的 Wi-Fi 工作在 SoftAP 模式,而 AT 固件不支持在 SoftAP 模式下开启睡眠。

解决方法如下:

  1. 发送 AT+CWMODE=1,将设备切换到 Station 模式,关闭 SoftAP
  2. 再发送 AT+SLEEP=2 开启 Light-sleep

此外,如果在 BLE 模式下使用 Light-sleep,还需要确保外接 32 KHz 晶振,否则也无法正常休眠。