用树莓派打造流光溢彩 - Build Ambilight with Raspberry Pi (二)

Jan 30, 2016

在我们迫不及待的链接LED灯带使其发光之前,我们先了解下LED灯带的结构和参数,因为如果一旦接线错误,有些后果是无法挽回的,可能整个灯带将会被烧掉。

LED灯带结构




接头部分有一个接头从左到右有黑,绿,红,蓝色的线。另外一段有也有对应四个连接引脚5V,CK,SI和GND. 特别需要注意灯颗粒上面的箭头,这个是因为灯带的发光方向是有要求的,必须是单方向,从输入到输出,特别是后面布到电视机后面需要将灯带剪开,然后焊接到一起,这个时候必须保证箭头的方向是一致的。

LED灯带布线电视机


到了动手的环节了, 我们会将LED灯带布线到电视机后面。LED灯带背面有双面胶,将其拨开就可以贴在电视机上面了。我们先从电视机的右边(站在电视机前面面对电视机来看的右边)开始,分成3段,右边->上边->左边,逆时针方向将其布好到电视机上。这里需要保证每一段上面的LED灯带的箭头是一致的。


焊接连接头的时候,记住5V对5V,CK对CK, SI对SI,GND对GND。这是个技术活,记得别紧张慢慢来,虽然焊接圆点不打,其实焊接起来还是比较简单的。

LED灯带跟树莓派接线


接下来我们需要给LED灯带连线,我们首先给灯带供电,我们将拿杜邦线将灯带的5V黑色端连接到DC电源母头的正(+)端,GND蓝色链接到DC电源母头的负(-)端。将LED灯带上的CK(时钟信号)连接到树莓派上的SCLK内行第二个引脚上,SI(数据信号)链接到树莓派上内行第四个MOSI引脚。

这里先上一张连线图,在Phillip Burgess的基础上,我修改了一下:


</br>


这里树莓派上的GND和5V引脚不是一定需要链接到电源上,大可不必纠结,我只是图方便省事。

连接其他组件


最后我们把其他组件按顺序都连接起来。

软件端准备Hyperion


目前为止,硬件端基本已经差不多,我们接下来需要准备软件端。

  • 操作系统 - OSMC.

对于初学者而言,OSMC比较简单直观也有可视化的桌面,上手比较快。我们需要去下载页面,选取合适的镜像和平台,下载之后将SD卡插上电脑直接烧录进去即可。 烧录好之后查到树莓派的卡槽中并启动,记得插上网线,然后获取IP地址。 第一次启动需要你用键盘配置下语言,时区等。


记下IP地址:192.168.1.3

我们需要Hyperion来读取视频截图,然后转换信号并映射到LED灯带上。Hyperion有很多的有点,比如低CPU使用率,后台运行,轻量级,速度快等等,总之是为树莓派量身打造。更重要的是它提供了一个图形化的界面来配置灯带映射的参数等等。

第一步 我们需要SSH登录到树莓派:

    ssh osmc@192.168.1.3

OSMC默认的账号是:osmc/osmc。输入密码osmc即可登录。

第二部 安装Hyerion,可以根据官方文档Installation on OSMC RC3:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install git libqtcore4 libqtgui4 libqt4-network libusb-1.0-0 libprotobuf9 ca-certificates
wget -N https://raw.github.com/tvdzwan/hyperion/master/bin/install_hyperion.sh
sudo sh ./install_hyperion.sh
sudo vi /boot/config.txt(然后末尾添加此行:dtparam=spi=on)     

Hyperion视频采集卡调试


安装好后,可以快速调试一下看看是否工作:

    hyperion-remote --priority 50 --color red --duration 5000

看看是否都亮红色,比如下图我这里是贴上电视机前先测试的:


接下里我们测试下视频采集卡模块是否正常工作。

  • 先检测是否视频采集卡被识别。
    apt-get install lsusb    

运行之后会有如下输出:

osmc@osmc:~$ lsusb
Bus 001 Device 004: ID 05e1:0408 Syntek Semiconductor Co., Ltd STK1160 Video Capture Device
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp. LAN9500 Ethernet 10/100 Adapter / SMSC9512/9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
osmc@osmc:~$

Ltd STK1160 Video Capture Device 那一行就表示被识别。

  • 调试Hyerion V412 Grabber模块。

根据官方文档V412 Grabber, 我们先通过命令调试下部分参数来确保能得到正确的视频截图。

    sudo hyperion-v4l2 --width -1 --height -1 --size-decimator 1 --frame-decimator 1 --screenshot

会得到一个screenshot文件,是左边这样的。

您看到有黑边,这里我们需要配置crop margin,截取黑边部分,

sudo hyperion-v4l2 --width -1 --height -1 --crop-top 10 --crop-left 30 --crop-bottom 10 --crop-right 40 --size-decimator 1 --frame-decimator 1 --screenshot

就得到右边的截图。

Hyperion配置LED灯带映射


到了配置Hyperion的时候了,你可以通过Hyerion的图形化工具来配置。工具的文档Hyerion Configuration有详细的工具使用说明,先下载工具HyperCon_ssh.jar. 下载到本地之后运行java -jar HyperCon_ssh.jar


type: 选择WS2081 RGB byte order: RGB direction: 方向选取逆时针 Led in top/bottom coners: 因为我们在顶角90度的地方并没有灯叠加,所以都选false Horizontal: 水平灯一共有32个 Vertical: 左右边有19个 Bottom Gap: 因为底边没有灯,所以设置为顶边的灯数来去掉底边 1st LED offset: 设置此参数来确保第一个标号0从灯带的输入端开始,也就是右边地下第一个。

后面的Horizontal depth等等可以保持默认。


接下来设置采集卡参数,禁止Frame Grabber, 同时开起GrabberV4L2, 将下面的参数按照调试的时候填上。 最后点击下面的Create Hyerion Configuration,导出hyperion.config.json配置文件,并SCP上传到树莓派上。

scp hyperion.config.json osmc@192.168.1.3:~
登陆到树莓派
cp hyperion.config.json /etc/
sudo /etc/init.d/hyperion stop

怎么调试了? 可以运行如下命令来查看输出:

sudo hyperiond /etc/hyperion.config.json

会有如下输出:

Application build time: Jan 30 2016 16:59:41 QCoreApplication initialised Selected configuration file: /etc/hyperion.config.json ColorTransform ‘default’ => [0; 203] Device configuration: { “colorOrder” : “rgb”, “name” : “MyPi”, “output” : “/dev/spidev0.0”, “rate” : 250000, “type” : “WS2801” } Black border threshold set to 0.1 (26) Creating linear smoothing Created linear-smoothing(interval_ms=25;settlingTime_ms=200;updateDelay=0 Effect loaded: Knight rider Effect loaded: Blue mood blobs Effect loaded: Cold mood blobs Effect loaded: Full color mood blobs Effect loaded: Green mood blobs Effect loaded: Red mood blobs Effect loaded: Warm mood blobs Effect loaded: Rainbow mood Effect loaded: Rainbow swirl fast Effect loaded: Rainbow swirl Effect loaded: Snake Effect loaded: Strobe blue Effect loaded: Strobe Raspbmc Effect loaded: Strobe white Initializing Python interpreter Hyperion created and initialised run effect Rainbow swirl fast on channel 0 Boot sequence(Rainbow swirl fast) created and started V4L2 width=720 height=480 V4L2 pixel format=UYVY V4L2 grabber signal threshold set to: {25,25,25} V4L2 grabber started V4l2 grabber created and started …

至此,就表示大功告成。

最后运行sudo /etc/init.d/hyperion start来启动Hyerion. 尽情享受流光溢彩Ambilight吧~

引用