树莓派的引脚并没有像很多核心板那样在引脚附近标记出他的功能。上面截图是来自一个叫pinout.xyz.的网站。网站提供了非常好用的在线引脚查询功能。这个文章拖得有点久,写的时候好多细节发现不记得了,这就是没做好备注和记录的后果。。。立个flag以后要勤奋起来(但是这篇写完了还拖欠四篇:树莓派通过L298N驱动电机、树莓派安装opencv、玩转小车终章之整体联调、改写OTTO机器人程序使用pca9685驱动。哈哈哈哈 漫长的回忆之路哇~),其实我有印象我当初做这个的时候,还搜到过一个可以打印的贴纸。能够直接粘在树莓派的板子上。防止数错行接错线,造成不必要的损失。但是现在不记得在哪里找到的了。。。orz。。。网上也有一些转接板,测试的时候正是疫情严重的时刻,所有的快递好像都休息了。。就没尝试。
树莓派 | PCA9685 |
---|---|
3.3v | VCC |
GPIO2(SDA) | SDA |
GPIO3(SDL) | SDL |
GPIO14(Ground) | Gnd |
库文件github
官方使用文档
下面步骤和必要的说明有些翻译自官方文档。PCA9685库安装前需要打开I2C和安装依赖库。
点击树莓派桌面左上角的红色树莓标志,点击“首选项”=>“Raspberry Pi Configeration”。在打开的设置界面选择“interface”标签。将I2C的设置改为“enable”。点击“ok”退出设置界面。
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
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