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

本教程将分为以下几个核心部分:
- 第一阶段:准备与规划 - 明确目标,准备所有必要组件。
- 第二阶段:硬件组装 - 将所有零件组装成一个移动机器人平台。
- 第三阶段:软件与系统配置 - 设置树莓派,连接电机驱动。
- 第四阶段:核心编程 - 让机器人动起来 - 编写Python代码控制电机。
- 第五阶段:高级功能探索 - 添加传感器、摄像头和远程控制。
- 第六阶段:项目扩展与进阶 - 挑战更复杂的功能。
第一阶段:准备与规划
在开始之前,你需要明确你想做什么类型的机器人,最基础、最推荐的是两轮差速驱动的移动机器人。
明确你的机器人目标
- 入门级: 一个可以通过键盘或App控制前进、后退、左右转的简单小车。
- 进阶级: 一个能自动避障、沿黑线巡线、或通过摄像头识别物体的智能小车。
- 高级级: 一个能实现SLAM(同步定位与地图构建)、自主导航的机器人。
核心组件清单
根据你的目标,准备以下硬件:
| 组件类别 | 推荐型号/规格 | 备注 |
|---|---|---|
| 核心计算单元 | 树莓派 4B (推荐) 或 树莓派 5 | 性能越强,能运行的功能越多(如OpenCV)。 |
| 移动平台 | TT马达 + 车轮 + 转向轮 | 最常见、最经济的方案,包含底盘、电机、车轮和前轮支架。 |
| 电机驱动 | L298N 或 TB6612FNG 模块 | 树莓派GPIO口电流小,无法直接驱动电机,需要此模块作为“中间人”。 |
| 电源 | 18650锂电池组 + 充电模块 | 电压7.4V或11.1V,容量2000mAh以上,为树莓派和电机提供动力。 |
| 稳压模块 | 5V 2A/3A DC-DC降压模块 | 将锂电池电压(如7.4V)稳定降压到5V,为树莓派供电。 |
| 其他配件 | 杜邦线(公对母、母对母若干)、面包板、螺丝、扎带、热熔胶枪 | 用于连接和固定。 |
工具准备
- 螺丝刀
- 电烙铁(可选,用于焊接杜邦线)
- 剪线钳
- 万能表(可选,用于测试电路)
第二阶段:硬件组装
这个阶段的目标是把一堆零件变成一个能移动的机器人底盘。

- 组装底盘:按照随底盘附带的说明书,将TT电机固定在底盘上,装上车轮,并安装好前部的万向轮。
- 安装树莓派:使用铜柱或双面胶,将树莓派牢固地固定在底盘的上层,确保其位置不会影响车轮转动。
- 安装电机驱动:将L298N模块也固定在底盘上,通常放在树莓派的旁边或下方。
- 连接电机:将TT电机的两根线(通常是红色和黑色)连接到L298N的输出端,一个电机接
OUT1和OUT2,另一个接OUT3和OUT4。注意: 如果电机转向反了,只需交换这两根线的位置即可。 - 连接电源:
- 将锂电池的输出连接到稳压模块的输入端。
- 将稳压模块的输出端(5V和GND)连接到L298N模块的供电端(
+12V和GND),这是给电机供电的。 - 非常重要! 从稳压模块的输出端再引出一根5V线和一根GND线,直接连接到树莓派的5V和GND引脚,这是给树莓派供电的。
- 将L298N模块的
GND与树莓派的GND(例如物理引脚6)连接起来,确保它们有共同的“地”。
- 连接控制信号:使用杜邦线,将L298N模块的输入端连接到树莓派的GPIO引脚:
IN1-> 树莓派 GPIO 17IN2-> 树莓派 GPIO 27IN3-> 树莓派 GPIO 22IN4-> 树莓派 GPIO 23ENA(使能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
| | |
+---------------------+ |
|
+---------------------+ |
| 锂电池 | |
| | |
+---------------------+ |
第三阶段:软件与系统配置
让我们让树莓派“活”起来。
-
烧录系统:
- 下载 Raspberry Pi Imager。
- 插入SD卡,选择 Raspberry Pi OS (64-bit)。
- 设置Wi-Fi、SSH(方便远程连接)、更改主机名等。
- 将烧录好的SD卡插入树莓派,通电开机。
-
连接与更新:
(图片来源网络,侵删)- 将机器人通电,连接到同一Wi-Fi网络。
- 使用SSH客户端(如PuTTY、MobaXterm或终端)连接到你的树莓派。
- 更新系统:
sudo apt update sudo apt full-upgrade -y
-
配置GPIO库:
- 我们将使用流行的
gpiozero库,它非常简单易用。 - 通常它已经预装,如果没有,可以安装:
sudo apt install python3-gpiozero
- 我们将使用流行的
第四阶段:核心编程 - 让机器人动起来
这是最激动人心的部分!我们将编写Python脚本来控制机器人。
-
创建项目目录:
mkdir robot_code cd robot_code nano robot_controller.py
-
编写控制代码: 将以下代码复制并粘贴到
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("机器人已停止。")
-
运行你的第一个程序:
- 保存并退出
nano(按Ctrl+X, 然后按Y, 再按Enter)。 - 运行脚本:
sudo python3 robot_controller.py
- 注意: 需要使用
sudo,因为直接访问GPIO需要管理员权限。
你应该能看到你的机器人按照指令动起来了!
- 保存并退出
第五阶段:高级功能探索
当基础控制没问题后,你可以开始添加更多“感官”和“大脑”。
添加传感器(如超声波避障)
-
硬件:HC-SR04超声波传感器。
-
接线:
- VCC -> 树莓派 5V
- GND -> 树莓派 GND
- Trig -> GPIO 5
- Echo -> GPIO 6
-
编程:使用
gpiozero的DistanceSensor类。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控制:可以使用 Blynk 或 MIT App Inventor 快速创建一个手机App,通过Wi-Fi与树莓派通信,实现摇杆或按钮控制。
第六阶段:项目扩展与进阶
当你掌握了以上所有内容后,可以挑战以下更酷的功能:
- 自动巡线:使用红外巡线传感器,检测地面上的黑线,让机器人自动跟随。
- 语音控制:集成语音识别库(如
Snowboy或Vosk),通过语音指令控制机器人。 - SLAM与自主导航:使用 ROS (Robot Operating System),结合激光雷达或深度摄像头,实现地图构建和自主路径规划,这是机器人领域的“圣杯”级项目。
重要提示与故障排查
- 安全第一:首次通电时,最好将机器人架空,以免它失控撞到东西。
- 接线检查:机器人不动或行为异常,90%的问题是接线错误,请仔细核对GPIO引脚和电源连接。
- 供电不足:如果电机转速很慢或树莓派频繁重启,说明供电不足,请更换容量更大或电压更合适的电池。
- 电机转向:如果机器人向一侧偏走,说明两个电机转速不同或转向相反,可以尝试调整代码中的速度参数,或交换电机的接线。
- 学习资源:
- 官方文档:gpiozero官方文档 是最好的学习资料。
- 社区:Raspberry Pi官方论坛 和 Reddit的r/raspberry_pi 有大量热心用户和项目分享。
祝你玩得开心,享受创造自己机器人的乐趣!
标签: 树莓派机器人入门教程 树莓派机器人零基础学习 树莓派机器人制作步骤