树莓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。

一些APA102图片可在此处获得

目的

这个库设计用来处理发送颜色命令的细节。它应该是教育性的,因此是用python编写的。该库速度足够快,可以在300个LED灯串上产生良好的颜色效果,即使它是通过Python解释器运行的。但是,如果您需要非常快的速度,例如以每秒15帧的速度驱动基于APA102 LED的小型"显示器",则您必须寻找其他地方。

先决条件

理想情况下,一个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试图通过覆盆子供电的风险。

总之,这是我的极低技术含量的接线图:

线路图

在这里,完成的装置运行一个"彩虹"程序:

raspberry pi zero driving apa102 led

这是一个覆盆子pi零w与一个phat拍放大器在顶部。放大器的"VU表"只是一束APA102发光二极管;它们显示"彩虹"颜色方案:

Raspberry Pi Zero W with Phat Beat

插入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。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java DB2查看最近执行的命令   java正则表达式如何只匹配数字后的字符,而不在匹配模式中包含数字   java是否可以使用Jmh运行基于时间的预热阶段?   java必须输入两次输入,扫描仪才能读取   java如何使用一个或多个类方法设置多个类字段,而这些类方法并不专门引用任何字段?   java Quartz的CronTrigger每24小时一次,如午夜   java字符串索引超出边界异常?   java FXMLLoader找不到fxml文件Maven项目   java Eclipse Indigo在安装m2ewtp插件时遇到问题   java如何为连接池配置Hibernate、Spring和ApacheDBCP?   java netbeans:类中的类路径。福奈姆   javajmx及其在Tomcat内部Docker上的调试   java HTTP状态404 tomcat 7   Java:String split():我希望它在末尾包含空字符串   java我应该使用枚举集吗?   Java StringTokenizer如何查找段落结尾?