先把我折腾这台东西的起因说清楚。前前后后买过两台扫地机器人,第一台撞了半年墙,第二台App偶尔抽风,地图画得跟抽象画似的。后来拆开一看,里面核心就那几样东西:一个激光雷达、两个带编码器的电机、一块主控板、一路吸尘风机,再加几个传感器。我当时脑子里冒出一个念头——这些零件我手里都攒得出,为什么不自己装一台?于是从那个月开始,我花了大半年时间,从选型、焊线、刷固件一路玩到让它真正扫完一间屋子。这篇文章就是把这几条路线和一张完整的攒机路线图摊开讲给你听。
先说清楚,这篇文章是写给三类人的。第一类是犹豫要不要买扫地机、但又想搞明白这东西到底值多少钱的人,看完你能知道一台扫地机的成本结构大概是什么水平;第二类是手里有一台成品机、但总嫌它不够聪明、想改装的人,我会告诉你哪些件能换、哪些换了也没用;第三类才是真正想从零攒机的人,这篇的重头戏,一张可以照着买的零件清单和组装次序,都在后面。提前给你交个底:自己攒不会比打折时买成品更省钱,但你能收获一台完全由自己控制的机器,以及一套别处拿不走的调试经验。
1. 三条路线怎么选:买成品、上套件、还是真从零攒
我理解很多人看到“拥有一台自己的扫地机器人”这个说法,第一反应是“那直接买一台不就行了”。确实,买成品是拥有,而且是最省心的拥有。但“自己的”这三个字,在不同人眼里的分量是不一样的。有的人要的是一台能扫地的家电,有的人要的是一台能改来改去的玩具,还有的人要的是从零把它造出来的过程。这三件事对应的路线完全不同。
路线A:直接买成品,价格透明、体验兜底。这条路没什么好展开的,电商平台上一搜一大把,小米、科沃斯、石头这些成熟的品牌机,两千块上下就能拿到支持激光建图、自动回充、App远程控制的型号。适合不想折腾、只想要干净地面的人。但我把它列进来,是想说一件事:即使是买成品,你也值得花五分钟了解一下它里面的传感器配置——是激光雷达还是视觉导航、有没有沿墙传感器、碰撞缓冲是什么结构。因为这些信息直接决定了你在路线B和路线C里怎么选零件。
路线B:半成品套件,动手但不上头。淘宝和闲鱼上能找到一类“DIY扫地机器人套件”,通常包含一条组装好的底盘、两个驱动电机、一块电机驱动板、一个激光雷达,有的还会带吸尘风机模块。商家会把引脚定义、接线图甚至SDK都给你配好,你只需要按图纸插线,再把官方固件烧进去。这套路的门槛是“会插线就行”,半天基本能跑起来。它比路线A有意思,但说实话自由度有限——你想换个大吸力的风机,风道对不上;你想改算法,固件是封装好的。适合第一次接触硬件、想感受一下整机是如何工作的朋友。
路线C:从零攒机,元器件自己选,代码自己写。这才是本文真正要展开说的一条路。底盘自己搭或买散件组装,主控用ESP32或树莓派,激光雷达单独买,电机驱动板自己匹配,吸尘部分单独设计风道,软件部分从固件到建图算法一步步自己铺。这条路没有回头路,中间任何一步出错都得自己排查,但成就感也是前两条路完全比不了的。我最终走的就是这条路线,下面这张攒机路线图,就是我反复拆装、调试之后沉淀下来的版本。
这三条路的差异我用一张表列出来,你对照自己想要的体验选就行。
| 对比维度 | 路线A:成品机 | 路线B:半成品套件 | 路线C:从零攒机 |
|---|---|---|---|
| 投入成本 | 1500-3000元 | 600-1200元 | 800-2000元(不含人工) |
| 动手门槛 | 几乎为零 | 会接线即可 | 需要焊接、固件、排查能力 |
| 可玩性与扩展性 | 低,基本封闭 | 中等,受限于套件设计 | 高,任意替换模块 |
| 最终效果 | 最接近宣传功能 | 能跑通基础扫地逻辑 | 取决于你的调试深度 |
| 收获的附加价值 | 干净的地面 | 一次硬件组装体验 | 一套完整的软硬件工程认知 |
我个人现在的态度是:如果你只是想地面干净,直接走路线A,别犹豫。但如果你已经点开了这篇文章,大概率是想知道一台机器到底是怎么“想”着扫地的——那就往下看路线C,这才是真正属于自己的那一台。
2. 攒机路线图总览:先画图再动手,别一上来就买零件
我见过太多第一次攒机的朋友,第一步就是从购物车开始,什么贵买什么,结果零件到了一堆,互相之间不匹配,最后全变成了吃灰的摆件。攒机的正确顺序是先画系统图,再选型,最后才下单。这个顺序反过来,大概率交学费。
2.1 先搞清楚扫地机是怎么“思考”的
一台扫地机器人再复杂,本质上就是三个环节的循环:感知、决策、执行。感知环节靠的是激光雷达、沿墙传感器、碰撞传感器、灰尘传感器这些“眼睛”;决策环节是主控板里的程序,根据传感器数据判断“我现在在哪、下一步往哪走”;执行环节就是两个驱动轮、边刷、风机这些“手脚”。你攒机的全过程,其实就是把这套闭环从零搭起来。理解这一点非常重要,因为后面所有选型都围绕它展开——你买的每一个零件,都要能对上感知、决策或执行中的一个位置。
2.2 五大子系统拆解与预算分配
我把整台机器拆成五个子系统:运动底盘(包括轮子、电机、电机驱动)、主控计算单元(ESP32或树莓派)、感知传感器组(激光雷达、超声/红外避障、碰撞开关)、电源管理(电池、保护板、降压模块)、清扫执行机构(风机、边刷、尘盒、风道)。下面这张表是我实测攒完之后比较合理的预算分配,单价是市场常见区间,上下浮动正常。
| 子系统 | 核心零件 | 参考预算(元) | 功能说明 |
|---|---|---|---|
| 运动底盘 | 底盘车架、带编码器直流电机、万向轮 | 150-300 | 承载整机,负责移动和里程计数 |
| 主控计算 | ESP32开发板 / 树莓派4B | 40 / 300 | 偏底层控制选ESP32,偏SLAM算法选树莓派 |
| 感知传感器 | RPLidar A1、超声波、微动开关 | 300-500 | 建图与避障信息输入 |
| 电源管理 | 18650电池组、保护板、DCDC模块 | 100-200 | 供电与电压转换,整机安全核心 |
| 清扫执行 | 风机、尘盒、边刷、软管风道 | 150-300 | 真正把灰尘收进来的部分 |
这五块加起来,不含工具和耗材,成本大约在800到1500元之间。注意这个价格已经很接近一台入门成品机的售价了,但你换来的是每一根线怎么走都心里有数的可控性,以及后续任何模块都能单独升级的弹性。
2.3 一张可以照着走的时间推进表
从零到能跑,我建议你把工期拉成三到四个月,不要急。第一个月只做底盘组装和电机驱动,让机器能直行、转弯;第二个月加传感器,让它“会躲墙”;第三个月才上主控和算法,开始建图;第四个月打磨使用细节,比如自动回充和清扫覆盖率。每一步都验证过再往下一步走,否则问题混在一起,排查起来会非常痛苦。我见过有人想一周搞定,结果卡在电机不转和雷达不出数据之间反复横跳,最后心态直接崩了。慢就是快,这话在攒机上特别对。
3. 底盘与运动系统:决定这台机器像不像扫地机的第一环
底盘是一切的载体。很多DIY到一半放弃的项目,尸体都是死在底盘上——要么转弯半径太大蹭墙,要么电机扭矩不够推不动整机,要么轮子打滑导致定位全部漂移。这块我踩的坑最多,放在最前面说。
3.1 底盘方案三种,别在淘宝买“长得像扫地机”的壳子
底盘有三种常见方案。第一种是直接买成品扫地机外壳加底盘总成,这种通常是为某个特定型号设计的,孔位固定,留给你的改造空间很小,不太推荐从零玩家用。第二种是用通用机器人小车底盘,比如履带式或四轮式,特点是结实、方便扩展,但履带式转弯时滑动大,对里程计很不友好,如果是做建图定位,尽量轮式。第三种是我最终用的方案:买一块平面底盘板,自己固定两个驱动轮和一个万向轮,形成“两驱+万向”的结构。
两驱加万向轮是家用扫地机最常见的形式。两个驱动轮分别位于底盘两侧中段,万向轮在前后做支撑。这种结构的优点是转向灵活,可以实现原地差速转向——左轮正转右轮反转,机器就能原地转圈,这在狭窄空间里特别重要。你选底盘板的时候注意三个尺寸:中心距(两个驱动轮之间的距离)、轮径、万向轮高度。中心距决定转弯半径,轮径决定过门槛能力,万向轮高度决定了整机平衡。
3.2 电机是刚需:带编码器的减速电机不能省
驱动电机这块我强烈建议直接用带霍尔编码器的减速电机,常见的是N20和GM37这两种小型直流减速电机。N20体积小、功耗低,适合轻量化设计,大概几十块一个;GM37扭矩更大,但体积和功耗也更大。选型逻辑很简单:先把底盘、传感器、电池这些重量加起来估算整机重量,然后看电机扭矩能否在不打滑的前提下推动这个重量。以我为例,整机含电池约2.5公斤,用的是GM37系列,实测直行和爬坡都够用。
编码器是这个环节真正的重点。编码器装在电机尾部,通过霍尔传感器感知电机转了多少圈,这样主控就能算出轮子走了多远、当前转速多少。没有编码器,机器就只能“盲走”,路线随缘;有了编码器,才能实现里程计(odometry),也就是通过左右轮转速积分出位姿变化,这是后面建图和路径规划的基础。接线时注意,编码器是AB双通道输出,通过两路脉宽的相位差可以判断正反转方向。我第一版只接了一路,结果倒车时里程计完全算错方向,排查了半个晚上才发现是少了一根线。
3.3 电源设计翻车最多,核心问题是“隔离”
底盘动起来需要电流,而这个电流足以把主控板电压拉垮。我刚开始直接用同一个电池组同时给电机和ESP32供电,一加速,ESP32就重启,百思不得其解。后来才想明白:电机启动瞬间电流能到一两安,导线在那一瞬间产生明显的压降,主控的3.3V跟着剧烈波动,直接触发掉电复位。解法分两步:一是选用合适的电机驱动板,用TB6612或DRV8833这类MOS管H桥驱动,效率比老掉牙的L298N高很多;二是主控和电机驱动板分开供电,电池出来后先用一个DC-DC降压模块稳定到5V,再给主控供电,电机则直接走电池电压。
电源管理的选型还有两个容易忽略的细节。电池我用的是四节18650锂电池串联,标称电压14.8V,所以必须加一块带均衡功能的保护板,防止单节过放;保护板的持续放电电流至少要选5A以上,否则电机高负载时保护板会直接断电。18650电池采购时尽量选带原厂保护板的成品电池组,不要自己去焊裸电芯,锂电池短路起火不是闹着玩的。这一步直接关系到安全,宁可多花几十块钱,也别拿裸电芯练手。
4. 感知系统:让机器“看见”房间的三种方案
底盘会动了之后,下一个核心问题就是“它怎么知道往哪走”。感知系统的配置直接决定这台机器是“会撞墙的傻小子”还是“会画图的聪明人”。
4.1 真正拉开体验差距的是激光雷达
在感知方案里,激光雷达是拉开体验差距的那一个零件。目前DIY圈用得最多的是思岚RPLidar系列,A1型号三百块出头,测距半径约8到12米,360度旋转扫描,每秒采样数千个点,性价比极高。它的工作方式就是一边旋转一边发射激光,测出每个角度上障碍物的距离,输出的是一圈一圈的极坐标点云数据。建图算法拿到这些点云,结合里程计信息,就能拼出房间轮廓。
这里必须讲清楚一个使用前提:激光雷达只能感知它所在高度横截面内的障碍物。也就是说,雷达装在20厘米高的位置,它只能看见20厘米这一圈有没有东西。凳子的横档、茶几的腿如果不是正好在这个高度穿过,雷达就看不见。所以实战中必须配合其他传感器做避障补盲,这也是为什么成品机也会在机身侧面加沿墙传感器、在正前方加碰撞缓冲。
4.2 便宜的避障传感器组合:超声波加微动开关
我的避障组合是三路超声波加一圈碰撞微动开关。超声波模块用的是HC-SR04,几块钱一个,原理是发射超声脉冲并计时回波,换算出前方障碍距离。三个模块分别朝左前、正前、右前安装,探测距离设成15到30厘米,发现障碍就减速转向。HC-SR04的缺点是探测角度只有约15度,且对软质吸音材料不敏感——窗帘、沙发靠垫这类东西,它经常“看不见”,所以还需要最后一道防线:碰撞开关。
碰撞开关方案很简单,在机身前半圈装一个活动的缓冲环,环上装两到三个微动开关。机器撞上障碍时,缓冲环受压触发开关,主控立即停轮或后退转向。别看这套机制原始,它恰恰是商品机也保留的“保底方案”——激光雷达漏掉的东西,最终靠物理接触兜住。选微动开关时注意看额定电流,接电机驱动逻辑引脚时电流很小,普通微动就够用。千万别直接把电机串进开关回路里,大电流会烧触点。
4.3 传感器布局与排线的经验谈
传感器的布局比很多人想的更讲究。激光雷达应该尽量装在底盘几何中心的正上方,这样建图坐标系的偏移最小;如果必须装偏了,在算法里要配置好tf变换,否则地图会虚。超声波模块安装高度建议在15到20厘米之间,贴近雷达平面,这样测距数据和雷达数据才能对齐。排线方面强烈建议用带插头的杜邦线配合热缩管固定,避免线束在底盘运动时松脱。我第二版机器上线前,光整理内部走线就花了一个下午,但之后调试时节省了无数时间——因为每一根线从哪里来、到哪里去都一目了然。
排线上还有一个常被忽略的等效性问题:编码器、雷达、电机驱动这些模块的“地”如果不共地,信号就会乱跳。具体现象就是雷达数据里时不时冒出几个毫无规律的噪点,或者编码器计数突然跳几千。排查方法很简单,用万用表量一下各模块GND之间是否有电压差,凡是存在的,全部用一根粗地线统一接回电池负极。
5. 软件与算法:从能开机到会扫地的三档难度
底盘和传感器凑齐了,机器还是一堆铁。软件部分我把难度分成三个档位,你可以根据自己的精力和编程基础选择停在哪一档。说实话,绝大多数玩家停在前两档就已经能收获一台能看家的小机器了。
5.1 第一档:ESP32写固件,先做到能遥控和随机碰撞
这是成本最低、见效最快的档位。ESP32开发板只要四五十块钱,用ArduinoIDE写代码,库生态非常成熟。这个阶段的目标很简单:手机或PC通过Wi-Fi发指令控制机器前后左右,机器自动执行一个“碰到障碍就换方向”的循环。核心代码就围绕两个功能:读传感器、控电机。
电机控制逻辑其实就一句话:通过PWM脉宽调制控制电机驱动板的输入电压,占空比越大转速越高;通过编码器中断计数获得当前转速,再用PID闭环把转速稳定在目标值。这部分的示例代码网上非常多,照抄没问题。需要注意的坑是:ESP32的PWM分辨率很高,但电机驱动板输入频率不要设太高,我实测1kHz左右最稳,超过10kHz有些驱动板会发热严重。传感器读取轮流进行,别在中断里做耗时操作,否则编码器计数会丢脉冲。
5.2 第二档:树莓派加ROS,跑起真正的SLAM建图
到了这一档,推荐把主控换成树莓派4B,装Ubuntu和ROS框架。机器人圈用ROS不是因为装酷,而是它把传感器驱动、坐标变换、建图、导航这些模块全部标准化了,你不需要从零写一个SLAM系统,而是把现成的轮子组织起来。
这一档的目标是让机器在遥控或半自主移动的过程中实时“画”出房间地图。ROS里最常用的轻量建图方案是Gmapping,原理是粒子滤波加激光匹配,对树莓派的算力压力相对友好,在小房间场景下效果不错。流程是:先用slam_gmapping节点订阅激光雷达话题,同时订阅里程计话题,bag文件回放也行,在线跑也行;然后开Rviz可视化,就能看到地图一点点被画出来。如果你房间比较大或者环形走廊多,可以考虑Google开源的Cartographer,回环检测更强,但CPU占用明显更高,树莓派跑起来会比较吃力。
这个阶段最常见的问题不是算法不会写,而是坐标变换配置错了。激光雷达必须知道自己在机器人坐标系里的精确位置(x、y、朝向),里程计也要正确发布到base_link,否则地图会重影甚至扭曲。我调这套tf配置调了整三个晚上,最后才意识到是雷达安装偏了5厘米没写进配置——硬件位置和软件配置必须严格一致,少一厘米都不行。
5.3 第三档:自动回充与弓字形全覆盖清扫
当建图稳定了,就可以往“真正会扫地”的方向打磨。两个进阶功能最实用:弓字形路径规划和自动回充。
弓字形规划的核心思想是“思路简单但极考验执行精度”:让机器人先沿墙直线走到尽头,然后旋转180度,平移一个机身宽度,再反向直线走。这样一趟一趟刷过去,能把房间覆盖面刷到最高。实现时要注意平移量必须略小于雷达测得的有效清扫宽度,否则会漏缝。我用的是机身宽度的一半加5厘米,实测覆盖率不错。直线走得直不直,取决于里程计和PID调校,这就是为什么前面强调编码器电机的必要性——没有轮速反馈,弓字形走不了三条线就开始画弧。
自动回充的实现方案是在充电座上加一对红外发射管,机器人尾部装上红外接收管。程序检测到电池电压低于阈值时,切换到“寻充模式”:先掉头回家方向,利用地图知道充电座的大致方位,靠近后用红外信号强度做细调,最后沿信号最强方向怼上去。这个话题说起来简单,但充电触点的对齐精度、停车瞬间的惯性控制、以及红外被阳光干扰的问题,每一个都值得单独写几千字。我建议想做这功能的玩家把它当最后一道菜,前面都稳定了再来尝试。
6. 组装实测与翻车记录:我攒机过程中踩过的坑
前面算是路线图,这一部分是我自己真金白银换来的反面教材。我不会只扔结论,直接把排查链路也写出来,希望你遇到类似问题的时候,不用再从头试一遍。
6.1 通电测试前的静态检查清单
第一步不是上电,而是静态检查。我后来养成了一个习惯:每次接线完成,上电之前先花十分钟过一遍清单——所有电源线正负极有没有接反;主控和电机驱动之间有没有共地;PWM信号线有没有和电机电源线绑在一起;激光雷达的插头方向对不对;电池保护板有没有正确接入;轮子空转时有没有摩擦外壳。这套清单看着细碎,但真的能救你无数次。我至少有两次因为正负极反接差点烧板子,都是靠这个清单拦下来的。
6.2 实时翻车现场:雷达供电不足,地图成花
我最崩溃的一次,是地图建到一半突然满屏噪点,雷达数据像是被丢进搅拌机里搅了一遍。当时第一个怀疑对象是算法参数没调好,来回改了Gmapping几个参数毫无改善。后来我用示波器测雷达供电口的电压,发现雷达转动时电压掉到4.6V左右——雷达的额定供电是5V,它一缺电就开始“说胡话”。根因是USB口输出电流上限不够,根本带不动雷达的启动电流。正确的解法是给雷达一个独立的5V/2A稳压供电模块,不能偷懒直接从主控USB口取电。这是很典型的“软件问题最终指向硬件”的排查案例,分享出来是希望你少走这一步。
6.3 跑通首扫之后的调参建议
地图能稳定画出来后,剩下的工作全是细节打磨。我的建议是先调里程计的轮径参数——找一段已知长度的直线走廊,让机器走一遍,对比实际距离和里程计读数,误差超过2%就微调轮径参数。这个误差直接影响所有路径规划和弓字形覆盖的精度,值得花时间调到准。然后是PID速度环,重点观察机器在直线过程中是否有左右蛇形摆动,有的话把比例系数降低一些。最后才是清扫逻辑的优化:沿墙距离设多少、碰到障碍后是原地转弯还是退后转弯、边角区域要不要额外绕一圈,这些就完全看你自己的喜好和户型了。
7. 如果你也想攒一台:三条最实在的建议
最后我不打算做技术总结,就说三件我在攒完这台机器之后、又过了三个月才彻底想明白的事。第一,这台DIY机器的实际吸力和商品机相比仍有明显差距,尤其是风机和风道的匹配,不是堆料就能解决的,如果你对吸尘效果有硬要求,现阶段更适合的方式是把它理解为一台“可编程移动平台”,而不是一台严格意义的扫地机。第二,攒机的核心收获不在“省了多少钱”,而在你随时能改它的行为逻辑——今天想让它在宠物食盆周围绕一个圈,明天想让它在某个房间先扫一遍再回来,这些需求在成品机上基本实现不了,在自己攒的机器上就是改几行代码的事。第三,如果有朋友也想入坑,我建议他先把第2章的路线图看三遍,再决定买什么零件,顺序一乱,后面全是返工和退款。
我自己这台机器到现在还在服役,虽然丑了点,每回扫完还会把地图存成一个带日期的文件,翻回去看一个月前的地图,能看出哪个角落好久没扫了。这种连接感,是买一台成品机完全体会不到的。说不定你攒完那台机器,也会冒出几个我没想到的点子,那到时候欢迎回来聊。