基于Micro:bit与REKA:BIT的桌面清洁机器人:从零搭建避障吸尘原型
1. 项目概述:用REKA:BIT与Micro:bit打造你的第一台桌面清洁机器人
作为一名喜欢鼓捣硬件的创客,我总觉得桌面上的橡皮屑、饼干渣清理起来特别麻烦。市面上的扫地机器人动辄上千,功能过剩,而自己动手做一个专属于桌面的、能自动避障的小清洁工,不仅成本极低,过程也充满乐趣。这次,我就带大家用REKA:BIT扩展板和Micro:bit微控制器为核心,配合一些常见的传感器和电机,从头搭建一个简易但功能完整的自动吸尘器原型。
这个项目的核心价值在于,它不是一个简单的“连线-烧录”玩具,而是一个完整的微型机器人系统实践。你将亲身体验到从机械结构搭建、电子系统连接,到逻辑控制编程的全流程。REKA:BIT板子完美解决了Micro:bit原生I/O口不足、驱动能力弱的问题,让我们能轻松连接电机和传感器,把想法快速变成现实。无论你是对机器人感兴趣的在校学生,还是想给孩子做一个寓教于乐科技项目的家长,或是希望入门嵌入式开发的爱好者,这个项目都能让你在动手过程中,深刻理解自动控制、传感器反馈和机电一体化的基本逻辑。
2. 核心组件选型与功能解析
2.1 主控与扩展板:为什么是Micro:bit + REKA:BIT?
Micro:bit是一块非常优秀的入门级微控制器开发板,它集成加速度计、磁力计、蓝牙和LED点阵,编程环境(MakeCode)图形化且友好。但其原生引脚驱动电流小(约5mA),无法直接驱动电机,且模拟/数字接口数量有限。直接用它做移动机器人,在动力和扩展性上会捉襟见肘。
这时,REKA:BIT扩展板的价值就凸显出来了。它专为Micro:bit机器人项目设计,主要解决了三大痛点:
- 电机驱动:板载双路直流电机驱动芯片(如TB6612FNG),每路可提供连续1.2A的驱动电流,足以带动我们项目中使用的小型减速电机。这意味着我们无需再外接笨重的电机驱动模块,接线变得极其简洁。
- 电源管理:REKA:BIT集成了高效的DC-DC降压电路,允许我们使用单节3.7V锂电池或4节AA电池(6V)供电,并为Micro:bit和所有外设提供稳定、隔离的5V和3.3V电压。这避免了因电机启停造成的电压波动导致Micro:bit重启的经典问题。
- 接口扩展与保护:它将Micro:bit有限的引脚扩展为多个带有防反插设计的Grove接口(用于连接超声波传感器等)和电机接线端子,并且所有接口都做了电平转换和过流保护,极大降低了接线错误烧毁元件的风险。
注意:在选择REKA:BIT时,请确认其版本与你的Micro:bit(V1或V2)兼容。V2版Micro:bit的麦克风和扬声器功能可能会与某些早期扩展板的引脚定义冲突,建议购买时选择明确支持V2的型号。
2.2 感知与行动:传感器与执行器的选型考量
超声波传感器(HC-SR04) 是本项目的“眼睛”。它通过发射超声波并接收回波来计算前方障碍物的距离。选择它而非红外传感器,主要基于两点:一是它对不同颜色和材质的物体检测距离一致性好(红外对深色物体不敏感);二是它成本低廉、技术成熟。其典型探测范围在2cm到400cm之间,对于桌面机器人来说完全够用。我们需要关注的是其探测角度(约15度),这决定了机器人的“视野”宽度。
执行机构分为两部分:
- 移动底盘:我们选用了一个常见的“2WD智能机器人小车底盘套件”。它包含两个带减速齿轮的直流电机、轮子、万向轮和底盘板。减速电机扭矩大、速度适中,非常适合机器人平稳移动。选择这种集成套件能省去大量机械加工时间,让我们专注于控制逻辑。
- 吸尘风扇:这里使用了一个小型直流电机(通常称为“空心杯电机”)加装螺旋桨作为吸尘动力源。关键在于,我们将其连接到了REKA:BIT的伺服电机(Servo)接口上。这是一个非常巧妙的做法:伺服接口通常输出的是PWM(脉冲宽度调制)信号来控制舵机角度,但它本质上也是一个可控的电源输出口。当我们将一个直流电机接上去,并让Micro:bit输出一个固定占空比的PWM信号时,该接口就会持续输出一个稳定的电压(通常是6V),从而让电机全速转动。这比使用直流电机接口更简单,因为无需考虑调速,只需“打开”或“关闭”吸尘功能。
2.3 结构材料:为什么是瓦楞纸板?
项目主体结构选用瓦楞纸板,这绝非将就,而是一个深思熟虑的、充满创客精神的决定。
- 快速原型:纸板易于切割、折叠和粘合,能让我们在几分钟内验证结构设计,迭代修改成本几乎为零。
- 轻量化:轻质的结构减轻了电机负载,让机器人移动更灵活,耗电更少。
- 安全与环保:制作过程无需专业工具(如电钻、锯子),适合所有年龄段的人参与,且材料可回收。
- 可定制性:你可以轻松设计不同形状和大小的外壳,来容纳更大的集尘盒或不同布局的传感器。
当然,它的缺点是强度低、不防水。如果你希望做一个更耐用的版本,可以在验证设计后,用亚克力板或3D打印件来复刻纸板结构。
3. 机械结构搭建详解
3.1 底盘组装:细节决定运行平稳度
拿到底盘套件后,不要急于上螺丝。首先,撕掉底盘板、联轴器和编码盘(如果套件包含)上的黄色保护膜。这些小薄膜如果留在上面,会导致部件固定不牢或产生异响。
安装电机是关键步骤。将电机放入底盘板的预留槽中,用配套的自攻螺丝固定。这里有一个极易出错的关键点:注意电机引线端铜片(或出线口)的朝向。务必让两个电机的引线端都朝向底盘外侧(即安装轮子的一侧)。如果其中一个装反了,会导致两个轮子转向相反,机器人原地打转。你可以记住一个口诀:“电线朝外,轮子好带”。
接下来安装万向轮(通常是一个球形或小滚轮)。使用套件提供的立柱和螺丝,将其紧固在底盘前端或后端(取决于你的设计)。确保它安装牢固,不晃动,因为它是机器人第三个支撑点,影响整体平衡。
最后安装轮子。将联轴器(一个带有内六角锁紧孔的小套筒)套在电机轴上,然后用内六角扳手拧紧顶丝。再将轮子对准联轴器按进去。确保轮子安装到位,没有明显的轴向晃动。
3.2 吸尘器本体制作:从平面纸板到立体结构
首先,根据设计图纸或你的构思,在纸板上画出各个面的展开图并切割下来。典型的吸尘器本体像一个没有盖子的扁盒子,包含底板、左侧板、右侧板、前挡板和后挡板。
- 粘合主体:在底板的边缘涂上热熔胶,先将左侧板和右侧板垂直粘上。用书本或直角尺辅助,确保它们与底板垂直。待其冷却固定后,再粘合前、后挡板。这样分步操作,比一次性粘合所有面更容易控制结构方正。
- 设计可开合顶盖:为了便于清理集尘盒,顶盖不应永久粘死。我们可以将顶盖纸板的一边用胶带(如布基胶带)像铰链一样粘在主体后挡板上方。其他三边则可以设计简单的卡扣,或者干脆不做固定,依靠吸力吸附。这样既能密封,又方便打开。
- 制作集尘盒:这是提高实用性的重要一步。剪裁一块纸板,折成一个比吸尘器内部通道略小的无盖小盒。将其放置在吸尘器内部,位于风扇进气口的后方。它的作用是收集被吸入的灰尘,防止灰尘直接粘附在风扇叶片或堵塞风道。集尘盒应可以轻松从后方或侧方抽出倒灰。
- 安装风扇单元:在吸尘器本体内部靠近前部的位置,为风扇电机固定一个支架(可以用纸板折一个小平台)。用扎带或热熔胶将电机牢固地固定在这个支架上,确保风扇叶片旋转时不会碰到任何内壁。风扇的进气口应对准底板上开设的吸尘口,出气口则朝向后方或侧方。
3.3 总装与配重平衡
将组装好的吸尘器本体用热熔胶或螺丝固定到小车底盘上。固定前,务必考虑重心位置。理想的重心应该落在两个驱动轮轴与万向轮形成的三角形中心区域。如果吸尘器本体太靠前,万向轮压力过大,可能导致转向不灵;太靠后,则驱动轮可能抓地力不足。你可以将电池(通常是最重的部件)放在底盘上,通过移动它的位置来微调重心。
最后,将超声波传感器安装在前挡板中央,高度建议离地5-10厘米,这个高度能有效探测到桌腿、墙壁等障碍,又不易被地面微小起伏干扰。
4. 电路连接与原理剖析
4.1 接线图与信号流
整个系统的电路连接非常清晰,遵循“传感器输入 -> 主控处理 -> 执行器输出”的逻辑链。
- 超声波传感器连接:将HC-SR04的Grove接口线缆,插入REKA:BIT上标有“Grove 1”或类似字样的4针接口。在REKA:BIT上,这个接口的四个引脚通常被映射到Micro:bit的P0(Trig/触发)、P1(Echo/回波)、3.3V和GND。接线时无需区分正反,Grove接口的防呆设计保证了正确连接。
- 驱动电机连接:底盘的两个直流电机,分别接入REKA:BIT板上标有“Motor A”和“Motor B”的接线端子。每个端子有两颗螺丝,分别对应电机的正极(+)和负极(-)。电机的红线接正极,黑线接负极。如果后续测试发现机器人前进时是倒退的,只需将同一个电机的两根线对调即可。
- 吸尘风扇连接:这是最容易接错的地方。取一根伺服电机线(三线:红-电源、黑-地、黄/白-信号),将红色线接到REKA:BIT 伺服接口的负极(-),黑色线接到正极(+)。是的,你没看错,是反着接的!这是因为我们想让电机反转。大多数小型螺旋桨的设计,要求风扇叶片逆时针旋转才能产生向下的气流(吸力)。而伺服接口默认的PWM信号可能会让电机正转。通过反接电源线,我们强制电机反转,从而获得正确的吸力方向。
- 电源连接:将4节AA电池装入电池盒,然后将电池盒的红黑线接入REKA:BIT的“Power In”端子。确保极性正确(红正黑负)。打开REKA:BIT上的电源开关。
4.2 关键接口工作原理深度解析
超声波传感器测距原理:Micro:bit通过P0引脚向HC-SR04的Trig脚发送一个至少10微秒的高电平脉冲。这个触发信号让传感器发射一束8个40kHz的超声波。超声波遇到障碍物反射回来,被传感器接收。Echo引脚会输出一个高电平脉冲,其持续时间与超声波往返时间成正比。Micro:bit通过P1引脚测量这个高电平脉冲的宽度(单位:微秒),然后根据公式 距离 = (高电平时间 * 声速) / 2 计算距离。声速在常温下可取340米/秒。编程时,MakeCode的扩展积木块已经封装了这个过程,我们直接读取厘米数即可。
REKA:BIT电机驱动原理:REKA:BIT内部的TB6612FNG电机驱动芯片是一个H桥电路。简单理解,它像两个可以双向打开的闸门,控制电流流入电机的方向。当Micro:bit通过I2C或特定IO口向REKA:BIT发送“Motor A 正转,速度100”的指令时,芯片内部的逻辑电路会控制相应的MOS管开关,让电流从电机A+流入,从电机A-流出,电机正转。通过PWM调节开关的比例,就能实现调速。
伺服接口驱动直流电机:REKA:BIT的伺服接口输出电压通常由板载的6V稳压器提供。当Micro:bit向对应的信号引脚(例如P13、P14等,具体看REKA:BIT手册)发送PWM信号时,这个接口就会输出6V电压。占空比(高电平时间占整个周期的比例)理论上可以调节电压有效值,但为了获得最大吸力,我们通常设置占空比为100%(即持续高电平),让电机全力工作。反接线序就是为了利用这个稳定电压源。
5. 编程逻辑与代码实现
5.1 MakeCode环境设置与扩展添加
打开浏览器,访问Microsoft MakeCode for micro:bit网站。新建一个项目。点击“扩展”按钮,在搜索框中输入“REKA:BIT”或“Cytron”,找到官方扩展并添加。添加成功后,积木区会出现一个名为“REKA:BIT”的新类别,里面包含了控制电机、伺服、读取Grove传感器等专用积木块。
实操心得:有时网络原因可能导致扩展添加失败。如果遇到此问题,可以尝试手动导入扩展。在Github上搜索“pxt-REKA-BIT”,找到其项目页面,复制其中的
.hex文件下载链接,然后在MakeCode的“扩展”中选择“从URL添加”,粘贴链接即可。
5.2 核心避障算法设计与代码拆解
我们的目标是实现一个简单的“随机避障”算法,这比复杂的路径规划更简单可靠,也更能体现反应式机器人的思想。逻辑如下:
- 机器人默认状态为直线前进。
- 超声波传感器持续测量前方距离。
- 如果距离大于一个安全阈值(例如15厘米),则继续前进。
- 如果距离小于或等于安全阈值,说明即将撞上障碍物,则执行避障动作: a. 立即停止。 b. 稍微后退(可选,防止卡住)。 c. 随机选择一个方向(左转或右转)旋转一个随机角度。 d. 旋转完成后,继续前进。
这个算法让机器人的行为看起来有点“笨拙”但有效,能在复杂环境中通过不断试探找到出路。
下面是基于MakeCode积木块的核心逻辑实现(文字描述其结构):
吸尘风扇的控制相对独立。我们可以在“当开机时”积木块中,添加一条设置伺服角度的指令。虽然我们接的是直流电机,但我们可以把它想象成一个舵机。设置一个固定的角度值(例如180度),实际上会让伺服接口持续输出高电平,从而让电机持续转动。我们可以将其与一个按钮控制关联,实现开关功能。
5.3 代码优化与调试技巧
- 防误触发处理:超声波传感器在极近距离或探测边缘物体时,可能会返回“0”或一个异常大的值。可以在逻辑判断前加一个条件:只有当距离值在2厘米到50厘米这个合理范围内时,才用于避障判断,否则视为无效数据,继续前进或执行一个安全动作(如慢速前进)。
- 加入状态指示:利用Micro:bit的LED点阵,可以直观显示机器人状态。例如,前进时显示箭头,遇到障碍时显示“X”,转向时显示旋转动画。这非常有助于调试。
- 速度与转向的微调:在积木块中,电机的速度值不是线性的百分比。你可能需要多次试验,找到最适合你机器人重量和地面摩擦力的前进速度及转向速度。转向速度太快容易打滑,太慢则效率低下。
- 使用变量:将“安全距离”、“前进速度”、“转向时间”等参数设置为变量,并在程序开头赋值。这样,当你需要调整时,只需修改变量的值,而不用在密密麻麻的积木堆里一个个找。
6. 系统调试、问题排查与优化
6.1 上电前检查清单
在接通电源前,花两分钟做一次彻底检查,能避免大部分硬件损坏:
- [ ] 电源极性:再三确认电池盒红线接REKA:BIT的“VIN+”或“+”,黑线接“GND”或“-”。
- [ ] 电机线序:两个驱动电机的红线是否都接了“+”端子?风扇电机的红线是否接了伺服口的“-”?
- [ ] 接口紧固:所有接线端子的螺丝是否拧紧?Grove接口是否插到底?
- [ ] 机械干涉:用手轻轻转动轮子和风扇,检查是否有卡滞,是否刮擦到车身或线缆。
- [ ] 开关状态:REKA:BIT的电源开关是否处于“OFF”状态?
6.2 常见问题与解决方案速查表
| 问题现象 | 可能原因 | 排查步骤与解决方案 |
|---|---|---|
| 上电后无任何反应 | 1. 电源开关未开 2. 电池电量耗尽或装反 3. 电源线未接牢 |
1. 打开REKA:BIT电源开关。 2. 用万用表测量电池电压,或更换新电池,检查安装方向。 3. 重新插拔电池盒接线。 |
| Micro:bit LED不亮,但电机有反应 | Micro:bit未正确插入或损坏 | 1. 拔下Micro:bit,直接通过USB连接电脑,看其是否正常启动。 2. 重新将Micro:bit牢固地插入REKA:BIT的卡槽,确保金手指完全接触。 |
| 机器人不动,但Micro:bit正常 | 1. 程序未下载或下载失败 2. 电机接线错误或松动 3. 电机损坏 |
1. 检查MakeCode中是否已选择正确的设备(micro:bit),重新编译下载程序。 2. 检查电机端子螺丝是否拧紧,用万用表通断档测量电机两端在程序运行时是否有电压变化。 3. 直接将电机两端接3V电池,看是否转动。 |
| 机器人只朝一个方向转圈 | 其中一个驱动电机的两根线接反了 | 将原地转圈时作为“内圈”的那个轮子的电机线正负极对调。 |
| 超声波传感器读数始终为0或异常大 | 1. 传感器未插好 2. 前方有强吸音材料或障碍物太近/太远 3. 传感器故障 |
1. 重新插拔Grove连接线。 2. 换一个平整的硬质障碍物(如书本)在10-30cm处测试。 3. 尝试更换一个传感器。 |
| 吸尘风扇不转或反转(吹气) | 1. 风扇电机电源线接反 2. 伺服端口未在程序中启用 3. 风扇叶片安装方向错误 |
1. 检查风扇电机红线是否接伺服口“-”,黑线接“+”。 2. 检查程序中是否设置了对应伺服引脚的角度。 3. 观察叶片曲面,应凹面朝上安装以产生向下气流,否则需拆下翻转。 |
| 机器人行为混乱,不受控制 | 1. 程序逻辑错误(如循环过快) 2. 电源干扰导致Micro:bit重启 3. 多个中断或事件冲突 |
1. 在循环中加入短暂延时(如50ms),避免传感器读取过于频繁。 2. 确保电池电量充足,尝试在电机电源端并联一个100uF以上的电解电容滤波。 3. 简化程序,暂时禁用非核心功能(如LED显示)进行测试。 |
6.3 性能优化与功能扩展思路
基础功能实现后,你可以尝试以下优化和扩展,让机器人更智能:
- 增加“悬崖”检测:在底盘前方或下方加装一个红外反射传感器或巡线传感器,用于检测桌面边缘。当传感器检测到“悬空”(即桌面边缘)时,让机器人执行后退加转向的避障动作,防止跌落。
- 实现路径规划:进阶玩法是尝试让机器人记住走过的路径。虽然Micro:bit内存有限,但可以尝试实现简单的“沿边清扫”算法:让机器人始终沿着房间的左侧墙壁(或右侧)保持固定距离行进,遇到拐角则沿墙转弯。这需要更精确的传感器(如多个红外测距)和更复杂的PID控制逻辑。
- 增加垃圾检测:这属于“视觉”范畴的挑战。可以尝试在吸尘口附近安装一个简单的光电传感器(对射式)。当有较大颗粒(如纸屑)通过时,会短暂遮挡光线,产生一个脉冲信号。Micro:bit可以统计这个信号次数,估算清洁量,甚至通过蓝牙发送到手机显示。
- 无线控制与状态监控:利用Micro:bit V2内置的蓝牙功能,你可以编写一个简单的手机App(用MIT App Inventor等工具),通过蓝牙遥控机器人的前进后退,并实时接收超声波传感器返回的距离数据,在手机上显示环境地图(简易版)。
- 结构强化与美化:用CAD软件(如Fusion 360)为你的机器人设计一个专属的3D打印外壳。这不仅能保护内部元件,还能让作品外观更专业。你可以在外壳上预留出传感器孔位、散热孔和集尘盒抽拉槽。
调试这样一个项目,最享受的莫过于看到一堆散乱的零件,在你的逻辑指挥下,变成一个能自主行动的智能体。过程中遇到的每一个问题,从机械卡顿到程序跑飞,都是加深你对系统理解的最好机会。记住,在创客的世界里,没有一次成功是理所当然的,但每一次失败的排查,都让最终的成功更加甜美。拿起你的工具,开始搭建吧,你的桌面清洁管家正在等待被创造出来。