
先把我折腾这台东西的起因说清楚。前前后后买过两台扫地机器人第一台撞了半年墙第二台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开发板 / 树莓派4B40 / 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章的路线图看三遍再决定买什么零件顺序一乱后面全是返工和退款。我自己这台机器到现在还在服役虽然丑了点每回扫完还会把地图存成一个带日期的文件翻回去看一个月前的地图能看出哪个角落好久没扫了。这种连接感是买一台成品机完全体会不到的。说不定你攒完那台机器也会冒出几个我没想到的点子那到时候欢迎回来聊。