我买的是机器人吸尘器,不是云间谍

发布: (2026年1月13日 GMT+8 03:21)
8 分钟阅读
原文: Dev.to

Source: Dev.to

(请提供您想要翻译的具体文本内容,我将为您翻译成简体中文。)

背景:购买二手机器人

我没有购买这款机器人吸尘器,因为我并不急需自动清洁。

  • 保修
  • “别碰它,可能会弄坏”的心理障碍
  • 必须“物有所值”才能进行实验的期望

全新的设备感觉像是从制造商那里借来的东西。

为什么选择此模型

机器人是 小米机器人拖把 Essential

期望 vs 现实

  • 机器人工作得很好。
  • 用保险杠碰撞障碍物。
  • 从轮编码器计算位置。
  • 使用基本的方向和运动传感器。

没有 LiDAR。没有魔法。只有接触、数学和重试。而且效果出奇地好。

机械问题与维修

轮子问题

机器人已使用,轮子出现磨损。我的修复方法简单但有效:

  1. 给金属衬套加润滑油。
  2. 用一小管氰基丙烯酸酯胶(强力胶)填补受损的塑料座。
  3. 等待约 2 小时以完全固化。
  4. 拆下衬套并重新安装。

结果: 装配紧密,无晃动,轮子恢复正常。这是我首次确认该设备可修复的信号。

湿滑表面牵引(未解决)

仍有一个机械问题未解决:在湿滑表面的牵引力。

  • 可能原因:下压力不足。
  • 我正在进行实验,目标是在不超负荷电机的前提下实现可靠的牵引力。

湿式清洁系统

水喷嘴堵塞。趁机我还修复了为拖把布供水的小型水泵。

从按钮到控制:真正问题的起点

在修复机械问题后,机器人工作了……几乎。

  1. 走到它面前。
  2. 按下实体按钮。
  3. 看着它拼命尝试连接 Wi‑Fi,最终放弃。

恢复出厂设置也没有帮助。机器人想要 Wi‑Fi,但从未成功加入。

小米机器人拖把 Essential 内部结构

机器人有明确的内部层级:两个“大脑”。

电机控制大脑(MCU)

  • 轮子编码器
  • 碰撞传感器
  • 陀螺仪和方向
  • 导航逻辑
  • 地图构建

基于可用的技术数据和对类似小米机器人的分析,这款 MCU 通常具备:

  • 用于控制逻辑的 32 位 RISC 核心
  • 专用 DSP 核心用于实时传感器处理
  • 为导航和类似 SLAM 的计算优化的硬件块
  • 用于固件和地图的外部闪存

MCU 并不关心 Wi‑Fi;它不了解云是什么。

连接大脑(ESP32)

  • Wi‑Fi 连接
  • 与小米云的通信
  • OTA(空中)更新
  • 转发指令和权限

驱动电机。

倾听而非猜测:UART 抓取

UART5 RX / TX → MCU
UART7 TX / RX → ESP32

为什么不直接使用 ESP32?因为我需要同时使用三个 UART 端口:

  • MCU ↔ ESP32 通信
  • ESP32 ↔ MCU 通信
  • MCU 诊断端口(在释放 UART5 后再连接)

一块 Orange Pi 静默地嗅探所有流量:不注入、不修改,仅仅是观察。我在同一个终端窗口中同时读取诊断 UART 和官方 ESP32 UART 的数据。

观察

  • 检测到错误指令。
  • 诊断 UART 显示电机电流、编码器数值、陀螺仪读数以及内部标志。

启动清扫时的诊断输出示例:

Oc[3]=410  Ic[3]=-43  k p=101  
Oc[3]=363  Ic[3]=-58  
p offsg 213  
gyrod=10029  
sg 181  
crc=15fb  
STL start clean  
default map enable:1

通过官方 UART 发送给 MCU 的指令会产生数值形式的状态码(okerror…)。

MCU -> ESP32 : platform_name
ESP32 -> MCU : ok
MCU -> ESP32 : firmware_id
ESP32 -> MCU : ok
MCU -> ESP32 : mac_device ?
ESP32 -> MCU : 
MCU -> ESP32 : “Can I request OTA updates?”
ESP32 -> MCU : ok

当明确 MCU 只是在向 ESP32 请求许可时,解决方案显而易见:采用最小化的 ESP32 固件架构,提供一个用于调试的串行终端、一个记录所有 UART 流量的日志器,以及双 UART 监控功能。

Current Status

ESP32 固件仍在开发中。核心系统的大部分功能已实现——约 80 % 完成。

  • 双 UART 监控工作正常。
  • 调度器、调度系统和多核系统已运行。
  • 基本的类似 MIOT 的协议处理(JSON API)已实现。
  • OTA 模块已集成,这将简化未来的修改(例如,连接显示屏)。

完成后,机器人将具备完整的本地控制、可靠的遥测以及可选的显示反馈——全部无需云端。

物理改装:用“头部”替换按钮

在软件和 UART 控制就绪后,下一步是实现物理可访问性。

  • 将按钮 / UART 并行连接到 ESP32 和诊断端口。
  • 临时安装按钮和 LED。

此物理改装实现了多个目标:

  • 即使没有应用程序,也能直观地与机器人交互。
  • 保持视觉状态指示简洁且易于观察。
  • 在保留完整 MCU 控制的同时,可选择使用原始按钮。

可以把它想象成一个“指挥塔”——一个小型驾驶舱,为机器人赋予个性并提供清晰的界面。

如果重新设计这款机器人,我会做的改变

  1. 让云遥测可选,并明确基于权限。
  2. 为高级用户提供官方 UART 或 API。
  3. 允许轻松更换或扩展 LED 和按钮,以实现自定义界面。
  4. 包含模块化设计,以便附加显示屏或额外传感器。

这些改变将使工程师和爱好者能够:

  • 了解机器人在做什么。
  • 安全地自定义行为。
  • 避免把一个简单的清洁机器人变成意外的云间谍。 😁
Back to Blog

相关文章

阅读更多 »

你好,我是新人。

嗨!我又回到 STEM 的领域了。我也喜欢学习能源系统、科学、技术、工程和数学。其中一个项目是…