树莓派机器人教程从哪开始学?

99ANYc3cd6 机器人 2

树莓派机器人从零到一:一份超详细的全能指南

欢迎来到树莓派机器人的奇妙世界!这个项目融合了硬件、软件、电子和人工智能,是学习和实践绝佳的综合性项目。

树莓派机器人教程从哪开始学?-第1张图片-广州国自机器人
(图片来源网络,侵删)

本教程将分为以下几个核心部分:

  1. 第一阶段:准备与规划 - 明确目标,准备所有必要组件。
  2. 第二阶段:硬件组装 - 将所有零件组装成一个移动机器人平台。
  3. 第三阶段:软件与系统配置 - 设置树莓派,连接电机驱动。
  4. 第四阶段:核心编程 - 让机器人动起来 - 编写Python代码控制电机。
  5. 第五阶段:高级功能探索 - 添加传感器、摄像头和远程控制。
  6. 第六阶段:项目扩展与进阶 - 挑战更复杂的功能。

第一阶段:准备与规划

在开始之前,你需要明确你想做什么类型的机器人,最基础、最推荐的是两轮差速驱动的移动机器人

明确你的机器人目标

  • 入门级: 一个可以通过键盘或App控制前进、后退、左右转的简单小车。
  • 进阶级: 一个能自动避障、沿黑线巡线、或通过摄像头识别物体的智能小车。
  • 高级级: 一个能实现SLAM(同步定位与地图构建)、自主导航的机器人。

核心组件清单

根据你的目标,准备以下硬件:

组件类别 推荐型号/规格 备注
核心计算单元 树莓派 4B (推荐) 或 树莓派 5 性能越强,能运行的功能越多(如OpenCV)。
移动平台 TT马达 + 车轮 + 转向轮 最常见、最经济的方案,包含底盘、电机、车轮和前轮支架。
电机驱动 L298NTB6612FNG 模块 树莓派GPIO口电流小,无法直接驱动电机,需要此模块作为“中间人”。
电源 18650锂电池组 + 充电模块 电压7.4V或11.1V,容量2000mAh以上,为树莓派和电机提供动力。
稳压模块 5V 2A/3A DC-DC降压模块 将锂电池电压(如7.4V)稳定降压到5V,为树莓派供电。
其他配件 杜邦线(公对母、母对母若干)、面包板、螺丝、扎带、热熔胶枪 用于连接和固定。

工具准备

  • 螺丝刀
  • 电烙铁(可选,用于焊接杜邦线)
  • 剪线钳
  • 万能表(可选,用于测试电路)

第二阶段:硬件组装

这个阶段的目标是把一堆零件变成一个能移动的机器人底盘。

树莓派机器人教程从哪开始学?-第2张图片-广州国自机器人
(图片来源网络,侵删)
  1. 组装底盘:按照随底盘附带的说明书,将TT电机固定在底盘上,装上车轮,并安装好前部的万向轮。
  2. 安装树莓派:使用铜柱或双面胶,将树莓派牢固地固定在底盘的上层,确保其位置不会影响车轮转动。
  3. 安装电机驱动:将L298N模块也固定在底盘上,通常放在树莓派的旁边或下方。
  4. 连接电机:将TT电机的两根线(通常是红色和黑色)连接到L298N的输出端,一个电机接 OUT1OUT2,另一个接 OUT3OUT4注意: 如果电机转向反了,只需交换这两根线的位置即可。
  5. 连接电源
    • 将锂电池的输出连接到稳压模块的输入端。
    • 将稳压模块的输出端(5V和GND)连接到L298N模块的供电端+12VGND),这是给电机供电的。
    • 非常重要! 从稳压模块的输出端再引出一根5V线和一根GND线,直接连接到树莓派的5V和GND引脚,这是给树莓派供电的。
    • 将L298N模块的 GND 与树莓派的 GND(例如物理引脚6)连接起来,确保它们有共同的“地”。
  6. 连接控制信号:使用杜邦线,将L298N模块的输入端连接到树莓派的GPIO引脚:
    • IN1 -> 树莓派 GPIO 17
    • IN2 -> 树莓派 GPIO 27
    • IN3 -> 树莓派 GPIO 22
    • IN4 -> 树莓派 GPIO 23
    • ENA (使能A) -> 树莓派 GPIO 18 (PWM,用于控制左轮速度)
    • ENB (使能B) -> 树莓派 GPIO 19 (PWM,用于控制右轮速度)

接线示意图:

+---------------------+       +---------------------+
|      树莓派          |       |      L298N 模块      |
|                     |       |                     |
|  GPIO 17 (IN1)  ----+----->| IN1                 |
|  GPIO 27 (IN2)  ----+----->| IN2                 |
|  GPIO 22 (IN3)  ----+----->| IN3                 |
|  GPIO 23 (IN4)  ----+----->| IN4                 |
|  GPIO 18 (ENA) ----+----->| ENA (PWM)           |
|  GPIO 19 (ENB) ----+----->| ENB (PWM)           |
|                     |       |                     |
|  5V  ----------------+----->| +12V (电机供电输入)  |  <-- 来自稳压模块
|  GND ----------------+----->| GND                 |
|                     |       |                     |
+---------------------+       | OUT1/OUT2 -> 左电机  |
                             | OUT3/OUT4 -> 右电机  |
                             +---------------------+
                              ^
                              |
+---------------------+       |
|      稳压模块        |       |
|                     |       |
| 输入 (+/-) <--------+-------+  来自锂电池
| 输出 (5V/GND) ------+------>  树莓派 5V/GND
|                     |       |
+---------------------+       |
                              |
+---------------------+       |
|     锂电池           |       |
|                     |       |
+---------------------+       |

第三阶段:软件与系统配置

让我们让树莓派“活”起来。

  1. 烧录系统

    • 下载 Raspberry Pi Imager
    • 插入SD卡,选择 Raspberry Pi OS (64-bit)。
    • 设置Wi-Fi、SSH(方便远程连接)、更改主机名等。
    • 将烧录好的SD卡插入树莓派,通电开机。
  2. 连接与更新

    树莓派机器人教程从哪开始学?-第3张图片-广州国自机器人
    (图片来源网络,侵删)
    • 将机器人通电,连接到同一Wi-Fi网络。
    • 使用SSH客户端(如PuTTY、MobaXterm或终端)连接到你的树莓派。
    • 更新系统:
      sudo apt update
      sudo apt full-upgrade -y
  3. 配置GPIO库

    • 我们将使用流行的 gpiozero 库,它非常简单易用。
    • 通常它已经预装,如果没有,可以安装:
      sudo apt install python3-gpiozero

第四阶段:核心编程 - 让机器人动起来

这是最激动人心的部分!我们将编写Python脚本来控制机器人。

  1. 创建项目目录

    mkdir robot_code
    cd robot_code
    nano robot_controller.py
  2. 编写控制代码: 将以下代码复制并粘贴到 robot_controller.py 文件中。

from gpiozero import Robot
import time
# --- 根据你的实际接线修改GPIO引脚 ---
# 格式: Robot(left=(in1, in2), right=(in3, in4))
# 如果电机转向反了,交换 in1/in2 或 in3/in4 的位置即可
robot = Robot(left=(17, 27), right=(22, 23))
# --- 定义一些基本动作 ---
def forward(speed=1, seconds=1):
    """前进"""
    print(f"前进 {seconds} 秒,速度: {speed}")
    robot.value = (speed, speed) # 左右轮同速
    time.sleep(seconds)
    robot.stop()
def backward(speed=1, seconds=1):
    """后退"""
    print(f"后退 {seconds} 秒,速度: {speed}")
    robot.value = (-speed, -speed)
    time.sleep(seconds)
    robot.stop()
def turn_left(speed=1, seconds=0.5):
    """左转"""
    print(f"左转 {seconds} 秒,速度: {speed}")
    robot.value = (-speed, speed) # 左轮反转,右轮正转
    time.sleep(seconds)
    robot.stop()
def turn_right(speed=1, seconds=0.5):
    """右转"""
    print(f"右转 {seconds} 秒,速度: {speed}")
    robot.value = (speed, -speed) # 左轮正转,右轮反转
    time.sleep(seconds)
    robot.stop()
def pivot_left(speed=1, seconds=0.5):
    """原地左转(差速转向)"""
    print(f"原地左转 {seconds} 秒,速度: {speed}")
    robot.value = (0, speed) # 左轮停止,右轮前进
    time.sleep(seconds)
    robot.stop()
def pivot_right(speed=1, seconds=0.5):
    """原地右转(差速转向)"""
    print(f"原地右转 {seconds} 秒,速度: {speed}")
    robot.value = (speed, 0) # 左轮前进,右轮停止
    time.sleep(seconds)
    robot.stop()
# --- 主程序 ---
if __name__ == "__main__":
    try:
        print("机器人控制程序启动!按 Ctrl+C 退出。")
        # 这里可以添加你的控制逻辑,例如一个简单的动作序列
        forward(0.8, 2)    # 以80%速度前进2秒
        turn_right(0.8, 1) # 以80%速度右转1秒
        forward(0.8, 2)    # 再前进2秒
        turn_left(0.8, 1)  # 左转1秒
        backward(0.8, 1)   # 后退1秒
    except KeyboardInterrupt:
        print("\n程序被用户中断。")
    finally:
        robot.stop() # 确保程序结束时机器人停止
        print("机器人已停止。")
  1. 运行你的第一个程序

    • 保存并退出 nano (按 Ctrl+X, 然后按 Y, 再按 Enter)。
    • 运行脚本:
      sudo python3 robot_controller.py
    • 注意: 需要使用 sudo,因为直接访问GPIO需要管理员权限。

    你应该能看到你的机器人按照指令动起来了!


第五阶段:高级功能探索

当基础控制没问题后,你可以开始添加更多“感官”和“大脑”。

添加传感器(如超声波避障)

  • 硬件:HC-SR04超声波传感器。

  • 接线

    • VCC -> 树莓派 5V
    • GND -> 树莓派 GND
    • Trig -> GPIO 5
    • Echo -> GPIO 6
  • 编程:使用 gpiozeroDistanceSensor 类。

    from gpiozero import DistanceSensor, Robot
    from time import sleep
    sensor = DistanceSensor(echo=6, trigger=5, max_distance=2) # 最大检测2米
    robot = Robot(left=(17, 27), right=(22, 23))
    try:
        while True:
            distance = sensor.distance
            print(f"距离: {distance * 100:.1f} cm") # 转换为厘米打印
            if distance < 0.3: # 如果距离小于30厘米
                robot.backward(0.5, 0.5) # 后退
                sleep(0.5)
                robot.left(0.5, 0.5)    # 左转
                sleep(0.5)
            else:
                robot.forward(0.5) # 否则前进
    except KeyboardInterrupt:
        robot.stop()

添加摄像头(如OpenCV图像识别)

  • 硬件:树莓派摄像头模块。
  • 配置:使用 raspi-config 启用摄像头接口。
  • 编程:安装 opencv-python 库。
    sudo apt install python3-opencv

    然后可以编写脚本,利用摄像头进行颜色识别、人脸识别等。

远程控制(通过Web界面或App)

  • Web控制:可以使用 Flask 框架创建一个简单的网页服务器,在网页上放置按钮来控制机器人。
  • App控制:可以使用 BlynkMIT App Inventor 快速创建一个手机App,通过Wi-Fi与树莓派通信,实现摇杆或按钮控制。

第六阶段:项目扩展与进阶

当你掌握了以上所有内容后,可以挑战以下更酷的功能:

  • 自动巡线:使用红外巡线传感器,检测地面上的黑线,让机器人自动跟随。
  • 语音控制:集成语音识别库(如 SnowboyVosk),通过语音指令控制机器人。
  • SLAM与自主导航:使用 ROS (Robot Operating System),结合激光雷达或深度摄像头,实现地图构建和自主路径规划,这是机器人领域的“圣杯”级项目。

重要提示与故障排查

  • 安全第一:首次通电时,最好将机器人架空,以免它失控撞到东西。
  • 接线检查:机器人不动或行为异常,90%的问题是接线错误,请仔细核对GPIO引脚和电源连接。
  • 供电不足:如果电机转速很慢或树莓派频繁重启,说明供电不足,请更换容量更大或电压更合适的电池。
  • 电机转向:如果机器人向一侧偏走,说明两个电机转速不同或转向相反,可以尝试调整代码中的速度参数,或交换电机的接线。
  • 学习资源

祝你玩得开心,享受创造自己机器人的乐趣!

标签: 树莓派机器人入门教程 树莓派机器人零基础学习 树莓派机器人制作步骤

抱歉,评论功能暂时关闭!