舵机控制

Copyright © Quectel Wireless Solutions Co., Ltd. 2026. All rights reserved.


本项目是一个基于Quectel Pi M2智能主控板实现的二自由度舵机云台控制示例。

系统通过PCA9685舵机驱动板驱动二维云台上的两只LFD-01舵机,结合图形界面实现滑块、按钮、快捷键与自动演示等多种操控方式,左侧3D视图与实物同步转动,完整展示"UI角度指令 → PWM脉宽 → 舵机实际姿态"的控制链路。

../../../_images/image_FBbnbES6SoziyMxvTMmcAi15n4g.webp

开发资源汇总

开发配件清单

 

 

 

配件名称

数量

规格参数

Quectel Pi M2智能主控板

1块

-

PCA9685舵机驱动板

1块

16路PWM 舵机驱动板模块

二维舵机云台(含摄像头)

1个

二维舵机云台含摄像头

双路降压稳压模块

1个

可调降压稳压模块

18650电池盒(2S)

1个

18650锂电池组7.4v

显示屏(可选)

1个

有HDMI显示器也可

杜邦线/万用表/螺丝刀

若干

-

配件实物参考

../../../_images/image_Pw09bXEwSovi6SxR5lTc4UNCnno.webp

快速上手

开发准备

Quectel Pi M2 智能主控板出厂默认搭载 Debian 13 系统镜像,因此无需再次烧录镜像,仅需按照如下步骤操作即可。

硬件连接

完成以下所有硬件连接操作,序号与接口示意图保持一致:

../../../_images/image_KUCbbALRKoELHcxuZVycVvdYnQR.webp
  1. 信号连接:将PCA9685驱动板与 Quectel Pi M2 40pin排针按如下对应关系连接——

Pin1(3.3V)→VCC、Pin9(GND)→GND、Pin27(SDA)→SDA、Pin28(SCL)→SCL(即 /dev/i2c-7)。

  1. 动力连接:电池盒正负极接入稳压模块IN端(建议串电源开关/保险);稳压模块 固定5V输出口 接入 Pin2/Pin4 给主控板回灌供电(也可使用Type-C给开发板供电,但是注意两者不能同时供电);稳压模块 自定义口调至5.0~5.5V 后接入PCA9685**V+**端子给舵机提供动力电。

  2. 共地连接:将稳压模块GND与 Quectel Pi M2 的 Pin9、PCA9685的GND连接至同一节点——共地是I2C通信正常的前提,务必接好。

  3. 舵机连接:舵机2(偏航YAW)信号线接PCA9685 CH0,舵机1(俯仰PITCH)信号线接 CH1;两只舵机电源线并联接入V+/GND排针。注意LFD-01线序 棕/红/橙=GND/5V/信号,接反会烧毁舵机。

  4. 供电连接:最后开启电池开关即可——稳压模块同时为主控板与舵机供电;程序启动后会自动下发"校正后的归中位置",云台上电即居中,无需再分两步先后上电。

Note:tips

连接完成后可用 i2cdetect -y 7 验证,输出显示 0x40 即代表PCA9685通信正常。VCC(逻辑电,数mA)与V+(动力电,≥1A)务必分离供电,不可混接。

项目实现

获取代码

在智能主控板上打开终端,使用git克隆项目代码。

sudo apt update
sudo apt install -y git
git clone https://github.com/Quectel-Pi/demo-servo-gimbal-control.git

执行完成后,当前目录下应生成demo-servo-gimbal-control文件夹。

安装依赖

进入工程目录,创建隔离环境并安装Python依赖。

cd demo-servo-gimbal-control
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt

运行程序

python3 run_gimbal.py

run_gimbal.py 会自动定位工程内的隔离环境并补全显示授权,随后启动程序;若程序正常启动,会弹出 Servo Control Center 窗口,左侧为3D实物视图,右侧为控制面板。

操控方式

左侧 3D 视图 + 右侧控制面板,拖动滑块/快捷键/演示时 3D 与实物 同步平滑转动;状态灯绿色 I2C connected: /dev/i2c-7 · 0x40 为实机在线,琥珀色 Simulation mode 为仿真。

 

 

操控方式

控制功能

拖动Yaw滑块

偏航角度调节

拖动Pitch滑块

俯仰角度调节

◀−5 / Center / +5▶

偏航步进/归中

▼−5 / Center / +5▲

俯仰步进/归中

键盘 A/D

偏航±5°

键盘 W/S

俯仰±5°

键盘 Space

双轴归中

Left/Up/Right/Down

一键预设姿态

▶ Auto Demo

自动演示(3周期扫掠)

应用演示

servo_control_demo

常见问题及解决方案

程序显示Simulation mode

现象:

Simulation mode (no PCA9685 on /dev/i2c-7)

解决方案:

  • 检查PCA9685供电是否正常:V+端子应量到5.0~5.5V电压。

  • 使用命令确认总线与芯片是否在位:

ls /dev/i2c-7
i2cdetect -y 7
  • 确认SDA/SCL是否接反、共地是否接好(稳压模块GND↔Pin9)。

  • 检查 smbus2 是否已安装,必要时重新执行依赖安装步骤。

舵机有电(卡紧)但完全不动

现象:

i2cdetect -y 7 能看到0x40,舵机有阻力但完全不转动

解决方案:

该现象通常是PCA9685芯片进入SLEEP休眠所致,本程序已内置 唤醒强制清SLEEP位 + 每秒保醒自愈 机制,升级到当前版本并重启程序即可自愈。

  • 若重启后仍不动,检查板上 OE 引脚是否接地(悬空/接高电平会禁用全部输出)。

舵机转动时抖动/异响

现象:

云台运动过程中舵机出现抖动或异响。

解决方案:

  • 多为稳压模块纹波偏大或电压跌落引起,可在V+/GND端并接1000µF电解电容。

  • 确认自定义口输出电压处于5.0~5.5V区间,避免低于4.5V或长期高于6V。

舵机只有一侧转动

现象:

偏航或俯仰只有其中一轴响应。

解决方案:

  • 检查对应CH通道信号线连接(CH0=偏航、CH1=俯仰)。

  • 检查该舵机电源线是否接好,可用万用表测量V+/GND电压。

技术支持与贡献

如在使用过程中遇到问题,欢迎在 移远官方论坛 提交技术咨询,我们的技术支持团队将及时为您解答。

项目开源地址: https://github.com/Quectel-Pi/demo-servo-gimbal-control

欢迎提交Issue反馈问题或Pull Request贡献代码改进!