关键字: 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
- 灯带的另一个选择APA102, 油管有人在16年制作了144灯珠/米的效果, 相比30颗/米灯珠分辨率高了很多, 飞利浦也许是微型投影, 也许是这种密集led集成, 看demo
连接方法
我画了个流程图, 思维导图的方式更直观一些
给树莓派安装系统
刷镜像
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
-
第二页配置颜色适配, 以及是否过度有缓冲
-
第三页配置输入源
-
第四页配置服务器端口, 第一开启, 可以用手机控制灯带颜色简单变化, 没什么用
-
第五页是连接和调试
软件使用顺序
- 将软件各页调整好后, 到最后一页连接树莓派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取消掉即可