当前位置: 首页 > news >正文

用纸板和CircuitPython制作踉跄机器人:从伺服电机控制到步态编程

1. 项目概述:一个会“踉跄”行走的纸板机器人

如果你对机器人感兴趣,但又觉得那些复杂的机械结构、昂贵的金属零件和深奥的控制算法让人望而却步,那么这个项目就是为你准备的。今天我们要聊的,是一个名叫“Stumble-Bot”(踉跄机器人)的小家伙。它的核心魅力在于,用最朴素的材料——一个纸板盒,加上一些基础的电子元件,就能实现一个拥有协调步态的行走机器人。这听起来可能有点不可思议,一个纸盒子怎么走路?但正是这种将复杂原理用简单方式实现的过程,充满了创客的乐趣和工程智慧。

这个项目的核心是伺服电机。你可以把它想象成机器人的“肌肉”和“关节”,它能非常精确地转动到一个指定的角度。我们通过CircuitPython这种对初学者极其友好的编程语言,向一块名为Circuit Playground Express的微控制器下达指令,再由Crickit这块“全能扩展板”来安全、高效地驱动两个伺服电机。最终,前腿负责“拉”,后腿负责“推”和“支撑”,在一进一退的协调中,机器人就踉踉跄跄地向前迈步了。整个过程不需要焊接,代码逻辑清晰,机械结构直观,非常适合作为机器人入门、STEM教育或者一个有趣的周末项目。无论你是编程新手,还是想寻找一个快速验证想法的硬件黑客,都能从这个项目中获得亲手让一个“生命”动起来的成就感。

2. 核心硬件解析:为什么是它们?

在动手切割纸板之前,我们有必要先搞清楚手头这些电子元件的角色和它们协同工作的原理。理解“为什么用这个”,远比记住“怎么连接”更重要,这能让你在后续调试甚至改造时心中有数。

2.1 大脑与感知:Circuit Playground Express

Circuit Playground Express(后文简称CPX)是这个项目的大脑。它不仅仅是一块微控制器,更像是一个集成了多种传感器的“游乐场”。板载了温度传感器、光线传感器、运动传感器、麦克风,甚至还有10个可编程的RGB NeoPixel灯。在这个项目中,我们主要利用它的两个核心功能:运行CircuitPython程序和处理按键输入。

选择CPX的原因在于其极低的上手门槛。它通过一个USB接口就能完成供电和编程,无需额外的烧录器。当你用USB线将其连接到电脑时,它会显示为一个名为CIRCUITPY的U盘,直接将编写好的code.py文件拖进去,程序就开始运行了。这种“文件即编程”的方式,彻底消除了传统嵌入式开发中编译、烧录的步骤,让编程变得和编辑文本文档一样简单。板载的按键A,在我们的代码中将被用作机器人的“启动开关”。

2.2 肌肉驱动中枢:Adafruit Crickit扩展板

伺服电机不能直接连接到CPX上,因为微控制器的引脚无法提供电机所需的大电流。强行连接可能会损坏宝贵的CPX。这就是Crickit存在的意义。你可以把它看作机器人的“脊髓”和“功率放大器”。

Crickit通过一个紧凑的接口严丝合缝地扣在CPX上方,为其扩展出了4路舵机/电机驱动通道、2路大电流直流电机/步进电机驱动、8个电容触摸输入接口以及多个 Grove 兼容接口。它内部集成了电机驱动芯片和必要的保护电路,负责将CPX发出的低电流控制信号,安全地转换为能驱动伺服电机的高电流信号。同时,它提供了一个标准的2.1mm直流电源接口,允许我们使用外部的电池盒供电,将动力系统与逻辑控制系统分离,确保系统稳定。在Stumble-Bot中,我们使用了Crickit上的两路舵机控制通道。

2.3 关节与执行器:伺服电机的工作逻辑

伺服电机是整个机器人能动起来的关键。它与普通电机(只会连续旋转)有本质区别。标准舵机内部包含一个小型直流电机、一套减速齿轮组和一个位置反馈电位器(或编码器),形成一个闭环控制系统。

其工作原理是:控制板(通过Crickit)向舵机发送一系列PWM(脉冲宽度调制)信号。这个信号的脉冲宽度(高电平持续时间)决定了舵机轴的目标角度。例如,一个1.5ms的脉冲可能对应中间位置(90度),1.0ms的脉冲对应0度,2.0ms的脉冲对应180度。舵机内部的电路会持续比较当前电位器反馈的位置与目标脉冲宽度对应的位置,并驱动电机正向或反向旋转,直到两者一致为止。

项目中选用了一大一小的舵机:

  • TowerPro SG-5010(大型舵机):用于驱动后腿。后腿需要承受机器人身体的部分重量并提供推进力,因此需要更大的扭矩。SG-5010提供了足够的力量。
  • 微型舵机:用于驱动前腿。前腿主要执行“抬起-放下”的划动动作,对扭矩要求相对较低,使用更小、更轻的舵机有助于减轻前端重量并降低功耗。

注意:不同品牌、甚至同品牌不同批次的舵机,其脉冲宽度范围(min_pulsemax_pulse)可能存在细微差异。代码中设置的5002500(单位微秒)是TowerPro类舵机的典型值。如果使用其他舵机发现角度范围不准(例如转不到180度),可能需要微调这两个参数。

2.4 能源供给:电池选型的考量

我们使用一个3节AA电池盒供电。这里有一个重要的细节:为什么是3节AA碱性电池,而不是更常见的4节或可充电的3.7V锂电池?

  • 电压匹配:Crickit的舵机驱动电路和CPX的输入电压范围通常在3.5V到5.5V之间。单节AA碱性电池满电电压约为1.6V,随着使用会下降,但通常稳定在1.5V左右。3节串联的标称电压是4.5V,完美地位于设备的安全工作电压范围内。
  • 电流能力:两个舵机,尤其是在启动或卡顿时,会产生较大的瞬间电流。AA电池能提供相对平稳的电流输出,满足短时峰值需求。
  • 安全与简便:4节AA电池电压会达到6V,虽然很多设备标称能承受,但长期工作在电压上限对元件寿命不友好,且可能使舵机运动过快、发热。而单节锂电池(3.7V-4.2V)虽然电压合适,但需要额外的充电和保护电路,增加了复杂度。3节AA方案在性能、安全和易得性上取得了最佳平衡。

3. 机械结构制作:从纸板到“骨骼”

机器人的“身体”和“腿”全部由纸板构成。这种材料选择不仅成本极低,易于加工,更重要的是它迫使设计必须简单、有效。整个制作过程是对基础机械原理的一次实践。

3.1 箱体选择与腿部设计

选择一个坚固、平整的纸板箱作为机器人主体。硬质快递箱是个不错的选择。机器人的“腿”并非独立的零件,而是直接由箱体的上盖切割、加固而成。这种一体化设计极大地增强了结构的整体性。

  • 前腿设计:前腿被设计成一个“A”字型或倒“V”型的刚性结构。这是通过将三片切割好的纸板用热熔胶垂直粘合实现的。这种结构在垂直方向(承受向下压力)和水平方向(向前划动时)都有很好的强度,能将舵机的旋转运动有效地转化为向前的拉力。
  • 后腿设计:后腿是一个简单的“U”形摇杆。它的功能更像一个杠杆支点,在舵机的驱动下进行较小角度的前后摆动,主要作用是协调步伐、抬起身体后半部分以配合前腿前进,并提供推进力。

在箱盖上画出腿部轮廓时,不必追求绝对精确的直线,但需要确保左右大致对称,并且腿部与箱体连接的区域(即将被切割分离的部分)有足够的宽度以保持强度。用美工刀或剪刀进行切割时,务必在垫板上操作,保持刀刃锋利,这样切出的边缘更整齐,不易产生毛糙的纤维影响后续粘合。

3.2 关键加固技术与关节连接

纸板本身抗弯曲能力较弱,尤其是在作为受力件时。因此,加固是这一步的灵魂。

  1. 垂直粘合与90度角保持:在粘合前腿的三层纸板时,涂上热熔胶后,需要用力按压并保持至少30秒,直到胶体完全固化。最关键的是,在按压过程中,必须用眼睛或直角尺辅助,确保中间层纸板与底层完全垂直。一个歪斜的关节会严重影响机器人的行走直线性。
  2. 雪糕棒(加强筋)的应用:在粘合好的前腿两侧,以及后腿的侧面,我们用热熔胶粘上雪糕棒。这不是装饰,这是经典的“复合材料”增强思路。雪糕棒(木质或竹质)的抗拉强度远高于纸板。将其粘在纸板受拉或受压的表面,就像给混凝土结构加入钢筋一样,能极大提高腿部的刚性,防止在运动过程中反复受力后变得松软、弯曲。这是让纸板机器人能持久工作的关键技巧。
  3. 舵盘与腿部的连接:舵机附带的塑料舵盘是连接电机轴和腿部结构的关键部件。使用热熔胶或强力双面胶,将舵盘平整地粘贴在腿部结构的顶端中心位置。确保粘贴牢固,因为这里将传递所有的扭矩。之后,用配套的小螺丝将腿部组件紧固在舵盘上。螺丝不要拧得过紧以至于压裂纸板,也不要过松导致晃动,以牢固、不松动为准。

3.3 舵机安装与身体整合

舵机在箱体上的安装位置和角度,直接决定了机器人的运动姿态。

  1. 前舵机安装:大型SG-5010舵机安装在箱体底部,靠近前端约2.5厘米处。在纸箱底部开一个与舵机外壳形状匹配的方孔,将舵机从下方推入,使其面板与纸箱底部外表面齐平。这样安装后,舵机轴是垂直向上的,前腿将直接安装在这个轴上,做水平面上的旋转运动,产生向前的“划桨”动作。
  2. 后舵机安装:微型舵机安装在箱体的后侧立面(即后腿所在的那一面)的正中央。同样开孔并压入,使其面板与箱体侧面齐平。这样安装后,舵机轴是水平向前的,后腿将安装在这个轴上,做垂直面上的前后摆动,实现“蹬地”和“支撑”动作。
  3. 固定与校准:两个舵机就位后,用热熔胶在四周点几个固定点,确保它们不会在运行时因反作用力而移位。在正式连接腿部之前,有一个至关重要的步骤:手动校准中立点。用代码或手动轻轻转动舵机轴,找到其机械旋转范围的大致中点(通常是90度位置)。然后将腿部组件安装到这个中立位置上。这能确保机器人的起始姿态是平衡的,也为后续代码中角度的正负摆动提供了对称的基准。

4. 电路连接与系统集成

当机械部分准备就绪,我们就进入了“赋予生命”的环节——电路连接。正确的连接是保证一切正常工作的基础,而有序的布局则影响着机器人的稳定性和美观。

4.1 电源系统准备

安全永远是第一位的。在进行任何电线处理前,务必确保电池盒内的电池已取出

  1. 电池盒改装:大多数3节AA电池盒输出的是带有JST插头的红黑线。我们需要将其改为2.1mm直流插头。剪掉JST插头,将红黑线各剥出约6-7毫米的铜芯。
  2. 连接DC插头:将剥好的红线插入直流插头端子座的“+”端螺丝孔下,黑线插入“-”端。拧紧螺丝,确保电线被牢固压住,没有铜丝裸露在外。完成后可以轻轻拉扯电线,测试是否连接牢固。一个接触不良的电源接口将是后期最难排查的故障点之一。
  3. 优化布局(可选):如果电池盒背面有腰带夹,可以将其拆除,这样能让电池盒更平整地贴在纸箱内壁上。

4.2 主控制系统连接

这是将所有核心部件串联起来的步骤,请按照顺序操作:

  1. 堆叠核心板:首先,将Crickit扩展板对准Circuit Playground Express背面的金色引脚,轻轻垂直压下,直到两者完全结合。这个连接同时提供了数据通信和5V电源。
  2. 连接舵机:将两个舵机的接口线缆分别连接到Crickit上标有Servo 1Servo 2的三针插座上。这里有一个必须遵守的方向:确保所有舵机插头的黄色(或白色)信号线朝向Crickit板子的外侧边缘,棕色(或黑色)地线朝向CPX板子一侧。这是Adafruit产品线的标准布局,统一方向可以避免接反。
  3. 接入电源:将改装好的电池盒DC插头,插入Crickit上唯一的2.1mm直流电源输入口。
  4. 固定与布线:使用双面胶,先将电池盒固定在纸箱内部靠近后部的底板上。然后,将Crickit(连同其上的CPX)堆叠体固定在电池盒上方。这样布局重心较低且集中,有利于行走稳定性。用扎带或胶带整理好舵机线缆,避免其缠绕进运动部件中。
  5. 最终检查:在通电前,进行最后一次“三线检查”:USB线连接电脑(用于编程)、电池盒开关置于OFF、Crickit上的电源开关也置于OFF

5. CircuitPython代码深度解读与调试

代码是机器人的“灵魂”。这段代码不仅让机器人动起来,更体现了如何用简单的逻辑协调两个执行器,形成步态。

5.1 代码结构与初始化

我们将代码保存为code.py,这样当CPX通电时便会自动运行。

# SPDX-FileCopyrightText: 2018 Dano Wall for Adafruit Industries # SPDX-License-Identifier: MIT import time import board from digitalio import DigitalInOut, Direction, Pull from adafruit_crickit import crickit # 1. 硬件初始化 led = DigitalInOut(board.D13) # 板载红色LED,用于状态指示 led.direction = Direction.OUTPUT button_A = DigitalInOut(board.BUTTON_A) # 启动按钮 button_A.direction = Direction.INPUT button_A.pull = Pull.DOWN # 启用内部下拉电阻,确保按键未按时为低电平 # 2. 舵机初始化 servos = [crickit.servo_1, crickit.servo_2] # 创建一个舵机列表,方便管理 # 设置脉冲宽度范围,匹配TowerPro类舵机 servos[0].set_pulse_width_range(min_pulse=500, max_pulse=2500) # 后腿舵机 servos[1].set_pulse_width_range(min_pulse=500, max_pulse=2500) # 前腿舵机 # 将两个舵机都移动到90度位置(机械中点) servos[1].angle = 90 # 前腿 servos[0].angle = 90 # 后腿

关键点解析

  • button_A.pull = Pull.DOWN:这是为了防止引脚悬空产生不确定的电平。启用内部下拉电阻后,当按键未按下时,引脚被稳定地拉到低电平(0);按下时连接到高电平(3.3V)。这是一种硬件消抖的基础配置。
  • set_pulse_width_range:这个函数是校准舵机角度范围的关键5002500是微秒值,定义了舵机对应0度和180度的脉冲宽度。如果你的舵机转动角度不足,可以尝试稍微增大max_pulse值,例如2600;如果转动过度,则减小该值。

5.2 运动函数:实现踉跄步态的核心

步态是通过两个独立的函数servo_frontservo_back控制的,它们分别控制前腿划动和后腿摆动。

def servo_front(direction): if direction > 0: index = 50 while index <= 100: servos[1].angle = index # 控制前腿舵机(servo_2) time.sleep(0.040) # 每次角度变化后延时40ms index = index + 2 # 每次增加2度 if direction < 0: index = 100 while index >= 50: servos[1].angle = index time.sleep(0.040) index = index - 2 time.sleep(0.002) # 函数执行完毕后的微小延时 def servo_back(direction): if direction > 0: index = 60 while index <= 90: servos[0].angle = index # 控制后腿舵机(servo_1) time.sleep(0.040) index = index + 4 # 后腿每次增加4度,速度更快 if direction < 0: index = 100 while index >= 50: servos[0].angle = index time.sleep(0.040) index = index - 4 time.sleep(0.020)

步态逻辑拆解

  1. 非瞬时运动:代码没有使用servo.angle = X直接跳到目标角度,而是通过while循环配合time.sleep,让角度以较小的步长(2度或4度)逐渐变化。这模拟了“缓慢发力”的过程,使得机器人的运动看起来更平滑、更自然,也减少了因突然启动对机械结构和电源的冲击。
  2. 运动范围差异化
    • 前腿 (servo_front):在50度到100度之间摆动,总行程50度。这模拟了前腿在身体侧方向前划动和收回的动作。
    • 后腿 (servo_back):有两个运动段。direction>0时从60度到90度(上抬30度);direction<0时从100度到50度(下压并后蹬50度)。这个不对称设计是步态的关键:后腿快速上抬(30度),然后更有力地后蹬下压(50度),从而产生向前的净推力。
  3. 速度差异:后腿的角度增量是4度,前腿是2度。这意味着后腿完成其运动循环的速度大约是前腿的两倍。这种速度差协调了“蹬”和“划”的节奏。

5.3 主循环与步态序列

主循环while True持续检测按键A。一旦按下,便触发一个完整的“踉跄步”循环。

print("Its Stumble Bot Time") while True: if button_A.value: # 检测按键A是否被按下(高电平) led.value = True # 点亮LED,指示开始运动 for i in range(5): # 重复5个完整的四步循环 print("back 1") # 后腿上抬 servo_back(1) time.sleep(0.100) print("front 1") # 前腿向前划动 servo_front(1) time.sleep(0.100) print("back 2") # 后腿下压后蹬 servo_back(-1) time.sleep(0.100) print("front 2") # 前腿收回 servo_front(-1) time.sleep(0.100) led.value = False # 熄灭LED,指示循环结束

步态序列详解: 一个完整的移动周期包含四个步骤,顺序为:后腿上抬 -> 前腿前划 -> 后腿下蹬 -> 前腿收回

  1. 后腿上抬:减轻后腿对地面的压力,为身体前倾做准备。
  2. 前腿前划:此时前腿作为主要支撑点,向前划动,拖动身体前进。
  3. 后腿下蹬:后腿用力向后下方蹬地,提供主要的前进推力。
  4. 前腿收回:前腿收回至起始位置,准备下一个循环。

这个序列使得机器人的重心在前后腿之间转移,形成了独特的、有点笨拙但又有效的“踉跄”步态。for i in range(5)让这个四步序列重复5次,然后停止,等待下一次按键触发。

6. 精细校准与问题排查实录

即使完全按照指南制作,你的第一个Stumble-Bot也可能不走直线,或者动作别扭。别担心,这是完全正常的。校准是机器人制作中从“能动”到“走好”的关键一步。

6.1 数字校准法:通过修改代码微调

这是最精确的校准方法。在机器人通过USB连接电脑,并且Mu编辑器连接到REPL(交互式环境)时进行。

  1. 观察与诊断:运行程序,观察机器人运动。常见问题有:原地转圈(一条腿力量或行程不足)、步幅不对称(一条腿摆动角度大一条小)、一条腿拖地(中立点偏移)。
  2. 定位参数:代码中控制每条腿运动范围的是servo_frontservo_back函数里的while循环起始和结束值。例如,index = 50while index <= 100决定了前腿从50度运动到100度。
  3. 交互式测试:在Mu的REPL中,你可以直接输入命令进行测试,而无需反复修改保存代码文件。例如:
    >>> servos[1].angle = 90 # 将前腿舵机回到中点 >>> servos[1].angle = 70 # 测试前腿一个位置
    通过反复测试,找到能让机器人腿部处于理想“前极限”和“后极限”的角度值。
  4. 修改与验证:将测试好的角度值更新到code.py文件中的相应位置。例如,如果发现前腿向前划得不够远,可以将while index <= 100中的100改为110。每次只修改一个参数,然后测试效果,逐步逼近最佳值。

6.2 模拟校准法:机械调整

如果你没有电脑在身边,或者觉得修改代码麻烦,可以采用纯粹的机械调整。

  1. 断电操作:首先断开电池和USB供电。
  2. 松开舵盘:用螺丝刀轻轻松开固定腿部和舵盘的小螺丝,让腿部可以自由转动,但不要完全拆下。
  3. 手动寻找中立点:用手轻轻地将舵机的输出轴旋转到它机械行程的正中间。标准180度舵机的中间点通常在左右各转90度的位置。你可以缓慢地向一个方向转动直到遇到阻力(不要强行用力),记下位置,再反向转到另一个阻力点,取这两个位置的中间点。
  4. 重新固定:将腿部调整到你希望的“初始姿态”(通常是垂直于地面或稍微有一个预置角度),然后在这个姿态下,将舵盘和腿部重新拧紧。这样,当代码命令舵机转到90度时,对应的就是你这个手动设置的“理想中立姿态”。

实操心得:最有效的方法往往是“数模结合”。先用机械校准法大致将腿部调到对称的物理位置,然后再用数字校准法微调运动范围,以补偿舵机个体差异、安装误差和纸板结构变形带来的影响。校准过程需要耐心,通常需要3-5个迭代周期才能达到比较满意的直线行走效果。

6.3 常见问题速查表

以下表格汇总了制作和调试过程中可能遇到的典型问题及其解决方案:

问题现象可能原因排查步骤与解决方案
通电后毫无反应,LED也不亮1. 电源开关未打开。
2. 电池电量耗尽或装反。
3. DC插头接触不良。
1. 确认Crickit和电池盒开关均在ON位。
2. 更换全新碱性电池,检查正负极方向。
3. 摇晃并重新插拔DC插头,检查接线螺丝是否拧紧。
Circuit Playground Express未被电脑识别1. 板子处于“引导加载程序”模式。
2. USB线仅供电不支持数据。
3. 驱动程序问题(仅Windows)。
1. 快速双击CPX上的复位按钮,直到CIRCUITPY盘符出现。
2. 换一根已知良好的数据线。
3. 检查设备管理器,可能需要安装Adafruit驱动。
舵机抖动、不转动或转动无力1. 电源电压不足。
2. 舵机线缆接触不良。
3. 机械结构卡死。
4. 脉冲宽度参数不匹配。
1.首要检查:使用万用表测量电池电压,应高于4.0V。旧电池请立即更换。
2. 重新插拔舵机线,确保完全插入且方向正确。
3. 手动转动腿部,检查是否有纸板干涉或热熔胶堵塞。
4. 尝试微调set_pulse_width_range中的值(例如改为400, 2600)。
机器人原地转圈或走弧线1. 左右腿长度或形状有差异。
2. 两个舵机性能有差异。
3. 腿部安装中立点不一致。
4. 地面摩擦力不均。
1. 对比检查两条前腿/后腿的尺寸和加固情况。
2. 交换两个舵机在Crickit上的接口,如果问题方向随之改变,则是舵机差异,需通过代码校准补偿。
3. 重新进行机械中立点校准。
4. 在腿部底部粘贴电工胶布或砂纸,统一摩擦力。
代码已上传,但按键无反应1. 文件未命名为code.py
2. 代码中存在语法错误导致无法运行。
3. REPL未断开。
1. 确认CIRCUITPY驱动器根目录下的主程序文件名为code.py
2. 在Mu中检查代码,下方是否有红色错误提示。确保缩进正确。
3. 按Ctrl+C退出REPL,让主程序正常运行。
运动几次后停止或行为异常1. 电池在负载下电压骤降。
2. 舵机堵转导致过载保护。
3. 连接线虚接。
1. 这是最常见原因。即使新电池,在驱动两个舵机时也可能电压不足。强烈建议使用全新的优质碱性电池或镍氢充电电池
2. 检查腿部运动是否被线缆或箱体卡住。
3. 逐一检查所有插接件和螺丝接线端子。

7. 优化、装饰与扩展思路

当你的Stumble-Bot能够稳定地踉跄前行后,就可以开始发挥创意,让它变得独一无二,甚至尝试一些功能扩展。

7.1 性能与可靠性优化

  1. 增加抓地力:在光滑地面上,纸板腿很容易打滑。用热熔胶在腿的底部画几条Z字型或点状纹路,能显著增加摩擦力。或者粘贴一小块橡胶垫、砂纸。
  2. 减轻重量:重量是行走机器人的天敌。检查是否有不必要的冗余纸板可以裁剪掉?可以考虑在箱体非承重部位开一些减重孔。
  3. 重心调整:如果机器人总是前倾或后仰,可以尝试移动内部电池盒和电路板的位置。理想的重心应该落在四条腿构成的支持面中心略靠前的位置。
  4. 电源升级:如果追求更持久、更稳定的动力,可以考虑使用一个输出5V/2A的移动电源(充电宝)通过USB线直接为CPX供电(同时需断开电池)。注意,这需要Crickit的电源开关也打开,且仅当USB供电足够稳定时才可行。

7.2 个性化装饰

赋予你的机器人个性是项目乐趣的一半。使用扭扭棒制作天线或手臂,贴上大大的卡通眼睛,用彩笔或贴纸绘制外壳图案。一个简单的“面部表情”或颜色主题,能立刻让这个机械造物变得生动可爱。这也是一个向朋友和家人展示项目成果的绝佳方式。

7.3 扩展实验与思考

这个基础平台为更多实验打开了大门:

  • 传感器交互:利用CPX板载的光线传感器,让机器人在黑暗中自动启动行走。或者利用声音传感器,让它对你的拍手声做出反应。
  • 步态编程:尝试修改servo_frontservo_back函数中的角度、步长和延时参数。你能让它走得更快吗?能实现转弯吗?(提示:尝试让左右腿动作不对称)。
  • 无线控制:为CPX添加一个红外接收器,就可以用电视遥控器来控制它。或者添加蓝牙模块,用手机App控制。
  • 结构改造:能否设计四条腿的版本?或者将纸板身体换成3D打印件,设计更复杂的关节?

这个项目最宝贵的收获,不仅仅是做出了一个会走的小玩具,而是完整地体验了一个嵌入式机器人项目从机械设计、电子连接到软件编程、调试校准的全过程。每一个环节遇到的问题和解决方案,都是实实在在的工程经验。当你看到这个由自己亲手组装、编程的纸盒机器人,摇摇晃晃却又坚定地穿过桌面时,那种跨越虚拟代码和物理世界界限的创造快乐,正是创客精神的精髓所在。

http://www.jsqmd.com/news/845538/

相关文章:

  • Linux内核动态调试技术:pr_debug与dynamic_debug实战指南
  • 基于UVM的AMBA ACE缓存一致性验证:激励生成与实战策略
  • 高校新规:本科生发期刊可加分!舍友都问我是不是找了代写?实测8款AI期刊论文工具自己也能发 - 逢君学术-AI论文写作
  • 告别假进度条!UE5蓝图实战:用自定义AssetManager实现真实关卡加载进度
  • 避坑指南:Cesium加载大尺寸.tif文件时,Canvas渲染与内存优化的那些事儿
  • 智能切割机创客指南:从矢量设计到精密纸艺模型制作全流程
  • Java 程序员第 20 阶段:Agent 工具调用开发,对接第三方接口自动任务
  • Perplexity法规查询功能落地全攻略(企业级GDPR/CCPA实时合规核查手册)
  • .NET 11 来了:Kestrel 提速 40%,还有这些你可能不知道的变化
  • Bifrost三星固件下载器:免费跨平台获取官方固件的终极指南
  • Proteus 8 搭建8086最小系统,卡在MASM32配置?手把手教你搞定(附文件)
  • ARM+Linux嵌入式技术新趋势:从AI边缘部署到工业物联网的深度演进
  • 智能快递柜嵌入式方案全解析:从i.MX6Q核心板到云管端架构实战
  • taotoken的稳定直连与容灾路由如何保障企业级应用的sla
  • 从DHT11到SHT30:手把手教你升级STM32的温湿度传感器(附代码对比)
  • ESD防护实战:从原理到设计,全面解析静电防护的五大隐患与解决方案
  • 如何快速掌握Ultimate ASI Loader:5个简单步骤安装游戏MOD加载器
  • 2026 北京名包回收避坑:拒绝压价套路,只看成色 + 配件 + 行情 - 奢侈品回收测评
  • 为什么92.4%的住院医师仍在用Google查文献?Perplexity医疗垂直搜索的5个不可替代性证据
  • Perplexity留学数据获取实战手册(2024QS/THE/USNews三库联动秘技)
  • C语言学习笔记 - 39.数据类型 - scanf函数多变量输入用法
  • CircuitPython串口控制台与REPL实战指南:从环境配置到高效调试
  • JetBrains IDE试用期重置终极指南:ide-eval-resetter完全解析
  • PlotSquared终极指南:5分钟快速搭建Minecraft领地系统
  • openmv的目录
  • ESP8266刷写CircuitPython固件与Ampy文件传输实战指南
  • Windows 10系统OneDrive深度卸载技术方案解析与实施指南
  • 昆山2026年整形机构选择指南与合规避坑建议 - 资讯焦点
  • 12306智能抢票助手终极使用指南:快速抢到火车票的完整教程
  • MPC-BE:为什么这款开源播放器能成为Windows多媒体播放的终极解决方案?