亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

Arduino 四足蜘蛛机器人制作教程:从零开始的完整指南

零部件与材料清单

组件 数量 备注
Arduino Nano R3 1 主控板
蓝牙低功耗 (BLE) 模块 1 用于手机 APP 控制
Onion Corporation OLED 扩展屏 1 显示表情动画
RGB 共阴极 LED 1 状态指示灯
JLCPCB 定制 PCB 1 集成电路板,含伺服接口
9g 微型舵机 (SG90 或同规格) 12 每条腿 3 个,共 4 条腿
7.4V 锂电池 (或 2 节 18650 串联) 1 为舵机供电
3D 打印机打印件 1 套 含机身、大腿、小腿、连接件等
排针排母、螺丝、杜邦线等 若干 焊接与组装用

项目简介

本教程将手把手教你制作一款四足蜘蛛机器人(Quadruped Spider Robot)。项目采用 Arduino Nano 为核心,驱动 12 个舵机实现四足行走、转向、姿态调整等动作,并通过蓝牙模块与手机 APP 通信,支持前进、后退、左转、右转及 RGB 灯光颜色实时控制。OLED 屏幕可显示类似 Cozmo 机器人的丰富表情,增加趣味性。

整个项目历时 7 天完成:硬件制作与组装 2 天,代码编写与 APP 开发 5 天。得益于 JLCPCB 定制 PCB,电路布局紧凑美观,焊接难度大幅降低。教程提供完整的原理图、Gerber 文件、Arduino 代码、安卓 APP 下载链接及 3D 打印 STL 文件,适合进阶 Maker 挑战。

核心知识点

制作步骤详解

步骤 1:理解四足蜘蛛机器人

四足机器人模仿蜘蛛/昆虫步态,四条腿各有 3 个自由度(髋、膝、踝),共 12 个舵机。与轮式机器人相比,足式机器人越障能力强,但控制复杂度高、成本大。四足结构具备被动稳定性:站立时四足构成支撑多边形,重心落在多边形内即可保持平衡,无需持续主动控制。

本项目采用「对角步态」:对角线两条腿同步移动(如左前+右后),其余两腿支撑机身,实现平稳前进/后退。转向时通过调整支撑腿位置实现原地旋转。

步骤 2:舵机选型与控制原理

舵机内部包含电机、减速齿轮组、位置反馈电位器、控制电路。标准 PWM 周期 20ms (50Hz),高电平宽度 0.5~2.5ms 对应 0~180°。本项目使用 9g 模拟舵机,扭矩约 1.5 kg·cm,足以驱动轻量 3D 打印结构。

关键参数:

代码中使用 FlexiTimer2 库建立 20ms 定时中断,在中断服务程序中按线性插值逐步移动舵机至目标角度,实现平滑动作。

步骤 3:PCB 设计与制造 (JLCPCB)

定制 PCB 集成了:

PCB 外形设计为蜘蛛造型,丝印标注每个舵机编号与极性,极大简化焊接。下单流程:导出 Gerber → JLCPCB 网站上传 → 选择板厚 1.6mm、红色阻焊、数量 5 片 → 支付约 $2 → 5 天收货。

步骤 4:硬件组装指南

  1. 焊接 PCB:按 BOM 焊接排针、MOSFET、电阻、电容、蓝牙模块座、OLED 排针、电源接口。建议先焊低矮元件,再焊高大元件。
  2. 组装单腿:每条腿由 Coxa(髋)、Femur(大腿)、Tibia(小腿) 三段 3D 打印件 + 3 个舵机组成。先将舵机转至中位 (90°),再固定舵盘与打印件,注意舵机输出轴朝向与代码定义一致。
  3. 安装机身:将 4 条腿的根部舵机 (Coxa) 安装到上机身板预留孔位,用 M2 螺丝锁紧。
  4. 安装电池与 PCB:电池固定在下机身板,PCB 通过排针插在上机身板背面,走线整理扎带固定。
  5. 连接舵机信号线:按 PCB 丝印标号 (Leg0~Leg3, 每腿 Servo0~2) 插入对应排针,核对极性 (棕=GND, 红=VCC, 橙=信号)。

步骤 5:舵机中位校准 (关键步骤)

上传 Scaling_Servo.ino 校准代码,上电后所有舵机应转至 90° 中位。此时手动调整每个舵机安装角度,使机械结构呈标准站立姿态:

记录每个舵机的偏移值,填入主程序 polar_to_servo() 函数的角度修正逻辑中。

步骤 6:上传主程序与测试

主程序 Spider_Robot_Main.ino 核心模块:

上传代码后,打开手机 APP (下载链接见文末),点击「连接蓝牙」选择模块 (通常名为 HC-06),即可控制机器人行走、转向、变灯色。OLED 会随动作播放对应表情。

步骤 7:常见问题与优化建议

现象 可能原因 解决方案
机器人站立不稳、抖动 舵机供电不足 / 中位校准偏差大 用 2A 以上 5V 稳压模块单独给舵机供电;重新精细校准中位
行走时腿部碰撞、卡顿 步态参数 (x_default, y_step, z_up) 不匹配机械尺寸 实测腿长、机身宽,修改代码常量区几何参数
蓝牙频繁断连 模块供电不稳 / 天线被金属遮挡 给蓝牙模块单独加 100µF 电容;调整 PCB 布局远离金属件
OLED 不显示 / 花屏 I2C 地址错误 (0x3C vs 0x3D) / 排线接触不良 扫描 I2C 地址确认;换用 4 线制排线、缩短线长

进阶扩展方向

资源下载链接

完整主程序代码 (关键片段)

// 核心逆运动学:笛卡尔坐标转舵机角度
void cartesian_to_polar(volatile float &alpha, volatile float &beta, volatile float &gamma,
                        volatile float x, volatile float y, volatile float z) {
    float v, w;
    w = (x >= 0 ? 1 : -1) * sqrt(pow(x, 2) + pow(y, 2));
    v = w - length_c;
    alpha = atan2(z, v) + acos((pow(length_a, 2) - pow(length_b, 2) + pow(v, 2) + pow(z, 2)) 
                               / (2 * length_a * sqrt(pow(v, 2) + pow(z, 2))));
    beta = acos((pow(length_a, 2) + pow(length_b, 2) - pow(v, 2) - pow(z, 2)) 
                / (2 * length_a * length_b));
    gamma = (w >= 0) ? atan2(y, x) : atan2(-y, -x);
    alpha = alpha / pi * 180; beta = beta / pi * 180; gamma = gamma / pi * 180;
}

// 舵机角度映射 (含各腿安装方向修正)
void polar_to_servo(int leg, float alpha, float beta, float gamma) {
    if (leg == 0) { alpha = 90 - alpha; gamma += 90; }
    else if (leg == 1) { alpha += 90; beta = 180 - beta; gamma = 90 - gamma; }
    else if (leg == 2) { alpha += 90; beta = 180 - beta; gamma = 90 - gamma; }
    else if (leg == 3) { alpha = 90 - alpha; gamma += 90; }
    servo[leg][0].write(alpha); servo[leg][1].write(beta); servo[leg][2].write(gamma);
}

// 前进步态示例 (对角步态)
void step_forward(unsigned int step) {
    move_speed = leg_move_speed;
    while (step-- > 0) {
        if (site_now[2][1] == y_start) { // 第2、1腿摆动
            set_site(2, x_default + x_offset, y_start, z_up); wait_all_reach();
            set_site(2, x_default + x_offset, y_start + 2*y_step, z_up); wait_all_reach();
            set_site(2, x_default + x_offset, y_start + 2*y_step, z_default); wait_all_reach();
            move_speed = body_move_speed;
            set_site(0, x_default + x_offset, y_start, z_default);
            set_site(1, x_default + x_offset, y_start + 2*y_step, z_default);
            set_site(2, x_default - x_offset, y_start + y_step, z_default);
            set_site(3, x_default - x_offset, y_start + y_step, z_default); wait_all_reach();
            move_speed = leg_move_speed;
            set_site(1, x_default + x_offset, y_start + 2*y_step, z_up); wait_all_reach();
            set_site(1, x_default + x_offset, y_start, z_up); wait_all_reach();
            set_site(1, x_default + x_offset, y_start, z_default); wait_all_reach();
        } else { // 第0、3腿摆动 (对称逻辑) ... }
    }
}

祝你制作愉快!如有疑问欢迎在评论区交流。完整代码、STL 文件与 APP 下载见文末资源链接。

制造工艺

  1. 蓝牙控制树莓派机器人:语音反馈功能构建指南
  2. JQR 四足自主机器人:DIY 腿足机器人用于自主导航与救援
  3. 舵机驱动避障机器人:基于 Arduino 与 HC-SR04 构建
  4. Arduino UNO 自制循迹小车:从零构建自主巡线机器人
  5. Arduino Nano 语音控制机器人:蓝牙 + 手机 APP 实现
  6. 从零构建智能 Arduino 四足机器人:完整指南
  7. PiBot:Arduino驱动的88键钢琴机器人,精准演奏MIDI乐曲
  8. LittleArm 2C:3D 打印 Arduino 机械臂 - STEM 教学专用,坚固易装
  9. 自主家庭助理机器人 O'nine - ROS + Alexa 语音控制 + 机械臂 + 麦克纳姆轮全向移动
  10. 通过专用 Android App 蓝牙控制 Arduino 机械臂
  11. 适用于 Arduino 项目的智能室内导航机器人套件
  12. 机器人个人助理如何走入寻常百姓家