SERIALFLOW / ANDROID
通过 USB OTG 把安卓手机变成 ESP32 串口监视器:查看启动日志、筛选错误、发送命令、解析 ESP 日志并绘制实时数据。
如何用安卓手机调试 ESP32
烧录固件只完成了 ESP32 开发流程的一半。开发者更常遇到的问题发生在设备重启之后:它是否成功连接 Wi-Fi?MQTT 为什么断开?看门狗复位前输出了什么?传感器数值是在正常波动,还是已经持续漂移?
电脑当然可以完成这些工作,但并不总在手边。准备一台支持 USB OTG 的安卓手机、数据线和 SerialFlow,就能直接连接开发板,在现场查看日志、筛选故障信息并向固件发送命令。

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 问题时,可以从 wifi、mqtt、disconnect、error 等关键词入手。下面的正则表达式能够覆盖几类常见严重错误:
(Guru Meditation|panic|assert|watchdog)
筛选只改变查看方式,不需要修改固件,也不必为了定位问题重新编译一个特殊版本。
6. 向固件发送调试命令
不少固件会提供简单的串口命令行。SerialFlow 支持发送普通文本、原始十六进制字节和不同的行结尾。命令没有响应时,应检查解析器要求的是 LF、CR、CRLF,还是不需要任何结尾。
例如输入 status,选择固件规定的行结尾后发送。status、reboot、wifi scan 或固定协议帧等常用内容,可以保存成快捷命令,反复测试时只需点击一次。
7. 解析日志或观察实时曲线
原始文本不一定是最容易理解的形式。
ESP 日志解码功能可以把 ESP 相关输出整理得更清晰。固件持续输出格式稳定的数值时,还可以打开图表视图观察变化趋势。尖峰、周期振荡、缓慢漂移和时序异常,在曲线上往往比在数字列表中更容易被发现。
这一方式适合传感器调试、电机控制、电源测量、温度调节,以及任何会周期性输出数值的控制循环。
8. 导出可复现的问题记录
捕获故障后暂停终端并分享或导出日志。提交问题时同时说明固件版本、开发板型号、串口参数以及触发故障的操作。
一段带有上下文、经过筛选的短日志,通常比几百行无关输出的截图更有价值。
示例:排查 ESP32 的 MQTT 掉线
假设设备烧录后可以正常连接,但运行几分钟就与 Broker 断开:
- 使用 ESPFlash 烧录待验证固件,并释放 USB 连接;
- 在 SerialFlow 中按固件参数打开串口;
- 复位开发板,捕获完整启动过程;
- 添加
wifi、mqtt、heap、error、watchdog等筛选词; - 搜索
(disconnect|timeout|panic|assert),逐个查看匹配位置; - 按固件要求的行结尾发送
status,读取当前状态; - 掉线发生后暂停并导出日志。
得到的记录会形成一条完整时间线:网络关联、Broker 连接、内存状态、故障信息,以及可能存在的复位原因。相比“设备离线了”,这些信息更接近可以直接修复的问题。
安卓 USB 串口常见问题
| 现象 | 建议检查 |
|---|---|
| 找不到 USB 设备 | 确认手机支持 USB Host/OTG,使用数据线,重新插拔开发板,并允许 Android 的 USB 授权。 |
| 烧录后提示端口被占用 | 在 ESPFlash 中断开或关闭烧录会话,再重新连接 USB 设备并打开 SerialFlow。 |
| 输出全部是乱码 | 对齐波特率、数据位、停止位与校验位。 |
| 已连接但没有输出 | 复位开发板,确认选中了正确 USB 接口,并检查固件是否向该串口写入日志。 |
| 开发板复位或频繁断开 | 检查供电稳定性与线材质量,同时确认 DTR/RTS 是否触发了开发板复位。 |
| 发送命令没有响应 | 检查文本/十六进制模式,并选择命令解析器需要的行结尾。 |
把完整的烧录—调试流程装进手机
ESPFlash 与 SerialFlow 对应同一套安卓开发流程中的两个阶段:先安装固件,再理解固件正在做什么。
可以打开 SerialFlow 产品页查看功能,或直接从 Google Play 安装 SerialFlow。需要继续处理固件部署时,ESPFlash 也可在 Google Play 获取。