
1. 项目概述用CircuitPlayground打造你的第一个桌面行走机器人如果你手头有一块Adafruit的CircuitPlayground Express开发板并且对机器人、电子制作或者仅仅是让一个小东西动起来充满兴趣那么这个项目就是为你准备的。我们不是要造一个能翻山越岭的复杂机器而是利用这块功能丰富的开发板配合几个最基础的舵机制作一个结构简单、动作有趣、能在桌面上“行走”的小型机器人。这个项目的核心魅力在于它绕开了复杂的机械结构设计和昂贵的零件采购让你能快速上手亲眼看到代码如何驱动硬件完成从静止到运动的魔法转变。整个过程就像在玩一个高级的电子积木CircuitPlayground充当了大脑和传感器中枢而舵机就是它的手脚。CircuitPlayground Express后面简称CPX是一块非常适合教育和快速原型开发的微控制器板。它集成了10个可编程的RGB NeoPixel灯、运动传感器加速度计和陀螺仪、温度传感器、光线传感器、声音传感器甚至还有一个红外接收发射器和一个蜂鸣器。这意味着我们的机器人不仅会走未来还能轻松扩展出感知光线变化自动启动、听到拍手声改变步态或者用炫彩的灯光表达“情绪”等功能。本次我们先专注于最核心的行走功能。你需要准备的东西非常简单一块CircuitPlayground Express、两个微型舵机常用的是SG90这类9克舵机、一些公对母的杜邦线、一个4节AA电池盒为舵机提供足够动力以及一些用于固定和制作腿的材料比如硬纸板、冰棒棍或者轻质的塑料片。工具方面一把热熔胶枪或强力双面胶就能解决大部分固定问题。整个制作成本可控周末的一个下午就能完成从组装到调试的全过程。2. 核心思路与机械结构设计2.1 为什么选择两足“摇摆”式行走对于桌面级的小型机器人实现稳定行走是个挑战。四足或六足结构更稳定但需要更多的舵机和更复杂的协调控制代码。为了在简化结构和实现有趣运动之间找到平衡我选择了“两足摇摆”式设计。这并不是真正的仿生双腿行走而是利用机器人的重心摆动和腿部的交替支撑来模拟步行动作。具体来说我们的机器人身体即CPX板下方左右各安装一个舵机。每个舵机控制一条“腿”。腿的设计不是直的而是略带弧线或有一个“脚掌”面。初始状态时两条腿都稍微向外撇使机器人能稳定站立。行走时程序控制两个舵机交替摆动当左腿向前摆动舵机顺时针转时右腿作为支撑腿稍向后蹬舵机逆时针转身体重心向右偏移推动机器人向左前方移动一点接着右腿向前左腿后蹬重心左移机器人便向右前方移动。如此循环就形成了一个摇摇晃晃、却充满萌趣的前进姿态。这种设计的优势非常明显机械结构极度简单只需要两个运动关节。控制逻辑清晰代码易于编写和理解非常适合初学者学习舵机控制和基本运动逻辑。材料成本极低腿可以用任何轻质坚固的材料制作。它的缺点也很明显行走速度慢稳定性一般在光滑桌面可能打滑。但这恰恰是它的乐趣所在——你可以通过调整腿的形状、舵机摆动角度和时序来优化它的行走姿态这个过程本身就是最好的学习。2.2 腿型设计与重心考量腿是机器人的关键。你不能直接用一根直棍子当腿那样会导致机器人要么站不稳要么无法有效产生向前的推力。我经过几次迭代找到了一个比较有效的设计将腿做成一个类似“7”字形的结构。材料我推荐使用2-3毫米厚的硬质模型板比如飞机木或者坚固的冰棒棍。轻是关键太重会加大舵机负荷。形状将材料剪裁成长约5-6厘米的短棍。在距离一端约1.5厘米处以大约120度的角度粘上另一小段约1厘米作为“脚掌”。这样从侧面看腿就像一个钝角三角形的一个边和它的高。“脚掌”部分需要与地面有足够的接触面积来防滑你可以贴上一点橡胶片或电工胶带。重心机器人的重心主要由CPX板和电池盒构成必须落在两条腿的支撑面之间且尽可能低。因此电池盒较重的部分最好安装在CPX板的正下方或稍靠后的位置。安装好后用手轻轻推一下机器人它应该能轻微摇晃并回正而不是直接翻倒。如果容易前翻或后翻就需要调整电池盒的前后位置。注意舵机的转轴是它的输出力点。将腿固定在舵机舵盘上时要确保在舵机处于中间位置通常是90度时腿是垂直向下的或者带有轻微的外八字角度。这个初始角度是后续所有摆动动作的基准点务必在物理安装和软件初始化时保持一致。3. 硬件连接与电路搭建3.1 CircuitPlayground Express引脚分配与供电方案CPX板周围有一圈金手指焊盘标有数字编号这些就是我们的通用输入输出口GPIO。对于舵机控制我们需要使用支持PWM脉冲宽度调制输出的引脚。CPX的A1和A2引脚或者A6和A7引脚都是不错的选择它们都支持PWM。这里我们选用A1和A2。为什么需要独立供电这是本项目硬件部分最重要的一个经验点。CPX板可以通过USB口或电池盒供电但其板载的3.3V稳压器输出电流有限大约500mA。SG90舵机在堵转卡住时瞬时电流可能超过500mA如果直接用CPX为舵机供电极易导致板子重启、程序崩溃甚至损坏稳压器。因此必须为舵机提供独立的电源。供电方案如下控制信号两个舵机的信号线通常是橙色或白色线分别用杜邦线连接到CPX的A1和A2引脚。舵机电源两个舵机的正极红色线和负极棕色或黑色线分别并联。然后将它们共同连接到一个4节AA6V电池盒的正负极上。6V电压在SG90舵机的额定电压4.8V-6V范围内能提供充足的动力。共地至关重要的一步必须将电池盒的负极GND与CPX板上的任何一个GND引脚例如板子边缘标有“GND”的焊盘用杜邦线连接起来。这确保了CPX和舵机拥有相同的电压参考地控制信号才能被正确识别。CPX供电CPX本身可以通过USB线连接电脑供电用于编程和调试也可以单独用一个3.7V的锂电池或3节AA4.5V电池盒供电。在机器人行走时建议使用独立电源为CPX供电以摆脱USB线的束缚。连接总结表组件连接至 CPX 引脚说明左舵机信号线A1控制左腿摆动右舵机信号线A2控制右腿摆动左/右舵机正极6V电池盒正极并联后接入左/右舵机负极6V电池盒负极并联后接入并连接至CPX的GNDCPX 电源USB 或 3.7V锂电池独立供电与舵机电源分离3.2 结构组装要点用热熔胶或强力双面胶进行固定将两个舵机并排粘在CPX板的下方或后方确保它们的转轴朝向机器人的左右两侧。将制作好的“7”字形腿用配套的小螺丝固定到舵机的舵盘上。确保安装牢固且腿在舵机90度位置时是预设的初始姿态如轻微外八。将4节AA电池盒粘在CPX板的正下方这里是重心区域有助于稳定。整理好导线避免缠绕或拉扯。可以用扎带或胶带稍作固定。至此一个呆头呆脑但潜力无限的机器人硬件主体就完成了。接下来是赋予它灵魂的代码部分。4. 软件编程用MakeCode赋予机器人步态我们将使用微软的MakeCode for Adafruit图形化编程环境它基于Blocks积木块和JavaScript直观易懂是入门嵌入式编程的绝佳工具。4.1 开发环境搭建与基础初始化访问 makecode.adafruit.com点击“新建项目”。在代码编辑区我们首先需要初始化舵机。从左侧的“引脚”类别中找到“伺服写入引脚”积木块。但为了更清晰地管理我建议先使用“变量”类别。创建两个变量分别命名为leftServo和rightServo。在“当开机时”积木块内设置这两个变量。我们需要用到“引脚”类别下的“伺服电机 连接 引脚 P0 角度 90”这个块。将其拖入两次分别将引脚改为A1和A2角度设为90。然后将这两个块分别赋值给leftServo和rightServo变量。这样我们就创建了两个舵机对象并将它们都初始化为90度中间位置。let leftServo 0 let rightServo 0 leftServo servos.P1.setAngle(90) rightServo servos.P2.setAngle(90)(注意MakeCode图形块无法在此直接显示以上是伪代码表示其逻辑)关键点解释90度是舵机的机械中点。我们之前安装腿时就应让腿在这个角度下处于垂直或预设姿态。所有后续的摆动角度都将以这个90度为基准进行加减。4.2 核心步态算法实现行走的本质是两个舵机按特定顺序和角度摆动。一个简单可靠的步态循环可以这样设计准备姿势两个舵机都回到90度中立位。左腿前进右腿后蹬左舵机从90度转到70度向前摆20度右舵机从90度转到110度向后蹬20度。保持这个姿势约200毫秒让重心转移并产生推力。回中两个舵机都转回90度。这是一个短暂的过渡耗时约100毫秒。右腿前进左腿后蹬右舵机转到70度左舵机转到110度。保持200毫秒。回中再次回到90度。循环重复步骤2-5。在MakeCode中我们需要使用“循环”积木块来让这个步态一直重复。同时使用“暂停毫秒”积木块来控制每个动作的持续时间这直接影响机器人的行走速度和节奏感。一个完整的行走循环代码结构如下用文字描述逻辑无限循环开始设置 leftServo 角度为 70设置 rightServo 角度为 110暂停 200 毫秒设置 leftServo 角度为 90设置 rightServo 角度为 90暂停 100 毫秒设置 rightServo 角度为 70设置 leftServo 角度为 110暂停 200 毫秒设置 leftServo 角度为 90设置 rightServo 角度为 90暂停 100 毫秒无限循环结束4.3 加入传感器控制与互动功能让机器人一直傻走就没意思了。利用CPX丰富的传感器我们可以让它变得更智能。这里举两个例子例1拍手启动/停止利用板载的声音传感器。我们可以在主循环之外设置一个“当响度大于100”的事件触发器。当检测到拍手等大声音时切换一个walking布尔变量true/false。在主循环的“无限循环”外层再套一个“如果walking为真则执行”的条件判断。这样拍一下手开始走再拍一下手就停下。例2用光线传感器控制速度光线传感器值越大环境越亮。我们可以将这个值映射到步态循环中的“暂停”时间上。例如pauseTime 300 - 光线值 / 2。这样在明亮环境下机器人走得快在昏暗环境下它就走得慢仿佛有“昼夜节律”。例3NeoPixel灯光指示状态在机器人行走时让板子上的LED灯循环亮起绿色停止时显示红色。这不仅能增加炫酷效果还能直观反馈程序运行状态。这些功能的加入会让你立刻感受到硬件编程的互动乐趣。代码不再只是屏幕上的字符而是能感知环境、做出反应的实体行为。5. 调试、优化与问题排查5.1 上电调试流程与常见现象分别供电先只连接CPX的USB线到电脑不要连接舵机电池盒。在MakeCode中点击“下载”将程序烧录到CPX。此时舵机不应动作。连接舵机电源接上6V电池盒。你应该会听到舵机发出一声轻响归中并且腿会转动到90度的位置。如果腿的朝向不对说明物理安装的初始角度与软件的90度不匹配。切勿强行掰腿应先断电松开舵盘螺丝将腿调整到想要的垂直或外八姿态后重新紧固再上电测试。测试单轴运动在程序中临时修改只让一个舵机在70度和110度之间来回运动观察腿的摆动是否顺畅有无卡滞。确保运动范围不会导致腿碰到机器人身体或其他部件。全功能测试运行完整的行走循环。观察机器人是否能够向前移动还是原地摇晃。如果原地摇晃说明两条腿的摆动相位可能不对或者“脚掌”摩擦力不足。5.2 行走不稳的优化技巧打滑问题在“脚掌”底部粘贴电工胶布、一小块橡胶或鼠标垫材质能极大增加摩擦力。重心太高检查电池盒是否已安装在最低位置。尝试在机器人身体底部增加配重如几枚硬币降低重心。步幅与节奏调整代码中的摆动角度如从20度改为15度或25度和暂停时间如将200毫秒改为150或250毫秒。较小的步幅和较快的节奏有时更稳定。腿型改良如果机器人总是向一侧歪斜可能是两条腿的形状或长度有细微差异。仔细比对调整。也可以尝试将“脚掌”部分做得更长更宽形成更稳的支撑面。5.3 常见问题速查表问题现象可能原因排查与解决方法舵机不转动或只抖动1. 供电不足或没共地2. 信号线接触不良3. 舵机损坏1. 检查6V电池盒电量用万用表测量电压。务必确认CPX的GND与电池盒GND已连接。2. 重新插拔杜邦线尝试更换引脚。3. 单独给舵机接6V电源信号线短暂接5V模拟高电平信号看是否转动。机器人原地抖动不前进1. 腿的初始角度不对重心无法转移2. 脚底太滑3. 两条腿运动完全同步同向1. 调整腿在90度时的安装角度确保有初始的外八字。2. 增加脚底摩擦力。3. 检查代码确保左右舵机角度设置是相反的一个70一个110。CPX板频繁重启舵机电流过大通过CPX取电绝对确保舵机使用独立6V电池盒供电切勿从CPX的3.3V或VOUT引脚取电。行走方向严重偏移左右腿长度或形状差异大地面不平微调腿的长度或“脚掌”角度。在平整桌面上测试。MakeCode程序无法下载CPX驱动问题USB线只供电不传数据尝试换USB口、换USB线必须是数据线。在设备管理器中检查端口是否识别。6. 项目扩展与进阶玩法当你的基础行走机器人成功后就可以开启更多的创意扩展变身“昆虫机器人”增加两个舵机和两条腿做成四足结构。编程实现三角步态每次移动对角线两条腿稳定性会大大提升。这需要你学习更复杂的舵机协同控制算法。避障与自动巡线购买一个廉价的超声波传感器HC-SR04或红外巡线模块连接到CPX的剩余引脚。编写程序让机器人遇到障碍自动后退转弯或者沿着地上的黑线行走。蓝牙遥控为CPX配对一个HC-05或HM-10蓝牙模块通过手机App如MIT App Inventor自己编写一个遥控机器人的行走、转向甚至灯光效果。情绪化表达结合加速度计当机器人被拿起时让所有NeoPixel灯闪烁红色并播放警报声当光线传感器检测到黑暗时让LED发出柔和的微光像一个小夜灯宠物。这个项目的核心价值不在于造出一个多么精密的机器人而在于完整地体验了一个嵌入式系统项目的闭环从需求分析要一个会走的小东西、方案设计摇摆步态、硬件选型与连接CPX舵机独立供电、软件编程MakeCode步态控制、调试排错到最终的扩展思考。每一个环节中遇到的问题和解决过程都比书本上的知识来得更加深刻。我个人的体会是硬件项目最大的成就感就来自于“它终于按我想的动起来了”的那一刻而之前所有的调试和折腾都是通往那一刻的必经之路。最后一个小建议在调试舵机角度时不妨在代码里加入CPX板载按钮的控制按A键让左舵机转1度按B键让右舵机转1度这样你可以非常精细地在不动螺丝刀的情况下微调机器人的站立姿态这个技巧能节省大量时间。