树莓pi上apa102 led的驱动程序
apa102-pi的Python项目详细描述
APA102π
简介
apa102 pi是一个纯python库,用于驱动apa102类型的led链。它应该在覆盆子皮上工作,而不是在任何其他平台上测试。
APA102 LED通常是5050型LED,每个LED有一个额外的驱动芯片。驱动芯片负责通过输入线接收所需的颜色,然后保持该颜色,直到接收到新的命令。
根据这些LED的购买地点,它们可能被称为"APA102"、"SuperLED"或"Dotstar"。不应将其与三线制WS2812 LED(也称为"Neopixel")混淆。
关于驱动芯片真正好的部分是:一旦它接收到自己的颜色命令,它就将任何进一步的颜色命令从输入端转发到输出端。这样可以很容易地将多个LED连在一起。颜色命令1点亮第一个LED,命令2点亮下一个LED,以此类推。例如,发送300个颜色命令可以点亮整个5米,每米带60个LED。
目的
这个库设计用来处理发送颜色命令的细节。它应该是教育性的,因此是用python编写的。该库速度足够快,可以在300个LED灯串上产生良好的颜色效果,即使它是通过Python解释器运行的。但是,如果您需要非常快的速度,例如以每秒15帧的速度驱动基于APA102 LED的小型"显示器",则您必须寻找其他地方。
先决条件
- 一个覆盆子皮,运行最新版本的覆盆子(该库是用2018-11-13版本的覆盆子弹力石测试的)。
- 如果使用硬件spi:spi enabled和active(
raspi config
,interfaceing options,spi,enable);spi必须是空闲和未使用的。 - 对于软件SPI(位爆炸模式):两个免费的GPIO管脚
- adafruit_python_gpio库(https://github.com/adafruit/adafruit_python_gpio)。如果遵循以下说明,库将自动安装。
- Python3:有些人尝试使用Python2并报告它可以工作,但我自己不能保证这一点。我使用Python3进行所有的开发和测试。
理想情况下,一个10美元的树莓pi零w专用于驱动led的任务。LED条的连接器可以直接焊接到板上的正确端口。
接线
覆盆子pi是一个3.3伏的设备,而apa102发光二极管是5伏的设备。因此,LED驱动芯片可能无法正确识别3.3伏SPI信号。为了避免这种风险,对于时钟和mosi信号,使用74ahct125或74ahc125电平移位器。如果不使用电平移位器,则不会损坏覆盆子pi,因为覆盆子pi决定mosi和sclk的电压。
如果没有电平移位器,接线非常简单:
- 将一个覆盆子接地引脚接地
- 将数据导入覆盆子spi mosi
- LED时钟连接到覆盆子SPI SCLK
注意,"芯片选择"线(CE0或CE1)不用于APA102带。APA102芯片始终接受数据,不能关闭。要使"芯片选择"工作,您需要额外的硬件。如果您使用电平移位器,您可以将CE0或CE1连接到其"输出启用"引脚,例如。
LED灯条耗电量很大(每个LED大约20毫安,即一个亮白点60毫安)。如果你试图从树莓pi 5v输出的led电源,你很可能会立即杀死树莓!因此,我建议不要将LED的电源线与覆盆子连接。为了安全起见,请为覆盆子使用单独的USB电源,为LED使用强大的5V电源。如果你用le变速器,也从5伏电源供电。
说到这里,你可以用和LED条纹相同的电源为覆盆子供电(而不是使用额外的USB电源)。如果您决定这样做,请确保不要将USB电源插入覆盆子PI,否则您可能会冒着LED试图通过覆盆子供电的风险。
总之,这是我的极低技术含量的接线图:
在这里,完成的装置运行一个"彩虹"程序:
这是一个覆盆子pi零w与一个phat拍放大器在顶部。放大器的"VU表"只是一束APA102发光二极管;它们显示"彩虹"颜色方案:
插入USB端口的是一个WLAN棒(当然,现在使用的是覆盆子PiZero W)。这样我就可以在我的办公桌上重新编程灯光秀,即使这些光带是作为圣诞灯安装在外面的。将其与基于Arduino/WS2812的安装进行比较:要重新编程,必须将Arduino安装在内部,或将笔记本电脑安装在外部。
快速覆盆子皮设置
因为覆盆子pi zero是无头运行的,所以使用了覆盆子lite图像。此图像只包含最少的包,因此有些包是手动添加的。
当前的Raspbian Lite图像可以很容易地设置为从一开始就无头运行。在Mac或PC上烧录卡后,它将作为"引导"安装。转到这个目录,并创建一个名为ssh
的空文件来启用ssh。在Mac上,您可以这样做:touch/volumes/boot/ssh
。要启用和配置WLAN,请创建名为wpa_supplicant.conf
的文件。其内容应为:
country=CH
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="Your_SSID"
psk="Your_Password"
key_mgmt=WPA-PSK
}
当然,请使用正确的国家和SSID/PSK。启动后(请耐心等待:pi最初将启动两次),您可以ssh到raspberry pi:ssh pi@raspberrypi.local
。初始密码为覆盆子
:请确保立即更改!
接下来,安装其他软件包并启用spi:
- 更新您的安装(
sudo apt update&;sudo apt-y upgrade
)。 - 安装软件包:
sudo apt install-y python3 pip
- 激活spi:
sudo raspi config
;转到"接口选项";转到"spi";启用spi;当您使用时:请更改默认密码!退出退出工具并重新启动
将APA102项目用作库
这个图书馆最初是作为一个教育软件而建的。它展示了APA102 LED的协议是如何工作的。大部分内容都是以源代码中的注释形式进行解释的。如果您对此感兴趣,请继续下一章。如果您所需要的只是用于您自己项目的库本身,那么本章就足以让您开始工作。
您只需要:sudo pip3安装apa102 pi
。这将安装库及其对所有用户的依赖关系。
要验证安装,请从github下载测试脚本:curl https://raw.githubusercontent.com/tinue/apa102-pi/master/runcolorcycle.py-o runcolorcycle.py
。要运行,请键入python3./runcolorcycle.py
完全安装
要检索完整的库(包括源代码),您还需要执行以下操作:
- 安装git客户端:
sudo apt install-y git
- 准备git:
git config--global user.name"john doe"&;git config--global user.email johndoe@example.com李>
- 创建开发目录并将其更改为:
mkdir~/development&;cd~/development
- 获取apa102库和示例灯光程序:
git clone https://github.com/tinue/apa102-pi.git&;cd apa102 pi
- 您可能需要设置LED的数量以匹配您的条带:
CD APA102 pi&;nano runcolorcycle.py
;更新编号,按CTRL-X和"是"保存。- 运行示例lightshow:
/runcolorcycle.py
- 创建开发目录并将其更改为:
发布历史记录
- 1.0.0(2015-04-13):初始版本
- 1.1.0(2015-12-04):添加文档
- 1.1.1(2015-12-11):重写示例,驱动程序本身不变
- 1.2.0(2015-12-17):修复报告的问题;更新所有颜色样本;将步骤数与LED数分离
- 1.3.0(2016-03-25):来自Kapacuk的合并更改:允许具有不同于RGB颜色编码的条纹
- 1.3.1(2016-03-27):来自Kapacuk的合并"旋转"方法;修复了以前合并的错误
- 1.3.2(2016-12-25):修复了与"旋转"相关的错误;删除了控制台上的烦人消息;添加了调试方法
- 1.3.3(2017-04-14):来自duranda/master;cleanup;update readme.md的合并拉取请求19,无功能更改
- 1.4.0(2017-04-16):更新代码以更好地符合python样式指南(pep 8);来自"jmb"的合并拉取请求
- 1.4.1(2017-08-26):使用Raspbian Stretch进行测试;更新自述。
- 2.0.0(2017-11-05):将spi库交换给adafruit_python_gpio。这允许支持不使用硬件SPI的设备,例如Pimoroni Blinkt!或是节奏。
- 2.0.1(2018-01-19):微发布:添加样本
- 2.0.2(2018-05-25):驱动程序没有变化;对模板和方案进行了轻微的重组,以便更容易地更改SPI引脚;Pimoroni闪光灯特有的附加样本!
- 2.1.0(2018-06-08):使库可安装
- 2.1.1(2019-03-15):启用芯片选择(感谢@grandinquisitor);简化安装(感谢@nielstron)
- 2.2.0(2019-03-16):PYPI上提供的第一个版本(PIP 3安装);重命名包以符合PEP 8。