用树莓派制作流光溢彩

关键字: Raspberry Ambilight Hypercon hyperion

写这个流程的缘由

其实我已经用上这个一年了, 然而一次手贱调试时在电脑上hypercon远程把hyperion删了, 导致点安装也不好用, 就从头再来吧, 索性也不是从头开始, 设备都接好了, 只差系统

参考:

教程1 http://tuohuang.info/build-ambilight-with-raspberry-pi-part-one#.WYnTEtP5j_8
教程2 http://tuohuang.info/build-ambilight-with-raspberry-pi-part-two#.WYnTCNP5j_8
英文1: https://ajpawelski.wordpress.com/how-to-raspberry-pi-raspbmc-hyperion-and-a-ws2801-strip-2/
英文2: http://raspberry-at-home.com/ambi-tv-ampilight-effect-from-any-video-i-e-hdmi-source/

什么是流光溢彩

  • 流光溢彩来自飞利浦电视技术, 通过对画面边缘的灯光效果, 来达到扩展屏幕光影的效果, 飞利浦的技术有可能是多微型投影仪, 因为投影出来的效果不是灯泡能达到的
  • 不过有老外通过彩色灯带的控制, 做出了类似的效果
    这不算什么新技术, 大概在10年就已经有老外在开发这个项目, 玩这个在会diy的人眼里也算有些过时了
  • 这个项目也是我在将近一年前做的, 对树莓派也不了解, 网上各种查资料, 其实并不难, 有点动手能力的都可以搞, 即便你不动linux命令, python写法以及gpio语法

准备设备

  • 树莓派1代以上, 也就是只要是树莓派都可以
  • usb capture采集卡, 我用的是XXX L240 USB视频采集卡(输入命令"dmesg | grep usb"得到的是 usbtv Fushicai USBTV007 Audio-Video Grabber, 驱动装好后lsusb显示为Bus XXX Device XXX: ID 1b71:3002, 无名称)
  • hdmi -> av 转换器
  • hdmi 1in2out 一进二出
  • (可选)hdmi 3/4/5in1out 如果你需要多输入需要买, 比如切换视频盒子/ps4/xbox/电视机信号, 如果输入源只有一个那么就可以省点钱
  • 5v 10a的开关电源, 买稳压好一些的, 稳压差会导致led闪烁, 我这一年来被晃的不行, 一直以为是树莓派控制的不好, 后来玩nodemcu发现灯带本身有寄存器, 不存在不发送数据会导致闪烁的问题, 于是我在电源端还加了滤波电容
  • ws2811/ws2812灯带30颗/米 or 60颗/米都可以, 如果不想显示的特别细腻, 可以选择30颗的, 买10块钱左右一米的即可 (ws2801不是不可以, 贵, 笔者买这个只是图5v, 后来发现基本上都能找到5v的, 买这个灯30颗的价格相当于买ws2812 60颗的价格)
    • 灯带的另一个选择APA102, 油管有人在16年制作了144灯珠/米的效果, 相比30颗/米灯珠分辨率高了很多, 飞利浦也许是微型投影, 也许是这种密集led集成, 看demo
      https://www.youtube.com/watch?v=VG4o7_B4POU

连接方法

我画了个流程图, 思维导图的方式更直观一些


用树莓派制作流光溢彩_第1张图片
树莓派流光溢彩流程图.png

给树莓派安装系统

刷镜像

http://www.jianshu.com/p/5dc83db2b78e
需要注意的是, 写入镜像需要很长时间, 耐心等待

  • 注意, 如果出现raspberrypi-net-mods结尾问题 尝试下面方式烧录(笔者试了下面这个170705, 默认方式和软件方式写入都会出现这个错误, 下面这个命令行写入就没有这个问题)

sudo dd bs=1m if=/path/to/Downloads/2017-07-05-raspbian-jessie.img of=/dev/rdisk2 conv=sync status=progress

  • 也有老外用python来批处理这个问题
#!/usr/bin/python
# 8th November, 2009
# update manager failed, giving me the error:
#       'files list file for package 'xxx' is missing final newline' for every package.
# some Googling revealed that this problem was due to corrupt files(s) in /var/lib/dpkg/info/
# looping though those files revealed that some did not have a final new line
# this script will resolve that problem by appending a newline to all files that are missing it
# NOTE: you will need to run this script as root, e.g. sudo python newline_fixer.py
import os
dpkg_path = '/var/lib/dpkg/info/'
paths = os.listdir(dpkg_path)
for path in paths:
    path = dpkg_path + path
    f = open(path, 'a+')
    data = f.read()
    if len(data) > 1 and data[-1:] != '\n':
        f.write('\n')
        print 'added newline character to:', path
    f.close()  

解决方案都来自帖子:
https://www.raspberrypi.org/forums/viewtopic.php?f=63&t=187936#p1185337

也可以使用 ApplePi-Baker.app 进行傻瓜安装
https://www.tweaking4all.com/hardware/raspberry-pi/macosx-apple-pi-baker/

使用国内源更新速度快

deb http://mirrors.aliyun.com/raspbian/raspbian/ jessie main non-free contrib
deb-src http://mirrors.aliyun.com/raspbian/raspbian/ jessie main non-free contrib

安装流光溢彩程序

安装时可能需要很长时间, 请耐心等待

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) 

测试usb采集卡信号

https://www.raspberrypi.org/forums/viewtopic.php?t=124546

//获取usb设备列表
lsusb
//获取usb设备列表详细信息
dmesg | grep usb
//列出视频设备
v4l2-ctl --list-devices
//获取上面列表中设备的具体信息, 不一定是video0
v4l2-ctl --list-formats-ext -d /dev/video0
//安装mplayer, 用于检测视频是否抓取正确
sudo apt-get install mplayer
//运行mplayer获取easycap视频流
mplayer tv:// -tv driver=v4l2:norm=NTSC-M:width=720:height=480:outfmt=uyvy:device=/dev/video0:input
=0
mplayer tv:// -tv device=/dev/video0 -hardframedrop
//获取视频采集卡数据
v4l2-ctl --all

设置树莓派远程访问

设置固定ip

步骤 http://ju.outofmemory.cn/entry/102072
格式 http://blog.csdn.net/jdh99/article/details/22096479

SSH 为了安全新版默认都不开机启动ssh

http://blog.csdn.net/messidona11/article/details/71514247
开机启动ssh(电脑上在boot分区创建ssh文件即可) http://blog.csdn.net/scylhy/article/details/62896559
如果以前登录ssh时保存密钥, 重装系统后同样ip下会提示

WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED

解决方法

sudo nano /Users/zszen/.ssh/known_hosts
用#屏蔽掉提示的那个ip即可

控制灯条

下载hypercon.jar这个软件
https://hyperion-project.org/wiki/HyperCon-Information

//截图
hyperion-v4l2 --screenshot
//将灯条变红 (必须把hyperion启动起来, 通过hypercon软件可开启)
hyperion-remote --color red

软件配置

  • device 设置输出的灯带类型, 我这里用的是rbg的ws2801


    用树莓派制作流光溢彩_第2张图片
    image.png
  • 第二页配置颜色适配, 以及是否过度有缓冲


    用树莓派制作流光溢彩_第3张图片
    image.png
  • 第三页配置输入源


    用树莓派制作流光溢彩_第4张图片
    image.png
  • 第四页配置服务器端口, 第一开启, 可以用手机控制灯带颜色简单变化, 没什么用


    用树莓派制作流光溢彩_第5张图片
    image.png
  • 第五页是连接和调试


    用树莓派制作流光溢彩_第6张图片
    image.png

软件使用顺序

  • 将软件各页调整好后, 到最后一页连接树莓派ssh
  • 点save保存软件设置
  • 点create Hyperion Configuration 创建配置json
  • 点Local Config Path 找到存放的本地配置json
  • 点Send Config把配置通过ssh发送到树莓派的/etc/hyperion/下, 并命名为hyperion.config.json
  • 连上后start就相当于hyperiond /etc/hyperion/hyperion.config.json
  • stop为停止服务

问题 和 解决

  • 也是为什么重装系统, 我寻求官方帮助, 之前手误删除了程序, 然后再下载后led就只跟随树莓派桌面变化了, 很奇怪, 等待稍后解决
    https://hyperion-project.org/threads/strange-leds-display-raspberry-desktop-color.952/
    https://github.com/hyperion-project/hyperion/issues/759
    解决方法: 将配置里的Internal Frame Grabber取消掉即可
    用树莓派制作流光溢彩_第7张图片
    image.png

你可能感兴趣的:(用树莓派制作流光溢彩)