SERIALFLOW / ANDROID

通过 USB OTG 把安卓手机变成 ESP32 串口监视器:查看启动日志、筛选错误、发送命令、解析 ESP 日志并绘制实时数据。

如何用安卓手机调试 ESP32

烧录固件只完成了 ESP32 开发流程的一半。开发者更常遇到的问题发生在设备重启之后:它是否成功连接 Wi-Fi?MQTT 为什么断开?看门狗复位前输出了什么?传感器数值是在正常波动,还是已经持续漂移?

电脑当然可以完成这些工作,但并不总在手边。准备一台支持 USB OTG 的安卓手机、数据线和 SerialFlow,就能直接连接开发板,在现场查看日志、筛选故障信息并向固件发送命令。

使用 SerialFlow 在安卓设备上监视 ESP32 串口日志

SerialFlow 在烧录之后解决什么问题

ESPFlash 负责把固件写入设备,SerialFlow 则用于观察新固件实际运行时发生了什么。

SerialFlow 的安卓端围绕串口调试流程提供了这些能力:

  • 通过 Android USB Host/OTG 打开 USB 串口;
  • 配置波特率、数据位、停止位、校验位,以及 DTR、RTS;
  • 暂停输出、控制自动滚动、清空终端,并分享或导出日志;
  • 使用上一个/下一个结果进行搜索,支持区分大小写与正则表达式;
  • 组合多条筛选规则,从高速日志中保留真正有用的内容;
  • 发送文本或十六进制数据,并选择换行结尾;
  • 把重复使用的请求保存为快捷命令;
  • 解析 ESP 日志,并将连续数值显示为实时图表。

因此,它并不只是一个不断滚动文本的窗口,而是一套适合随身使用的安卓 USB 串口调试工具。

只用安卓手机完成 ESP32 烧录与调试

1. 烧录固件

先用 ESPFlash 在安卓设备上写入固件。完整步骤可以参考《如何通过 USB OTG 使用安卓手机烧录 ESP32》

烧录完成后,请在 ESPFlash 中断开设备或结束烧录会话。通常同一时间只能由一个应用占用 USB 串口,因此 SerialFlow 连接前需要先释放端口。

2. 在 SerialFlow 中连接开发板

使用可传输数据的 USB 线连接开发板;手机接口需要转接时,再加入 OTG 转接头。打开 SerialFlow,选择检测到的 USB 设备,并允许 Android 弹出的 USB 访问授权。

设备列表为空时,可以保持 SerialFlow 打开后重新插拔开发板。只有充电功能、没有数据线芯的 USB 线,是最常见的连接失败原因之一。

3. 对齐串口参数

SerialFlow 中的参数必须与固件一致:

  • 波特率: ESP32 项目经常使用 115200,但应以固件配置为准;
  • 数据位: 常见值为 8;
  • 停止位: 常见值为 1;
  • 校验位: 常见配置为无校验;
  • DTR/RTS: 开发板或复位电路没有特殊要求时,可以保持默认状态。

终端能稳定显示可读文本,通常说明关键参数已经匹配。持续出现乱码或重复异常字符,多半与波特率、数据位、停止位或校验位不一致有关。

4. 捕获完整启动日志

保持串口连接后复位或重新上电。启动阶段最早输出的几行,往往包含启动循环、分区、配置加载、异常复位和崩溃问题的关键证据。

复现问题时可以开启自动滚动;故障出现后立即暂停,让内容停留在当前位置,再进行搜索、筛选、复制或导出。这样不会因为后续日志继续涌入而丢失上下文。

5. 从高频日志中找到有效信息

ESP32 可能每秒输出多条网络、传感器、任务调度和业务日志。SerialFlow 提供了两种互补方式:

  • 搜索用于定位关键词,并在上一个、下一个匹配结果之间跳转;还可以启用大小写匹配或正则表达式。
  • 筛选持续缩小当前可见内容;多条规则可以组合,用于同时观察几个相关模块。

排查 Wi-Fi 与 MQTT 问题时,可以从 wifimqttdisconnecterror 等关键词入手。下面的正则表达式能够覆盖几类常见严重错误:

(Guru Meditation|panic|assert|watchdog)

筛选只改变查看方式,不需要修改固件,也不必为了定位问题重新编译一个特殊版本。

6. 向固件发送调试命令

不少固件会提供简单的串口命令行。SerialFlow 支持发送普通文本、原始十六进制字节和不同的行结尾。命令没有响应时,应检查解析器要求的是 LF、CR、CRLF,还是不需要任何结尾。

例如输入 status,选择固件规定的行结尾后发送。statusrebootwifi scan 或固定协议帧等常用内容,可以保存成快捷命令,反复测试时只需点击一次。

7. 解析日志或观察实时曲线

原始文本不一定是最容易理解的形式。

ESP 日志解码功能可以把 ESP 相关输出整理得更清晰。固件持续输出格式稳定的数值时,还可以打开图表视图观察变化趋势。尖峰、周期振荡、缓慢漂移和时序异常,在曲线上往往比在数字列表中更容易被发现。

这一方式适合传感器调试、电机控制、电源测量、温度调节,以及任何会周期性输出数值的控制循环。

8. 导出可复现的问题记录

捕获故障后暂停终端并分享或导出日志。提交问题时同时说明固件版本、开发板型号、串口参数以及触发故障的操作。

一段带有上下文、经过筛选的短日志,通常比几百行无关输出的截图更有价值。

示例:排查 ESP32 的 MQTT 掉线

假设设备烧录后可以正常连接,但运行几分钟就与 Broker 断开:

  1. 使用 ESPFlash 烧录待验证固件,并释放 USB 连接;
  2. 在 SerialFlow 中按固件参数打开串口;
  3. 复位开发板,捕获完整启动过程;
  4. 添加 wifimqttheaperrorwatchdog 等筛选词;
  5. 搜索 (disconnect|timeout|panic|assert),逐个查看匹配位置;
  6. 按固件要求的行结尾发送 status,读取当前状态;
  7. 掉线发生后暂停并导出日志。

得到的记录会形成一条完整时间线:网络关联、Broker 连接、内存状态、故障信息,以及可能存在的复位原因。相比“设备离线了”,这些信息更接近可以直接修复的问题。

安卓 USB 串口常见问题

现象 建议检查
找不到 USB 设备 确认手机支持 USB Host/OTG,使用数据线,重新插拔开发板,并允许 Android 的 USB 授权。
烧录后提示端口被占用 在 ESPFlash 中断开或关闭烧录会话,再重新连接 USB 设备并打开 SerialFlow。
输出全部是乱码 对齐波特率、数据位、停止位与校验位。
已连接但没有输出 复位开发板,确认选中了正确 USB 接口,并检查固件是否向该串口写入日志。
开发板复位或频繁断开 检查供电稳定性与线材质量,同时确认 DTR/RTS 是否触发了开发板复位。
发送命令没有响应 检查文本/十六进制模式,并选择命令解析器需要的行结尾。

把完整的烧录—调试流程装进手机

ESPFlash 与 SerialFlow 对应同一套安卓开发流程中的两个阶段:先安装固件,再理解固件正在做什么。

可以打开 SerialFlow 产品页查看功能,或直接从 Google Play 安装 SerialFlow。需要继续处理固件部署时,ESPFlash 也可在 Google Play 获取