树莓派4B改装RC玩具车玩转opencv系列教程(二)树莓派通过PCA9685控制舵机


下面步骤和必要的说明有些翻译自官方文档。

硬件连接

硬件清单

  • 树莓派4B、
  • PCA9685、
  • 顽皮龙舵机(亲测MG90 9g、MG996、ES08MD 8g均能使用)

树莓派引脚

在这里插入图片描述
树莓派的引脚并没有像很多核心板那样在引脚附近标记出他的功能。上面截图是来自一个叫pinout.xyz.的网站。网站提供了非常好用的在线引脚查询功能。这个文章拖得有点久,写的时候好多细节发现不记得了,这就是没做好备注和记录的后果。。。立个flag以后要勤奋起来(但是这篇写完了还拖欠四篇:树莓派通过L298N驱动电机、树莓派安装opencv、玩转小车终章之整体联调、改写OTTO机器人程序使用pca9685驱动。哈哈哈哈 漫长的回忆之路哇~),其实我有印象我当初做这个的时候,还搜到过一个可以打印的贴纸。能够直接粘在树莓派的板子上。防止数错行接错线,造成不必要的损失。但是现在不记得在哪里找到的了。。。orz。。。网上也有一些转接板,测试的时候正是疫情严重的时刻,所有的快递好像都休息了。。就没尝试。在这里插入图片描述

引脚连接表

树莓派PCA9685
3.3vVCC
GPIO2(SDA)SDA
GPIO3(SDL)SDL
GPIO14(Ground)Gnd

Fritzing硬件连接图

在这里插入图片描述
特别提示:

  1. 不要用树莓派上的5v给PCA9685直接供电,会损坏树莓派。因为舵机角度的转换会带来噪声,且运行会带来电压的变化。所以还是强烈建议使用外接的5V电源。
  2. 明确PCA9685上面V+和VCC的两个引脚的区别。其中V+是用来给舵机供电的通常是5v,而VCC则是给芯片供电是3.3V。
  3. PCA9685上预留了电容的焊接口。当你驱动很多舵机时,在舵机移动时发现电源波动很大,则可焊接上电容。通常电容的容量选择是n*舵机数,比如五个舵机。大概就是500uF。因为没有500uF这个容量,使用470uF就可以了。

PCA9685树莓派库的安装

库文件github
官方使用文档
下面步骤和必要的说明有些翻译自官方文档。PCA9685库安装前需要打开I2C和安装依赖库。

打开树莓派的I2C

点击树莓派桌面左上角的红色树莓标志,点击“首选项”=>“Raspberry Pi Configeration”。在打开的设置界面选择“interface”标签。将I2C的设置改为“enable”。点击“ok”退出设置界面。
在这里插入图片描述

添加SMBus库

  • sudo apt-get install python-smbus

在这里插入图片描述

  • sudo apt-get install i2c-tools

添加i2c-tool库并不是必须的,他只是一个辅助工具,可以帮助我们方便的扫描树莓派中使用的I2C和SMBus设备。
2012年10前销售的树莓派版本使用下面命令:

sudo i2cdetect -y 0

2012年后的树莓派版本使用下面命令:

sudo i2cdetect -y 1

在这里插入图片描述

安装adafruit-circuitpython-servokit库

sudo pip3 install adafruit-circuitpython-servokit

在这里插入图片描述
上面的gif在录的时候粘贴完命令后半天没反应,我以为出问题了就停止了录制,刚停止她就开始安装了。我补个完成后的界面,如下图所示。
在这里插入图片描述

代码编写

import time //引入time库
from adafruit_servokit import ServoKit //引入刚刚安装的PCA9685库并将名字缩写成ServoKit方便后续调用

kit = ServoKit(channels=16)//明确PCA9685的舵机控制数

kit.servo[0].angle = 180//channel0上的舵机旋转180度。
time.sleep(1)//休眠一秒
kit.servo[0].angle = 0//channel0上的舵机回到初始的0度。

你可以选择把上面的代码直接复制到树莓派里的Mu编译器里。然后点击运行。就可以看到舵机旋转了一定的角度。我下面录制的git则是使用的另外一种方式。
我利用本系列教程(一)里提到的filezila软件将我笔记本中之前编写好的代码直接传送到了树莓派的pi用户的根目录。然后用Mu打开。Mu在第一次打开的时候会弹出一个框要求你选择编程模式。选择最下面的python3点击OK就可以了。
在这里插入图片描述

成品展示

在这里插入图片描述
上图就是连接好的状态。我的PCA9685供电就是用的usb转ttl的转换头上的5v。官网建议的是5V2A的电源。最终小车成品使用的是一个充电宝。
在这里插入图片描述

[1]: raspberry pca9685演示视频https://www.youtube.com/watch?v=9jcEwn7GzNs

1.1python软件的安装 先安装python软件优先,因为其他步骤如果用到sudo apt-get update 会导致python程序不是py2而是py3,就用不了我们的程序了 树莓派鼓励用户使用python和C++作为其开发语言,所以原则上可以不用安装python的编译器,但是树莓派自带的python(IDLE)和Thonny python IDE都过于简陋,不太适合python使用者进行复杂的OpenCV开发。在这里推荐Spyder作为树莓派的python IDE。这种编译器相对上述两种编译器略显笨重,但是对内核和运算值的控制更加灵活。   树莓派安装Spyder非常的方便,在命令行输入: sudo apt-get install spyder 下载时间可能比较长,因为在安装spyder3的同时很多python开发开发必要的依赖也一并被安装到树莓派里了,这也说明牺牲一定的空间下载spyder3是值得的。此时,我们已经可以在树莓派的开始菜单-programming中看到编译器了。注意: 1、 在下载spyder之前请不要输入 “sudo apt-get update/upgrade”, 否则会下载适用于python3.6的spyder,无法正常使用,比如图1-0中的spyder的python版本就是3.6,说明下载出现错误。 2、 如果看不到编译器说明安装过程出错,尝试重新执行:sudo apt-get update和 sudo apt-get install spyder3两条命令。   图 1-0下载完成后,在“start”中已经能看到Spyder编译器了     图 1-00 Spyder3的Python3.6版本 我们可以在preference/syntax coloring scheme中更换自己喜欢的主题,怎么样?是不是已经觉得树莓派和普通PC一样方便了呢?现在我们已经可以用在树莓派上舒适的开发python了。
### 如何在 Fritzing 中导入树莓派模块 Fritzing 是一款用于电子电路设计的开源软件工具,它允许用户创建面包板原型图、原理图以及印刷电路板 (PCB) 设计。对于树莓派这样的复杂模块,可以通过以下方法将其集成到项目中。 #### 导入树莓派模块的方法 为了在 Fritzing 中使用树莓派模块,通常需要下载并安装特定于该设备的自定义零件库文件。这些文件通常是 `.fzpz` 或 `.fzb` 格式的压缩包[^1]。以下是具体操作: 1. **获取树莓派模型文件** 用户可以从官方资源或其他社区贡献者处找到适合版本的树莓派零件文件。例如,在 Fritzing 官方网站上可能提供最新的支持组件[^2]。 2. **加载外部部件至程序内** 将下载好的树莓派元件拖放到 Fritzing 的工作区或者通过菜单栏中的 `Part` -> `Import Part...` 功能手动添加进去[^3]。 3. **验证连接配置** 成功导入之后,可以利用虚拟接线功能测试 GPIO 引脚以及其他外设接口之间的交互情况是否正常显示出来[^4]。 #### 使用树莓派进行硬件设计注意事项 当基于树莓派开展实际工程项目时需要注意几个方面事项: - 确认所选型号与目标应用场景匹配; - 考虑电源供应需求及其稳定性影响因素; - 预留足够的散热空间避免长时间运行过热损坏器件性能参数下降等问题发生; ```python # 示例代码展示如何初始化GPIO设置(仅作参考用途) import RPi.GPIO as GPIO def setup_gpio(pin_number, mode): """Set up the specified pin with given input/output mode.""" GPIO.setmode(GPIO.BCM) # Use Broadcom chip-specific numbering scheme. if mode.lower() == 'in': GPIO.setup(pin_number, GPIO.IN) elif mode.lower() == 'out': GPIO.setup(pin_number, GPIO.OUT) setup_gpio(18, "OUT") # Example of configuring Pin 18 as an output port. ```
评论 36
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值