用micro:bit与舵机制作交互式纸板机器人:从电容触摸到机械传动
1. 项目概述:一个会“怕痒”的纸板机器人
如果你手头有一块micro:bit或者类似的开发板,几个闲置的舵机,再加上一些纸板和厨房里的铝箔,你会用它来做什么?今天分享的这个“怕痒机器人”(Ticklebot)项目,就是一个绝佳的答案。它不是什么高精尖的工业机器人,而是一个用最简单材料实现的、能与人类进行物理互动的趣味装置。当你用手指去“挠”它的脚底板时,它会像被挠痒痒一样,手舞足蹈地摆动双臂,反应既直接又充满童趣。
这个项目的核心价值在于,它完美诠释了“低门槛、高创意”的DIY精神。我们不需要3D打印机、激光切割机或者复杂的编程知识,仅用唾手可得的材料,就能将基础的电子学原理(触摸传感、信号控制)和机械结构(连杆传动)生动地呈现出来。它特别适合作为STEM教育、亲子工作坊或者个人创客的入门项目,在动手制作的过程中,你能直观地理解电容触摸传感是如何工作的,舵机是如何接收信号并转化为机械运动的,以及如何为一个简单的想法设计出可行的物理结构。
我最初设计这个机器人,是为了在线上工作坊中向孩子们演示交互式电子项目的乐趣。它的所有部件——身体、手臂、腿——都由卡纸折叠而成,导电部分用的是铝箔,驱动部分是两个微型舵机,大脑则是一块micro:bit。整个制作过程就像在完成一个立体的、会动的纸质手工,但最终成品却拥有了“生命”。接下来,我将详细拆解从设计思路、材料准备、组装技巧到代码调试的全过程,并分享我在多次制作和教学中积累的实操心得与避坑指南。
2. 核心思路与材料选型解析
2.1 设计思路:如何让纸板“感知”触摸?
这个项目的灵魂在于“交互”。我们需要的交互方式是直接且有趣的——“挠痒痒”。因此,触摸传感器成为了必然选择。现代嵌入式开发板(如micro:bit v2, Circuit Playground Express)通常集成了电容式触摸传感器,其原理是检测引脚上电容的微小变化。人体本身是一个导体,当手指靠近或接触连接到触摸引脚的导体时,会形成一个额外的电容,从而改变电路的振荡频率,被开发板检测到。
这里的关键创新在于传感器介质的选择。我们并没有使用昂贵的专用触摸按键,而是采用了铝箔。铝箔具有良好的导电性,且极易塑形和粘贴,成本几乎可以忽略不计。将铝箔贴在机器人的纸板脚底,再用导线(如鳄鱼夹)将其与开发板的触摸引脚连接,这样,铝箔就变成了一个巨大的、可定制的触摸按键。触摸机器人的脚,就等于触摸了开发板的引脚,从而触发预设的动作。
动作的执行者我们选择了最常见的微型舵机。舵机是一种可以精确控制角度的电机,通过脉冲宽度调制(PWM)信号驱动。它的优点在于控制简单(通常只需一根信号线)、扭矩适中,并且自带减速齿轮组,动作速度不会太快,显得更拟人化。我们使用两个舵机分别控制机器人的左右手臂,当触摸信号触发时,让两个舵机同步摆动,就能产生“手舞足蹈”的效果。
整个系统的逻辑链条非常清晰:触摸铝箔脚底 → 电容变化被micro:bit检测 → micro:bit通过程序发出PWM信号 → 两个舵机收到信号并旋转 → 带动纸板手臂摆动。这个链条中的每一个环节,我们都可以用低成本、易获取的材料来实现。
2.2 材料清单与选型要点
根据上述思路,我们需要准备以下材料。我会详细解释每一项的选择理由和注意事项。
1. 主控开发板
- 首选:micro:bit v2。它内置了多个可配置为电容触摸的GPIO引脚(P0, P1, P2)以及其Logo区域本身也是一个大型触摸传感器。其图形化编程环境(MakeCode)对初学者极其友好。
- 备选:Circuit Playground Express (CPX)。Adafruit的这款板子同样优秀,集成了多个电容触摸焊盘(标记为A1-A7),且周边生态丰富。编程可以使用MakeCode或CircuitPython。
- 注意micro:bit v1:v1版本使用的是电阻式触摸,其原理是需要人体同时构成回路(即触摸传感器引脚和GND引脚)。这意味着在触摸时,你的手指需要同时接触铝箔和接地(例如,另一只手触摸开发板的GND引脚),体验上不如v2的电容式方便。如果使用v1,在接线和代码上需要做相应调整。
2. 执行机构
- 微型舵机 (9g Servo) x 2:这是最通用的型号,尺寸和扭矩适合纸板机器人。务必确认你购买的是标准舵机(0-180度旋转),而非连续旋转舵机。后者无法固定角度,只会不停地转。舵机通常附带多个不同形状的舵盘(舵机臂),我们需要用到它来连接纸板手臂。
3. 连接与扩展
- 舵机连接方案(三选一):
- 扩展板(推荐):这是最整洁、稳定的方案。扩展板为micro:bit提供了标准的3针舵机接口(信号、电源、地线),并自带稳压,避免舵机动作时电流波动影响主板。文中作者尝试了Grove Bitmaker Lite,但因其引脚布局限制了触摸引脚的选择,并不完美。我更推荐Kitronik的All-in-One Robotics Board或SparkFun的micro:bit IO Board,它们提供了更多可用的引脚。
- 面包板+杜邦线:最灵活、通用的方案。你需要一个微型面包板、公对公杜邦线,并可能需要对舵机的三线接口进行适配(通常舵机接口是母头,需要连接公头杜邦线)。这种方式适合学习和调试。
- 鳄鱼夹直接连接(最简易):直接将鳄鱼夹夹在舵机的信号线和micro:bit的GPIO引脚上。电源和地线也需要同样连接。这种方式最“原始”,但接线容易松动,只适合临时演示。
- 触摸传感器连接:
- 铝箔:普通厨房用铝箔即可。
- 导电胶带(可选但推荐):比铝箔更易粘贴和塑形,导电性稳定,是更好的长期选择。
- 连接线:鳄鱼夹线是最方便的选择,可以牢固地夹住铝箔和开发板引脚。如果使用导电胶带,也可以直接将胶带延伸粘贴到引脚上。
4. 结构材料
- 卡纸或厚手工纸:建议使用200gsm以上的卡纸。普通A4打印纸太软,无法支撑舵机和多次摆动。彩色卡纸或牛皮卡纸都是不错的选择。
- 工具:剪刀、尺子、白胶或手工胶水(干后有一定柔韧性的为佳)、铅笔。
注意:电源问题。舵机工作时需要较大的电流(每个可能高达500mA),micro:bit的USB口或电池盒可能无法同时稳定驱动两个舵机,可能导致开发板复位。最佳实践是使用扩展板,并通过扩展板的外部电源接口(如电池盒接口)为舵机单独供电,让micro:bit仅提供控制信号。
3. 机器人结构制作详解
3.1 机身设计与组装技巧
机器人的身体本质上是一个为两个舵机量身定做的纸板支架。它的核心功能是牢固地固定两个舵机,并为其手臂提供摆动空间。
1. 模板处理与折叠你可以使用作者提供的模板,也可以自行设计。如果打印模板,务必在打印设置中关闭“适应页面”或“缩放”选项,确保以100%实际尺寸打印,否则孔位和尺寸会对不上。用剪刀沿实线裁剪,沿虚线折叠。在折叠前,可以用尺子和没有墨水的圆珠笔尖沿着虚线轻轻划一下(称为“压痕”),这样折叠会更整齐笔直。
2. 舵机的安装与固定这是机身组装最关键的步骤。将舵机从纸板内侧(通常是模板有图案的一面作为内侧)穿过预留的方形孔,让舵机的输出轴朝外。然后,取出舵机附带的十字形或圆形舵盘,用自带的小螺丝将其固定到舵机的输出轴上。这个舵盘将成为连接纸板手臂的“关节”。此时,舵盘和舵机本体就像一个大头钉,将纸板“卡”在中间,提供了初步的固定。
接着,将“伺服电机固定架”部分折叠起来。这个部件像一个夹子,从上方扣住两个舵机。你需要将舵机的导线小心地从固定架和机身侧面的小孔中穿出。在固定架的粘贴片上涂胶,然后将其粘到机器人身体的主板上。关键点:胶水只涂在纸板与纸板接触的粘贴片上,千万不要让胶水粘到舵机本身的塑料外壳上,以免损坏舵机或影响日后更换。
3. 机身的闭合与加固按照模板指示,依次折叠并粘合机身底部、中部和背部的粘贴片。在粘合时,确保舵机的导线被妥善收纳在机身内部,不要被卡住或过度弯折。整个机身闭合后,应该形成一个中空的、坚固的六面体,两个舵机的输出轴并排朝前。
实操心得:结构强化。纸板结构的弱点在于接缝处。为了增加机器人的耐用性,我通常会在所有内部粘贴接缝处,额外粘贴一小条卡纸作为“加强筋”。特别是在承载舵机重量的部位,这个步骤能有效防止长时间摆动后开胶。
3.2 腿部与触摸传感器的集成
机器人的腿不仅是装饰,更是承载核心功能——触摸传感器——的部件。
1. 制作“痒痒”的脚取一条铝箔,面积略大于脚部模板。将纸板脚对折,用铅笔沿着边缘在铝箔上描出轮廓并剪下。在纸板脚的内侧(即将被折叠进去的那一面)涂上胶水,将铝箔平整地贴上去。然后,将脚部对折粘合,铝箔就被夹在了纸板中间。最后,将底部多余的一段铝箔向上翻折,粘贴在脚的后侧。这个翻折上来的部分至关重要,它是我们后续用鳄鱼夹连接导线的区域。
2. 单脚 vs. 双脚触发原设计只在一只脚上粘贴铝箔。如果你想实现“挠任何一只脚都有效”,有两种方法:
- 方法A(独立连接):为两只脚分别粘贴铝箔,并用两根导线分别连接到开发板的同一个触摸引脚(通过并联)。这样触摸任意一只脚都能触发。
- 方法B(串联连接):在两只脚底部都贴铝箔,然后在机器人站立时,在底座上再贴一条铝箔“地毯”,让两只脚通过这条“地毯”电气连通。这样,触摸任意一只脚,电流都会通过“地毯”流到另一只脚,最终到达触摸引脚。这种方法更巧妙,但需要确保脚底与“地毯”接触良好。
3. 安装腿部将制作好的腿部,粘贴到机器人身体底部的两侧。务必确保带有铝箔翻折部分的那一侧朝外,以便于连接导线。粘贴时,要保证机器人最终能平稳站立。
3.3 手臂的制作与舵机连接
手臂是将电机的旋转运动转化为滑稽摆动动作的部件。
1. 制作可动手臂手臂模板通常设计成一个长条口袋状。折叠后,只粘贴顶部,留下一个中空的长方形套管。这个套管就是用来套在舵机的舵盘(舵机臂)上的。你可以用一根铅笔或螺丝刀柄辅助,将纸臂套管撑得方正一些,便于安装。
2. 与舵机的连接这是动作是否流畅的关键。选择舵机附带的单臂状舵盘(通常是十字形舵盘中较长的那一根)。将纸臂的套管套在这个舵盘上。如果套上后太松,可以在舵盘上缠绕一两层电工胶带增加厚度,或者点在套管内部点少许胶水固定(但这样就不便调整初始角度了)。
3. 初始角度校准在通电和上传代码之前,先手动将舵盘调整到一个合适的初始角度(例如,让手臂自然下垂)。然后,再将纸臂套上去。这样可以确保机器人的起始姿态是端正的。如果通电后发现手臂角度怪异,正确的调整方法是:拔掉电源 → 取下纸臂 → 手动旋转舵盘到正确位置 → 重新装上纸臂。切勿在舵机通电时强行扭转其输出轴,这极易损坏内部齿轮。
4. 电路连接与编程实现
4.1 硬件连接方案对比与推荐
如何将micro:bit、舵机和铝箔传感器可靠地连接起来,是项目从静态模型变为互动机器人的最后一步。这里详细分析几种方案的利弊。
方案一:使用专用扩展板(最稳定、最推荐)
- 连接方法:
- 将micro:bit插入扩展板。
- 将两个舵机的三线接口(信号线通常为橙色或白色,电源线红色,地线棕色或黑色)分别插入扩展板上标有“SERVO 1”、“SERVO 2”的接口。注意方向,信号线对准标有“S”或“SIG”的引脚。
- 将鳄鱼夹的一端夹在机器人脚部翻折上来的铝箔上,另一端夹在扩展板上一个标记为“P0”或“A0”等(可作触摸输入的)引脚。
- 用一根导线,从扩展板的“GND”引脚连接到铝箔附近(可选,但能增强电容触摸稳定性,尤其是v2板)。
- 通过扩展板的电池接口,连接一个3节AA(4.5V)或2节18650锂电池(7.4V,需确认扩展板支持)的电池盒,为舵机供电。micro:bit本身可通过USB或电池盒另一路供电。
- 优点:连接稳固,自带电源管理,保护micro:bit,引脚标识清晰。
- 缺点:需要额外购买扩展板。
方案二:使用面包板(最灵活、适合学习)
- 连接方法:
- 将micro:bit插入面包板适配器,或直接用杜邦线连接其引脚到面包板。
- 舵机接口通常是母头,需要连接三根公对公杜邦线。
- 在面包板上,将micro:bit的3V引脚连接到电源正极轨,GND连接到电源负极轨。
- 将两个舵机的红色线(正极)连接到电源正极轨,棕色线(负极)连接到电源负极轨。
- 将舵机1的信号线(橙色)连接到micro:bit的P1引脚,舵机2的信号线连接到P2引脚。
- 铝箔通过鳄鱼夹连接到P0引脚。同样,可以从GND引一根线到铝箔附近。
- 重要:单独用一个4.5V-6V的电池盒,将其正负极分别连接到面包板的电源正负极轨,为舵机供电。切勿仅用micro:bit的USB口为两个舵机供电。
- 优点:成本低,连接过程能深刻理解电路原理。
- 缺点:接线复杂,容易松动,外观杂乱。
方案三:鳄鱼夹直连(最简易、临时)
- 连接方法:直接用鳄鱼夹连接所有部件。例如:一个夹子连接P1和舵机1信号线,一个夹子连接3V和两个舵机的正极(可以叠夹),一个夹子连接GND和两个舵机的负极,再用一个夹子连接铝箔和P0。
- 优点:无需任何额外板卡,最快验证想法。
- 缺点:极其不稳定,接触不良是常态,只适合几分钟的演示。
引脚选择逻辑: micro:bit v2的P0、P1、P2和Logo区域都支持电容触摸。为了避免冲突,最合理的分配是:
- P1: 舵机1信号
- P2: 舵机2信号
- P0: 铝箔触摸传感器输入 这样在编程时逻辑清晰,互不干扰。原项目作者使用Logo是因为其扩展板挡住了P0引脚,这是一个受硬件限制的妥协方案,我们应避免。
4.2 MakeCode图形化编程详解
我们将使用微软的MakeCode for micro:bit在线编辑器进行编程,它直观的积木块非常适合初学者。
1. 初始化设置程序开始时,我们需要设定舵机的初始位置。
- 在
当开机时积木下,拖入两个将伺服电机写入引脚 P1 角度为 90的积木块,分别设置P1和P2。角度90度通常代表中间位置,你可以根据手臂安装的实际情况调整为80或100度,让机器人手臂处于一个自然的“放下”姿态。 - 还可以在这里设置一个
显示图标,比如一颗心,表示机器人已启动。
2. 触摸检测与反应逻辑核心逻辑是:持续检测P0引脚是否被触摸,一旦被触摸,就让手臂摆动起来。
- 使用
无限循环积木。 - 在循环内,加入一个
如果...那么...的判断条件。 - 条件部分,使用
引脚 P0 被触摸?这个积木(在“输入”类别中)。这用于检测电容变化。 - 在“那么”部分,放入手臂摆动的动作序列:
将伺服电机写入引脚 P1 角度为 120(假设120度是向上抬起的角度)将伺服电机写入引脚 P2 角度为 120暂停(ms) 200(让手臂保持在抬起位置200毫秒,这个停顿会让动作更有“节奏感”)将伺服电机写入引脚 P1 角度为 60(60度是向下放的角度)将伺服电机写入引脚 P2 角度为 60暂停(ms) 200- (可选)可以再重复一次抬起放下的动作,或者加入随机角度让摆动更滑稽。
- 最后,一定要让手臂回到初始位置:
将伺服电机写入引脚 P1 角度为 90和将伺服电机写入引脚 P2 角度为 90。
- 为了增加趣味性,可以在摆动时用
显示图标积木让LED点阵显示一个笑脸,用播放音调积木发出一点声音(micro:bit v2支持)。
3. 代码优化与调试技巧
- 防抖处理:触摸传感器可能因干扰而误触发。可以在
如果判断中加入与逻辑,要求触摸状态持续一小段时间(例如50毫秒)才认定为有效触发。这可以通过变量记录时间来实现,但在初级项目中非必须。 - 动作随机化:让每次挠痒的动作略有不同,会更生动。可以使用
在 60 到 120 之间取随机数作为舵机角度,而不是固定的120和60。 - 调试:如果动作不正常,可以先在循环里加入
显示数字积木,显示引脚 P0 读取模拟值。正常情况下不触摸时该值较低且稳定,触摸时会看到一个明显的数值跳变。这能帮你确认触摸传感器是否工作。
编写完成后,点击下载,将生成的.hex文件拖入连接到电脑的MICROBIT磁盘中,程序就会自动上传。
4.3 针对micro:bit v1的调整
如果你使用的是micro:bit v1,其触摸是电阻式的,需要构成回路。
- 接线调整:除了将铝箔连接到P0,你还需要用另一根导线,将micro:bit的GND引脚也连接到铝箔上,或者连接到一大片铝箔(作为公共地)。这样,当你触摸铝箔时,你的身体同时连接了P0和GND,形成了回路。
- 代码调整:在MakeCode中,检测条件不应再使用
引脚 P0 被触摸?,而应使用如果 引脚 P0 读取数字信号 = 1 那么。因为电阻触摸时,人体接通回路,引脚会读到高电平(1)。
5. 调试、优化与创意扩展
5.1 常见问题排查速查表
制作过程中,你可能会遇到以下问题。这里提供一个快速排查指南。
| 问题现象 | 可能原因 | 排查步骤与解决方案 |
|---|---|---|
| 触摸脚部,机器人无反应 | 1. 触摸传感器未正确连接或工作。 2. 程序未正确上传或运行。 3. 电源问题。 | 1.检查连接:确认鳄鱼夹牢牢夹住铝箔和P0引脚,无氧化或松动。用万用表通断档测铝箔到引脚是否导通。 2.检查代码:确认程序中检测的是正确的引脚(P0)。在MakeCode中模拟运行,或添加 显示图标在触摸时反馈。3.检查供电:确保micro:bit已通电(LED点亮)。如果是v1,确认GND已连接并接触良好。 |
| 舵机不转动或只抖动 | 1. 电源功率不足。 2. 信号线连接错误。 3. 舵机卡死。 | 1.电源问题(最常见):立即停止使用USB单独供电。务必为舵机提供独立的、足够的电源(如4.8V电池盒)。检查电池电量是否充足。 2.检查接线:确认舵机信号线(黄/白)接在了P1/P2,而非电源引脚。确认三根线顺序没错。 3.机械检查:手动转动舵盘,看是否有阻碍。确保纸臂没有卡住机身。 |
| 舵机角度不正确或乱转 | 1. 初始角度未校准。 2. 程序中的角度值范围不对。 | 1.物理校准:断电,手动将舵盘置于90度位置,再安装手臂。 2.软件校准:标准舵机角度范围是0-180。确保程序中所有角度值在此范围内。尝试在 当开机时中只写一个90度,看手臂是否到中间位。 |
| 反应迟钝或时灵时不灵 | 1. 电容触摸连接不稳定。 2. 铝箔接触面积小或氧化。 | 1.增强信号:从micro:bit的GND引一根线,末端悬空或接触机器人身体(非铝箔部分),这能为触摸提供参考地,增强稳定性。 2.优化铝箔:增大脚底铝箔面积。用砂纸轻轻打磨铝箔接触点,去除氧化层。改用导电胶带。 |
| 机器人站立不稳 | 1. 身体结构不牢固。 2. 重心太高或腿太短。 | 1.加固结构:在所有内部接缝处粘贴加强条。使用更厚的卡纸。 2.降低重心:将电池盒等重物放置在机身底部。适当加宽脚部或设计一个更大的底座。 |
5.2 性能优化与创意扩展
当基础功能实现后,你可以从以下几个方面进行优化和扩展,让项目更具挑战性和趣味性。
1. 结构强化与美化
- 材料升级:使用瓦楞纸板或轻木片代替卡纸,机器人会坚固十倍。
- 连接件升级:用热熔胶枪或白乳胶代替普通胶水,粘接强度更高。对于舵盘和手臂的连接,可以使用一小段空心塑料管作为衬套,套在舵盘上,再将纸臂粘在衬套上,这样更耐用。
- 个性化设计:为机器人画上表情,贴上“头发”、“衣服”,用毛根做天线,充分发挥创意。
2. 交互逻辑升级
- 多触发模式:利用micro:bit的多个触摸引脚(P0, P1, P2)。例如,挠左脚(P0)只动左臂,挠右脚(P1)只动右臂,同时挠两只脚(通过程序逻辑判断)则手舞足蹈。
- 加入声音和灯光:利用micro:bit的扬声器和LED点阵。不同触摸模式触发不同的音效和表情动画,反馈更丰富。
- “情绪”状态机:给机器人设计一个简单的“情绪”变量。连续快速挠痒痒,会让它从“开心”摆动变成“疯狂”乱转,最后“生气”停止反应几秒钟,需要抚摸(触摸其他引脚)才能恢复。这引入了状态机编程的概念。
3. 扩展硬件探索
- 多个舵机:尝试用第三个舵机控制头部的转动,实现更复杂的动作。
- 增加传感器:接入一个光线传感器,让机器人在黑暗环境下被触摸时发出光效;接入加速度计,实现“被推倒后自己挥舞手臂试图站起来”的动画。
- 无线控制:利用micro:bit的无线电功能,让两个micro:bit通信。一个作为遥控器,另一个在机器人身上,实现远程“隔空挠痒痒”。
这个“怕痒机器人”项目就像一个开放的画布,核心的电子和机械原理是固定的,但外观、交互和“性格”完全由你的想象力决定。它从最简单的触摸反馈开始,可以一路扩展到包含传感器融合、状态逻辑和无线通信的综合性项目。最重要的是,它让你看到,创造乐趣和学习的门槛,可以如此之低。
