ESP32在Arduino IDE中同时使用AT指令与自定义代码的方法问询
ESP32同时运行AT指令与Arduino自定义代码的实现方案
问题核心原因
官方AT固件是独立的完整固件,占据ESP32 Flash的全部用户程序空间,通过Arduino IDE上传自定义代码时会直接覆盖原有AT固件,因此AT指令会失效。
可用解决方案
- 方案1:Arduino代码内集成AT指令服务(最推荐)
无需单独烧录官方AT固件,直接在你的Arduino项目中实现轻量AT指令响应逻辑。你可以正常编写自定义业务代码,同时预留串口监听逻辑,通过Serial.read()等接口读取串口输入的AT指令,匹配到对应指令后返回标准AT响应即可。如果需要用到官方AT固件的WiFi、蓝牙等功能,直接调用ESP32 Arduino内核自带的WiFi、BluetoothSerial等库实现对应功能即可,开发成本最低。 - 方案2:自定义分区表运行双固件
修改ESP32的Flash分区表,拆分出两个独立的程序分区,分别烧录官方AT固件和你的Arduino自定义代码,两个固件通过共享内存、内部UART透传的方式实现通信。该方案操作复杂度较高,需要自行适配分区规则和跨固件通信逻辑,仅适合对ESP32底层有足够了解的开发者使用 - 方案3:AT指令透传转发
如果你的使用场景是外接主控通过AT指令调用ESP32的网络能力,同时ESP32需要运行自定义逻辑,可以直接在Arduino代码中实现AT指令透传:收到外接主控的AT指令后直接调用内核API执行操作,结果按AT标准格式返回给外接主控即可,完全可以实现和官方AT固件一致的使用体验。
内容的提问来源于stack exchange,提问作者황영진
相关产品推荐
相关产品推荐

