W-BOX视频教学免费下载地址(可以在线观看):
http://down.avldiy.cn/down_server/W-BOX/video_teaching/
或者 https://www.bilibili.com 搜索 《原来灯光可以这样玩之自动化灯光控制技术》
W-BOX视频教学百度网盘下载地址(提取码:wtoj):
https://pan.baidu.com/s/1LSr7kx-Ll58dt4S9MUmqjg
W-BOX配套软件下载地址:
http://box.avldiy.cn/update/w-box/
W-BOX最新固件下载地址:
http://down.avldiy.cn/down_server/W-BOX/ipk/
W-BOX技术特性:
1:盒子带8路隔离DMX512输出,8路WS281x LED灯带SPI输出,不但可以控制DMX512设备,也可以直接控制LED灯带;
2:盒子带1路150M,2.4G Wifi ;
3:盒子带2个网口,盒子内部自己带交换机和路由器,可以通过网线手拉手级联更多盒子组合成一个大的灯光控制系统,无需外加交换机或者路由器;
4:盒子带SD卡,可以支持FAT、FAT32、NTFS、EXT4格式,SD卡可以保存音视频文件和DMX灯光文件进行脱机播放;
5:盒子带通用USB HOST接口,可以外接U盘、USB-Hub、USB声卡、USB鼠标、键盘、USB-RS232串口…等USB设备;
6:盒子可以播放大部分的音视频文件,支持AVI、MPG、WMV、JPG、BMP、GIF、WAV、MP3、FLAC、APE及我们专用的DMX和l3a文件,并可以映射视频和DMX文件到灯光上;
7:盒子带很多外部接口,比如GPIO、I2C、UART、PWM、IR…可以通过外部设备触发播放盒子脱机文件,也可以接外部传感器触发控制盒子,或者控制外部设备;
8:盒子带1路红外线IR接收,通过学习,支持市面上99%以上的遥控器,同时还带1路IR红外线发射GPIO接口;
9:盒子带有Webui图形界面,通过任何平台的浏览器就可以控制和设置盒子,webui里面还带有一个简单控制台,通过手机、平板就可以测试、控制灯光;
10:盒子里面有2颗CPU,跑的系统是linux,启动时间为17~23秒左右;
11:盒子可以同时接收和处理最新版本的 Artnet、sACN、ESP、hahan… 等灯光网络协议数据去控制灯光,不同协议不需要切换,会同时处理,自动解析;
12:盒子可以通过网络捕捉任何带网络传输的实体控制台或者模拟软件编写的灯光show,保存成盒子专用的脱机DMX文件,方便盒子播放或者外部设备调用、触发;
13:盒子支持很多专业软件,大部分已经破解。
……
支持软件列表(任何带Artnet、sACN输出的软件和控制台都支持,注:大部分免费软件不具备多端口输出,需要采用专业软件)
序号 | 软件名称 | 说明 |
1 | DMXCreator | 支持全部域的输出,已破解,采用hahan协议 |
2 | MagicQ | demo软件带免费域输出,支持64个域,最大可以支持200个域,采用Artnet或者hahan协议 |
3 | Aolite titan | 支持全部域的输出,采用Artnet或者sACN协议,网上可以搜索到破解 |
4 | cueluxpro | 支持全部域的输出,软件最大70个域输出,网上可以搜索到破解,采用hahan协议 |
5 | Daslight4 | 支持全部域的输出,软件最大40个域输出,网上可以搜索到破解,采用hahan协议 |
6 | mydmx3 | 支持全部域的输出,软件最大40个域输出,网上可以搜索到破解,采用hahan协议 |
7 | sunlite suite3 | 支持全部域的输出,软件最大50个域输出,网上可以搜索到破解,采用hahan协议 |
8 | dot2 onPC | 支持全部域的输出,网上可以搜索到破解,采用hahan协议 |
9 | grandMA1 onPC | 支持全部域的输出,软件最大8个域,网上可以搜索到破解,采用hahan协议 |
10 | grandMA2 onPC | 支持全部域的输出,软件最大256个域,网上可以搜索到破解,采用hahan协议 |
11 | Madrix | 支持全部域的输出,软件最大256个域,网上可以搜索到破解,采用Artnet或者sACN协议 | 12 | Jinx | 支持全部域的输出,软件最大256个域,免费,采用Artnet或者sACN协议 |
13 | lightjockey | 支持全部域的输出,软件最大4个域,网上可以搜索到破解,采用hahan协议 |
14 | sweetlight | 支持全部域的输出,软件最大6个域,网上可以搜索到破解,采用hahan协议 |
15 | onyx | 官方demo软件带4个域输出,未破解,采用Artnet协议 |
16 | freestyler | 免费软件,采用Artnet或者sACN协议 |
17 | dmxcontrol | 免费软件,采用Artnet或者sACN协议 |
18 | pcdimmer | 免费软件,采用Artnet或者sACN协议 |
19 | 任何VJ软件 | 网上有很多破解的VJ软件,采用Artnet或者sACN协议 |
20 | QLC+ | 免费软件,采用Artnet或者sACN协议,支持 windows、macOS、linux 系统 |
21 | … | …如果有什么好软件也可以发给我看看… |
软件下载地址: http://box.avldiy.cn/update/w-box/
Q1:这个盒子能做什么?
这个盒子是AVLdiy.cn的hahan历时2年打造的专业灯光控制盒,是一个真正意义上的灯光控制平台,功能很多很强大,盒子即可以控制DMX512灯也可以控制WS281x\APA\SK…兼任281x时序的LED灯带。控制专业DMX512舞台灯光、SPI LED灯带和作为grandMA、Titan、Madrix…控制台、模拟软件的扩展器只是一个最基本功能;
盒子带8个光电隔离的DMX512输出口,总共4096通道,和8个域的LED灯带 SPI WS281x输出,可控制3通道RGB像素1360个。输出模式可实时切换,会在线保存;
盒子可以同时接收和处理最新版本的 Artnet、sACN、ESP、hahan… 等灯光网络协议数据去控制灯光,不同协议不需要切换,会同时处理,自动解析。
盒子可以播放音视频多媒体文件,包括:AVI、MPG、WMV、JPG、BMP、GIF、WAV、MP3、FLAC、APE及我们专用的DMX和l3a文件,这些文件可以保存到SD卡或者U盘,脱机播放传给灯光作声光影同步。
盒子可以通过网络捕捉任何带网络传输的实体控制台或者模拟软件编写的灯光show,保存成盒子专用的脱机DMX文件,方便盒子播放或者外部设备调用、触发。 比如可以捕捉grand MA, Titan, madrix… 等实体台或者软件灯光数据。捕捉方式操作简单,可以通过webui操作,手机即可以完成操作;
盒子带webui图形界面,ui里面有灯光参数的设置,盒子的基本设置,简单的web灯光控制台,脱机播放器,DMX捕捉器,root操作… 可以方便任何系统的手机、平板、电脑设置盒子和测试灯光;
盒子有2颗一一对应的cpu芯片,跑的是linux系统,启动时间为17秒~23秒,可以通过shell编程,进行二次开发。我们开发有很多专用的linux工具软件,编写简单脚本就可以做到自动化灯光控制,音视频同步等功能。一个盒子就可以做到这些功能,不再需要其他额外的设备;
盒子带很多外部接口,比如I2C,UART、GPIO、IR、PWM…方便外接外部感应器作自动灯光控制,比如接人体感应器,感应到人走上台阶,播放台阶的灯光效果和音乐,同时控制继电器、马达…甚至空调等外部设备;
盒子带1路WIFI,2路可编程的LAN网口,内置路由和交换功能,LAN口可通过网线手拉手级联,让N个盒子组成一个大的灯光控制系统,无需再外接交换机或者路由器,LAN口还可以改WAN,或者划分VLAN。如果具备外网固定IP,还可以远程控制灯光,直接浏览固定的IP地址就打开了盒子的webui,还能远程root,想怎么控制都可以;
盒子带SD和USB接口,USB可以接USB-Hub,USB声卡,U盘,键盘,USB232串口线等设备。
盒子带2个功能按钮,5个LED指示灯,5个LED灯不同速度的闪、亮、灭的组合可以方便指示盒子的不同状态,比如可以指示:DMX512输出模式、LED输出模式、升级模式、启动模式、网线接入指示、网络数据指示、wifi指示、故障指示…
序号 | 属性 | 说明 | 备注 |
1 | 外接电源适配器 | 直流DC:7.5V~25V / 电流:2A~1A | 盒子功率:8W |
2 | DMX512输出 | 8路250K标准的DMX512输出,带光电隔离,每路独享16bit域地址,每路都可以单独设置0~65535任意端口,互不关联 | 硬件带3路DC-DC电源隔离,8路信号光隔离 |
3 | LED输出 | 8个域,800K单线输出,时序兼容WS281x芯片都可以 | 2根输出线,每根线输出4个域,兼任madrix的DMX512布灯 |
4 | WiFi | 2.4G / 150Mb ,可自由设置开启及关闭 | 启动峰值:800ma , 工作:120ma |
5 | LAN口 | 2路10M/100Mb自适应,可编程 | LAN1和SD卡/PWM复用,LAN1和SD/PWM不能同时使用,2选1 |
6 | USB口 | Host,可接大部分USB设备,特殊设备需要我们写驱动 | DC:500ma输出,带PTC保护 |
7 | SD卡 | TF卡,支持任何容量 | 支持FAT、FAT32、NTFS、EXT4 |
8 | 按钮 | 1路硬复位RST按钮(按下盒子会复位重启) 1路多功能WPS按钮 | WPS具备2个功能,如果Wifi关闭,按住5秒,会打开wifi,如果继续按住大于20秒,盒子会恢复到出厂设置 |
9 | LED指示灯 | 5个LED灯,2个绿灯,2个黄灯,1个红灯 | 不同组合的闪、亮、灭有不同定义 |
10 | I2C | 1路 100K/400K | 带命令行工具,方便脚本编程 |
11 | 红外IR | 1路接收, 1路发射(IO口方式) | 可以支持市面上99%以上红外遥控器,盒子不配遥控器,遥控器需要设置(学习)才能使用 |
12 | PWM | 2路: PWM0、PWM1 | GPIO复用,带命令行工具 |
13 | UART | 3路: UART0(Linux专用)、UART1/UART2 | UART1/2复用GPIO,TTL电平,UART1是3.3V, UART2是5V,非RS232,接RS232必烧主芯片! |
14 | GPIO | 2路 | 可以复用其他功能管脚,释放更多GPIO |
15 | 3.3V/5V输出 | 各1路 | 5V带PTC保护,限制在500ma,3.3V没有保护,如果输出功率加盒子总功率大于8W会保护,请尽量不要用3.3V给外部设备供电,因为3.3V用电量很大 |
敬请注意:
如果不具备专业知识,请勿轻易去连接第10~15项,因为这些管脚是直接通过主CPU芯片连接出来的,CPU的核心工作电压是1.2V/1.8V,管脚能够承受最大电压是3.3V,如果误接大于3.3V的外部信号或者电源必烧毁CPU,如果CPU烧毁,基本上盒子就报废了。烧毁芯片不在保修范围内。
盒子出厂会贴封条,如果撕毁封条,将视为自动放弃保修权益,敬请注意此条款。
Q2:盒子LED灯状态说明
盒子有5个LED灯,这5个灯不同状态的组合指示盒子不同工作状态。
1绿灯,2黄灯,3绿灯,4黄灯,5红灯
1绿灯是LAN0口是否接网线的指示,接了网线会亮,有网络数据会闪;
3绿灯是LAN1口的指示,接了网线会亮,有网络数据会闪,工厂模式下会和4,5一起闪很快;
2黄和4黄有多种状态:DMX512输出模式2会一直闪,闪512次后会灭2秒,4会长亮; LED输出模式2会长亮,4会一直闪,闪512次后会灭2秒; 如果2和4长时间交替闪,则表示盒子有严重故障,无法自行修复,请联系我们。
5红:Wifi连接会闪;启动会闪;升级也会闪;不管怎么样,一定要亮才正常。盒子启动时,可以通过看5红从闪到不再闪,2,4黄其中一个会闪表示启动成功。
状态情况 | 1绿 | 2黄 | 3绿 | 4黄 | 5红 | 备注 |
DMX512输出启动状态 | – | 长亮 | – | 长亮 | 闪烁 | 2,4会交替闪一次,红灯会先亮后闪烁 |
LED输出启动状态 | – | 长亮 | – | 灭 | 闪烁 | 2,4会交替闪一次,红灯会先亮后闪烁 |
DMX512控制状态 | – | 闪烁 | – | 长亮 | – | 红灯长亮或偶尔闪烁(正常工作状态) |
LED控制状态 | – | 长亮 | – | 闪烁 | – | 红灯长亮或偶尔闪烁(正常工作状态) |
LAN0状态 | 闪烁/亮 | – | – | – | – | 长亮表示网线正常,闪烁表示有网络数据 |
LAN1状态 | – | – | 闪烁 | – | – | 闪烁表示接入网线正常,有网络数据 |
Wifi状态 | – | – | – | – | 闪烁/亮 | 连接wifi和有wifi数据会闪烁 |
工厂模式 | – | – | 闪烁 | 闪烁 | 闪烁 | 请按Rest键或者拔插电源复位一次 |
升级固件模式 | – | 停止闪烁 | – | 停止闪烁 | 闪烁 | 升级时请勿关闭盒子电源,升级需要3分钟 |
开机故障 | – | – | – | – | 不闪/不亮 | 开机红灯不闪,重大故障,请联系我们 |
无法清除故障 | – | 交替闪烁 | – | 交替闪烁 | – | 2,4长时间交替闪烁,故障无法清除,请联系我们(见下图) |
无法恢复故障,请联系我们
Q3:盒子内部接口说明
盒子出厂时,Wifi用的是内置天线,如果想传输距离更远、信号更强,可以自行更换一根2.4G/4dB…或更高增益的天线。天线接口是IPX1,直径2mm。
灯光输出接口采用的是凤凰头,DMX512接口线序按DMX512标准:3+ 2- 1接地; LED灯带SPI控制是单线接口,每根线传4个域数据,每根线可以接680颗RGB像素,总共可以控制1360颗3通道RGB像素。域的连接,内部会自动通过软件拼接,兼容madrix布灯方法。
DMX512输出和LED-SPI输出不能同时使用,通过 [BOX SETUP] -> “Lighting Out Mode” 切换使用。
盒子输入电源采用宽电压,为直流7.5V~25V都可以,如果采用7.5V需要至少2A以上,如果采用12V以上电源至少需要1A以上。
敬请注意:GPIO DIP就是表1的第10~15项接口,如果连接将会视为自动放弃保修权益。
其中大的孔这一排输出的是5V信号,请不要回接到盒子上。IR_SO是红外线发射GPIO接口,可以把集中控制系统的红外发射线或者IR发射管的正(长脚)接在这个IO口上,负脚接在GND上,就可以通过“irsend”命令发射红外线码去控制外部任何带红外线接口的设备;TX0、RX0是linux打印log专用的UART口,调试使用的;TX1、RX1 / TX2、RX2是可设置的UART通讯口,可以外接3.3V TTL的串口进行通讯,注意不是RS232接口,RS232是带电平转换芯片的串口,电压高于+—13V,如果RS232接这个IO口必烧CPU芯片,外部RS232需要取消电平转换芯片才能连接盒子IO口。
TX2、RX2还可以复用pwm2和pwm3;SCL、SDA是I2C接口,可以通过命令行“i2c”和外部设备进行i2c通讯;GPIO2、3是2路可以输入也可以输出的IO口;pwm0、pwm1是2路pwm输出,可以复用GPIO;V3、5V分别是3.3V电源和5V电源输出,可给外接感应器供电,注意功率有限制;CH3、CH4为工厂保留功能。
Q4:如何做开箱测试?
可以通过Wifi连接或者把网线接入到盒子LAN0口,连接上盒子进行测试。
盒子出厂状态: Wifi SSID:hahan_light / Wifi密码:AVLdiy123 / IP: 192.168.7.1 / Mask:255.255.255.0 / root密码:AVLdiy123 。注意一下: 通过Wifi连接盒子,不需要设置电脑IP地址,盒子Wifi是DHCP方式,会自动分配一个IP给电脑,但是如果电脑通过网线连接LAN0口,就需要把电脑的IP设置成192.168.7.xx ,电脑IP必须和盒子在相同网段才能连接,盒子LAN口出厂设置的是静态IP。
盒子接上灯具后,打开电脑或者手机的浏览器,输入盒子的IP地址:192.168.7.1,连接上盒子,就可以通过webui设置盒子,也可以通过网页版控制台 [Lighting Test] 控制实际灯具,可以通过推 [Lighting Test] 的推子来看灯是否受控。“AutoTest”是一个往复开关,按下会自动测试,再按下会停止测试。
PC电脑可以通过专业DMX软件进行测试,比如运行MAlighting官方带Artnet解锁的 gramdMA2 onPC3.125版本,或者 Madrix 软件,或者Avolites Titan… 通过Artnet、sACN连接上盒子进行测试,这些软件的Artnet输出设置方法请自行baidu,可以搜索到很多同行的视频教学。还可以通过一些VJ软件把视频通过盒子映射到灯光上。
使用MA onPC需要注意的是:电脑IP必须设置或者增加一个2.0.0.x的固定IP才可以,否则MA onPC不会输出Artnet,因为标准的Artnet协议会轮询2.x.x.x作为主网,10.x.x.x作为副网,设备的IP是通过网卡的MAC地址计算得到的,MAC世界唯一,因此任何设备无需IP都可以加入到Artnet网络,IP不会重复,只需要Artnet服务器端的IP固定为2或者10网段就可以,这是Artnet协议设计的初衷,设备可以做到即插即用,无需设置。MA是按规范来的,所以要设置2网段,现在很多设备不按规范来,搞得artnet好乱,我们盒子可以不用管任何IP的东西,因为盒子是自己写的网络处理协议,所有数据在网络协议第2层就处理完成。
Ma onPC设置正确后,如果有artnet输出的话,universe的Granted会显示绿色的Yes ,注意:一定要先配灯再设置Artnet,否则会没有输出的。
Avolites Titan的设置方法:在titan里鼠标右键按AVO键,然后左键按Disk键进入系统模式,从屏幕右侧菜单点击DMX设置,会打开DMX设置窗口,就可以看见Artnet设置,同时右边”DMX线路”可以发现找出了我们盒子”hahan’s Artnet”,添加域0~7,如上图。
敬请注意:盒子可以同时支持Artnet和sACN协议,不要在titan里面同时开启这2个协议,请2选1,否则相同的数据会通过这2种协议同时发送到盒子,不但浪费网络带宽,还做无用功,甚至因为数据叠加可能会造成无法发现的微小影响。
Madrix的设置方法:在Madrix里按键盘F4键,出现上图,点击左下角放大镜图标就可以找到盒子,然后再点击左上角的“DMX Devices”,把所有输出”On”,Madrix就会输出Artnet数据到盒子。
或者电脑运行Artnet协议测试软件Bwtest或者DMX-Workshop进行测试,需要注意一下的是:必须使用官方新版本的Bwtest/DMX-Workshop才支持最新的Artnet1.4协议,老版本Bwest不支持15bit地址域,会找不出盒子的。
盒子支持很多专业软件,其他最新版本的专业DMX软件可以浏览我们网站 http://www.AVLdiy.cn 获取到最新的patch就可以支持盒子输出了。patch的使用方法很简单,就是把我们的dll文件拷贝到控制软件的安装目录里面,不需要任何设置,连接上我们盒子,
就可以通过软件和我们盒子控制灯光了,具体方法可以看每个目录的readme的说明。
注意:不同软件有不同的线路输出数,比如grandMA2 onPC有256个域,madrix有256个域,sunlite3有50个域,daslight4、mydmx3有40个域输出,cueluxpro有70个域的输出……,我们一个盒子有8个域的硬件输出,可以通过网线让N多个盒子组合扩充输出线路,盒子有2个LAN口,通过网线可以手拉手级联盒子,不需要任何交换机或者路由器,盒子内部带交换和路由功能。
还有一些老软件只有4个域的输出,比如Martin经典的lightjockey,免费版本的M-PC,onyx等,接盒子的话,盒子会多出4个域,盒子多出的域也可以设置成相同的域,进行输出备份。
敬请注意:盒子的域设置的是哪个,对应软件里面就是哪个域的输出。即使你只有一个盒子,也可以把域设置到255,那么软件里面只需要配接灯库到255,对域255进行编程就可以输出到盒子。如果你高兴,盒子的8个域也可以设置成类似:8,127,24,111,222…一些杂乱的数,只需要软件里面对这些域编程就会对应输出到盒子里面。
Q5:如何播放脱机offline文件?
1:通过webui的图形界面在[OFFLINE PLAY]里面点点鼠标就可以进行播放。-(简单方式)
盒子可以播放的多媒体文件支持:AVI、MPG、WMV、JPG、BMP、GIF、WAV、MP3、FLAC、APE及我们专用的DMX和l3a文件,mp4文件如果采用H264/5解码的话,因太秏CPU,因此只解码音频,图像不解码。 注意一下,视频文件的图像不是外接显示器,而是通过盒子的8个输出口直接映射到灯光上面,如果布有大面积的LED灯,就可以当屏幕使用。
具体方法:脱机文件可以保存到SD卡或者U盘上,先在SD卡或者U盘建一个“light”的目录,把多媒体文件拷贝到这个目录里面,不要放到其它目录,因为webui只会搜索“light”这个目录,不会搜索其它目录,需要注意的是:盒子不支持中文文件名。SD卡和U盘可以同时使用,webui会在[OFFLINE PLAY]里面显示140个文件,左边70个是SD卡的,右边70个是U盘的,如果只单独插入SD或者U盘,那么显示的140个文件就是插入设备的,[OFFLINE PLAY]右上角会显示插入SD/USB状态。需要注意一下:因为SD和LAN1是复用,如果使用SD卡,必须在[BOX SETUP]选择[Use Sd card],如果不设置的话,SD卡读出的数据会出错。
[OFFLINE PLAY]里面可以点击文件名进行播放。播放按钮依次是:上一曲、停止、下一曲、后台播放全部曲目、暂停; 第2栏: 循环播放次数、“FOLLOW”、“GAMMA”、音量推子。 “Play All”是后台播放全部曲目,点击这个按钮后,播放器会在后台播放全部的多媒体文件,可以关闭webui不会影响播放。“FOLLOW”(跟随)打钩的意思是在webui里面播放完一曲,会自动播放下一曲。“GAMMA”只针对视频文件,打钩表示会GAMMA校正视频,对音频和DMX文件无效。注意一下:任何非后台的播放,如果关闭webui,盒子在播放完当前曲目后,会自动停止播放。
2:通过命令行运行我们的专用软件 [ lightplay -l0 -g0 -r30 “文件名.dmx” ] 进行播放。 -(高级方式)
lightplay可以带4个参数,其中播放的文件名不可以少,其它3个参数可以省略,比如可以直接输入命令行[ lightplay “文件名.avi” ]进行播放,文件名可以带绝对路经,如果连上互联网,也可以带互联网地址。参数“-l”后面可以跟播放的循环次数,l是loop的简写;“-r”后面可以跟DMX512播放的速率,这个参数只针对DMX文件,标准的DMX512速率一般是30ms/33Hz,通过改变这个值可以慢放或者快放DMX文件;“-g”后面可以跟0或者1,g是gamma的简写,0表示不gamma校正,1表示会gamma校正。视频文件映射到灯光一般都需要gamma校正,因为灯光亮度变化不是线性变化的,是呈对数变化,如果不gamma校正的话,会关不死亮度,其它文件一般不需要校正。
重点要讲一下DMX文件和l3a文件,DMX文件是通过[OFFLINE PLAY]的“Catch”捕捉到的。不管是实体控制台还是DMX软件,或者模拟器都可以通过网络连接到盒子(比如Artnet、sACN),控制台播放的灯光show数据最终会传输到盒子里面,因此可以通过webui的catch捕捉成DMX文件,这样就可以克隆控制台的整个灯光show,然后通过盒子自己播放这个DMX文件达到脱机功能。
l3a是播放列表文件,实际上是一个文本文件,可以把不同的多媒体文件名称、DMX文件名称,按自己想法和播放顺序,一条一条记录到这个l3a文件里面,然后通过命令行 “lightplay xxx.l3a”进行播放这个列表。l3a文件在linux shell里面有一个简单的生成方法,可以把全部多媒体文件通过列目录重定向到文件里面生成: “ls > demo.l3a” 这样就把当前目录的所有文件生成了demo.l3a文件。
有一些灯光show需要音乐进行同步,可是捕捉的DMX文件是纯粹的灯光数据,没有音频,该怎么办?
有一个很简单的技巧,只需要把音乐文件改成和DMX文件相同的文件名,放到相同目录就可以同时播放。比如:我们捕捉了一个叫demo.dmx的文件,这个show同步了一首叫fade.wav的歌曲,只需要把fade.wav改成demo.wav,然后和demo.dmx放到相同目录,命令行输入[ lightplay demo.dmx ],盒子就会同时播放dmx文件和wav文件,脱机一样可以做到声光同步。
最后提醒一下,如果想听到声音,别忘了把USB声卡插入到盒子的USB接口。盒子USB接口支持大部分的USB声卡,从淘宝6元的那种到我千元的美奇专业声卡都测试过。
Q6:如何捕捉DMX文件?
1:通过webui的图形界面,点击[OFFLINE PLAY]->Catch进行捕捉。-(简单方式)
先选择保存捕捉文件的一个地方,“SD卡或者USB卡”,再输入一个想保存的文件名称,不输入的话,默认是“DEMO”,“rate”是捕捉DMX512的贞率,是一个ms的时间单位,贞HZ越大,捕捉的文件就越大,一般是30ms/33Hz(1秒钟捕捉33贞),madrix默认的就是这个贞率。如果不是很理解rate意思的话,最好不要更改,用默认值就可以。按下“Catch”后,文件名会自动加上一个数字,然后保存到“SD卡或者USB”的“light”目录。捕捉完后,可以直接刷新一下,会出现在[OFFLINE]的列表里,可以点击播放看效果。不满意的话可以再次捕捉,点击“Catch”后,文件名会自动加1进行保存。
2:通过命令行运行我们的专用软件 [ catchlight -r30 “文件名.dmx” ] 进行捕捉。 -(高级方式)
catchlight可以带2个参数,其中文件名不可以少,-r参数可以省略,比如可以直接输入命令行[ catchlight demo.dmx ]进行捕捉。 默认贞率是30ms/33Hz 。
需要注意的是:灯光效果是在灯光控制台或者控制软件里面编辑的,捕捉是实时的,就是控制台现在输出的是什么灯光效果,捕捉的就是什么效果,如果控制台没有输出任何灯光效果,捕捉的就是0,注意0也会占保存空间,并不是空。
Q7:如何自己制作视频脱机文件?
盒子有一个高级功能是可以通过播放视频映射到灯光上,因此可以通过自己制作视频文件达到脱机功能。视频文件还可以添加音频,可以做到声光影同步。视频文件可以通过专业视频编辑软件进行制作,这样的软件有很多,比如AE、Vegas.. / linux的Kdenlive …
需要注意的是:盒子只有8个域的输出,可以控制1360个RGB像素,因此编辑视频文件不能大于这个像素尺寸,视频必须和实际布灯格局一样。视频是通过一行一行进行扫描的,灯的布局也需要按视频进行配灯,或者在制作视频文件时,按实际灯的布局制定视频的尺寸。
Q8:如何通过root登录到盒子?
-
- 需要注意的是:linux系统下的root操作具备一定的破坏性,如果误操作删除系统文件,可能会造成盒子无法启动,必须返厂维修,此维修并不在保修范围内。因此,在不了解linux的情况下,请尽量不要root登入盒子。
可以通过常用的SSH软件登录到盒子,常用SSH软件有:PuTTY、WinSCP、Telnet… ,运行其中一套软件,输入盒子的IP:192.168.7.1 ,用户名:root ,密码:AVLdiy123 ,就可以登录到盒子。登录成功后,就可以对盒子进行操作,比如:上传、下载文件、shell里输入命令行、编写脚本进行二次开发等等。
webui里面有一个简单的方法,不需要任何软件,通过浏览器就可以登录到盒子。 点击[ADVANCED],确认协议后,就可以登录到盒子。
注意:如果通过编写脚本进行二次开发的话,一定需要登入到盒子才能进行二次开发,而且需要了解linux的一些命令和linux基本的操作,高级一点的话,还需要了解脚本的语法和编写规则。
Q9:几个常用的工具软件
light是一个灯光控制命令行程序,可以读、写、设置每个域的DMX值,格式是 ” light [0..8] [r/w/s] [channel] [data] “ ,参数[0..8]分别表示盒子输出口U0~U7,0~7对应设备文件“/dev/light0~light7”,其中8是表示所有输出4096通道,对应设备文件“/dev/light_all” 。linux里面有一个重要概念:“一切皆文件!”,保存文本的是文本文件,保存音视频的是多媒体文件,硬件设备也是文件,你没有看错!硬件也是文件,和普通文件一样,可以打开、读、写、关闭等操作,在“/dev/”目录里面可以看到所有硬件设备。 light [r/w/s]分别是读、写、设置,“s”是批量设置,比如“light 7 s 100 120” 表示批量设置U7,从100~512通道,值是120, “s”后面跟的是从哪个通道开始,会一直到全部通道结束,不需要填结束通道,DMX512输出默认512/4096,LED输出默认是510/4080。
light也可以读取任何输出口的某个通道的DMX值,比如读取U2通道500的DMX值,可以输入: [light 2 r 500] ,屏幕会打印出读取到的U2第500通道的值。假设我们需要通过U2通道500控制一个外部设备或者播放一首歌曲或者播放脱机文件,通道的dmx的值不但可以控制dmx灯,也可以控制设备自己,外部可以是实体控制台也可以是软件或者其它网络设备,可以通过编写linux shell的脚本来实现。
#!/bin/sh
while true
do
val=light 2 r 500
if [ $val = 200 ]
then
lightplay fade.wav #play song or do something
exit
fi
sleep 2
done
看到这些代码是不是有点晕,这是高级功能,需要了解shell的语法规则才可以明白,不过不要怕它,shell语法很简单,百度一下有很多教学,shell是有套路的,核心就一句:如果U2通道500的值为200就 “lightplay fade.wav” 播放fade这首歌曲,如果为其它值,会每隔2秒检测一次,直到检测成功一次会退出。
读取灯光值还有一个专用的程序 readlight ,这个程序和 light 的区别是:light 可以读取也可以设置每个通道的值,light读取的是自己设置的值,不是外部Artnet、sACN…网络传过来的值;
readlight 只能读取dmx值,不能设置通道的值,readlight读取的是外部Artnet、sACN…等网络传过来的值,readlight可以通过外部控制台触发或者调用盒子内部功能,使用方法如下:
root@hahan:~# readlight -h
Copyright(c) by AVLdiy.cn / hahan”
usage: readlight -p1 -c100 -r20 -x -h
-p: universe port number, 0~7 is box port ‘/dev/light0~7’, 8 for ‘/dev/light_all’, default is port0
-c: which channel do you want to be read, it’s a channel address, default is 1
-r: how many channels do you want read, it’s a read count number, defaul is 1
-x: show mode, if add -x then show Hexadecimal, default show Decimal
-h: help
“-p”后面跟需要读取的输出口0~7,如果是8表示全部输出口,盒子默认port0;
“-c”通道地址1~512,需要读取哪个通道,就填那个通道的值,盒子默认是1,如果加了-p8参数,通道地址范围是:1~4096;
“-r”后面跟需要读取多少通道,盒子默认读取1个通道;
“-x”显示10进制,还是16进制,默认是10进制,加-x显示16进制,无参数值
“-h”帮助信息,-h无参数值
setbox可以看作是webui的一个命令行程序。setbox可以设置和改变盒子的参数,也可以设置灯光协议参数,还可以查看盒子的信息。setbox有一个“-o”参数,可以改变盒子的Artnet OEM值,让盒子变成不同厂家的产品,比如MA、Artistic或者Madrix产品… ,这个值可以到artnet官方网站查询到,具体使用方法看下图。
Q10:如何使用红外线遥控器?
盒子可以支持99%以上不同协议格式的遥控器,可以支持“lirc、rc-5、rc-5-sz、jvc、sony、nec、sanyo、mce_kbd、rc-6、sharp、xmp”协议,只需要通过红外线学习,把红外线代码抓出来就可以使用。
我们开发有readir、irset、irsend等多套IR程序。 readir是一套常用程序,格式为 [readir -g5000 -t1 -p nec],三个参数也可以省略, -g是gap的意思,后面跟一个时间,是一个ms时间,带参数g运行readir后,如果没有接收到红外线数据会在-g微秒后退出,默认是3000(3秒);如果g后面跟-1表示会一直等待红外线按键,接收到红外线按键后会打印出按键的16进制值,然后立马退出,如果一直没有收到红外线按键会一直等待,不会退出;
-t后面可以跟1或者0, 是test的意思,1表示进入测试学习模式,程序不会退出,除非人为按“CTRL+C”进行退出,这个主要用于学习红外线代码用,比如运行 [readir -t1] 后,按一下遥控器的键,readir会打印出键值,把这个值记录下来,我们需要用这些键值做一个配置文件,linux启动的时候会自动装载这个配置文件,以后就可以直接使用这个遥控器了。
-p后面跟的是遥控器的协议,不同遥控器厂家有不同的遥控器协议,常用的是nec和rc5协议。-p参数平常一般不使用,默认会加载全部协议,-p的作用主要是可以确认遥控器学习时具体是什么协议。 比如:假设[readir -t1]能够读到遥控器的键值, 但是[readir -p rc5]却读不到,就说明遥控器不是rc5的,可以多排除几次就能确认遥控器的协议,一般多为nec格式,自己制作配置文件需要具体的协议格式。
如何制作键值配置文件呢?
1:盒子定义了9个按键功能,其中定义了“V”和“左方向”键作为上一曲功能;“N”和“右方向”键作为下一曲功能;“上方向”键作为音量增加功能;“下方向”键作为音量减小功能;“P”键和“空格”键作为暂停功能;“Q”键作为退出功能。
2:红外线遥控器只需要做一个键值对应表,遥控器上的按键对应上9个功能就可以使用红外线遥控器。这个表在“/etc/rc_keymaps/default_ir.toml”,可以编辑这个文件,把红外线遥控器的键值一一对应修改就可以。
3:红外线遥控器的键值可以通过 [readir -t1] 学习得到,default_ir.toml文件的格式不要随便修改,只需要改 protocol = “nec” 改成自己遥控器的协议,然后相应的遥控器按键值改成自己希望对应的功能,类似下表:
[[protocols]]
name = “default_ir”
protocol = “nec”
[protocols.scancodes]
0xef00 = “KEY_UP”
0xef01 = “KEY_DOWN”
0xef02 = “KEY_Q”
0xef03 = “KEY_P”
0xef0b = “KEY_V”
0xef0f = “KEY_N”
0xef15 = “KEY_LEFT”
0xef16 = “KEY_RIGHT”
…
0xef00、0xef01、0xef02… 这些按键值是通过 [readir -t1] 学习得到的。编辑好配置文件后,需要重新启动一下盒子。启动后可以运行[irset -r]测试一下是否正确,如果会显示类似“scancode 0xef00 = KEY_UP (0x67)…”就表示设置正确了。
假设盒子U4接了一台DMX512灯,通道100是灯的🔅亮度,旁边有一台空调,空调开机的遥控器键值是0x87FE/nec格式,我的遥控器W按钮的值是0xef07,如果想通过按下W键,点亮灯的同时打开空调,可以编写脚本(#是注解,不会执行,脚本执行时会忽略#后面的内容):
#!/bin/sh
while true #一直循环下面内容
do
val=readir #读红外线遥控器值
if [ $val = 0xef07 ] #如果读到的是w按下的值(检测到W按下)
then
light 4 w 100 255 #U4通道100推到255,点亮灯
irsend -S nec:0x87fe #发送空调的红外线开机键值,相当于按下空调遥控器开机按钮
exit #退出
fi
sleep 2 #没有检测到,延迟2秒,接着继续循环
done
上面第8行有个irsend,irsend主要功能是:盒子对外发送红外线代码的作用,盒子引出了红外线发射的GPIO,但没有接红外线发射管,因此需要接集中控制系统用的红外发射线,或者自己接一个发射管(淘宝0.1元左右)。irsend可以发送不同协议格式的值,也可以发送RAW值,-s(小写)是发送RAW值,-S(大写)是发送协议格式的值。irsend有一个-r参数,会接收遥控器的RAW脉冲值,可以方便检测遥控器是否正常,运行[irsend -r]后,按遥控器按键,屏幕上一定会打印一些脉冲数据,如果没有打印,说明要么遥控器有问题,要么盒子接收有问题。如果遥控器很偏门,协议未知,也可以直接发送这些RAW值去控制设备。
上面脚本假设保存成文件名为“ir_demo.sh”,这个文件还不能运行,需要通过“chmod”命令赋予这个文件一个可执行的权限才能运行,方法:输入命令行“chmod 777 ir_demo.sh” ,现在就可以直接输入”./ir_demo.sh”运行这个脚本了。注意:linux系统不像windows,不是以后缀名来确认文件是否是运行程序,linux是通过权限来确认文件是否是运行程序。如果赋予一个记事本文件运行权限,这个文本文件一样可以运行,脚本就是这个意思,也可以理解为windows的批处理文件bat。
假设需要开机就自动运行这个“ir_demo.sh”脚本要怎么办呢?
只需要编辑“/etc/rc.local”这个启动文件,在“exit 0” 前加入我们需要启动的脚本 “/etc/ir_demo.sh”,盒子启动时就会自动运行这个启动文件里面的所有东西。
Q11:如何通过串口和盒子进行双边通讯?
方法1:外部设备通过3.3V/TTL电平的串口和盒子串口1、串口2对接进行通讯。注意一下:串口2可以接5V TTL电平。
盒子板上有3个串口,其中串口0是保留给linux调试专用串口,串口1和串口2可以外接设备进行通讯。必须注意的是:板载串口0、1、2是3.3V的TTL电平,没有接RS232电平转换芯片,不能直接接RS232串口,外部RS232串口需要去掉电平转换芯片才能接我们盒子,否则会烧毁我们盒子的主芯片,或者直接接3.3V/TTL的串口,大部分传感器模块的串口和单片机串口多为3.3V/TTL电平。
方法2:通过USB转RS232串口线接我们盒子的USB,转成RS232串口和外部设备进行通讯。
我们盒子驱动支持市面上大部分USB转232的芯片,其中有: CH341、FTDI、CP210x、pl2303等。注意一下: 盒子出厂时并没有把这些驱动安装进去,需要用户按自己串口线的芯片型号,从我们网站下载芯片的驱动进行安装,安装方法很简单,输入一条命令就可以,如果盒子连接上网络,也可以在线安装。后面会介绍盒子软件的安装和卸载方法。
如果接好了串口,可以通过我们的 [uart] 程序进行串口通讯。uart程序功能强大,是一个全功能的命令行串口调试助手,编写这个程序花了我们大量的精力才完成,有13个参数之多,不过大家不要怕,很多参数可以默认,格式如下: [uart -f -b -d -e -s -w -r -g -t -c -n -x -h], 这些参数的顺序可以随便,没有先后顺序,参数后面跟的值可以用空格隔开也可以不加空格直接跟参数的值。
“-f”后面跟的是设备文件名,比如串口1是”/dev/ttyS1″,串口2是”/dev/ttyS2″,USB转串口是”/dev/ttyUSB0″,如果不加-f参数的话,默认是串口1″/dev/ttyS1″;
“-b”是波特率,常用的有“2400、4800、9600、57600、115200、230400、460800”,不加“-b”参数,盒子默认是“57600”;
“-d”是数据宽,多为8bit,特殊设备有5、6、7位的,一般为8bit,盒子默认也是8bit;
“-e”是奇偶校验位,“O”是奇校验,“E”是偶校验,“N”是无校验,盒子默认是无校验;
“-s”是停止位,一般是1位停止位,也有2位停止位的,比如DMX512就是2位停止位,盒子默认是1位停止位;
“-w”就是通过串口写数据,后面跟的就是想发给设备的一些值,如果发送的字符里面有空格或者一些特殊符号的话,需要用双“”或者单‘’括起来;
“-r”后面跟的是需要读取串口多少个字符,读取操作会一直堵塞线程,直到读取到指定的数量才退出,一个包最大能读256个字节。如果不想堵塞可以和“-g”参数配合使用;
“-g”是时间间隔,是一个ms为单位的时间,最小100ms,最大25s,如果加这个参数表示接收到第一个字符后会启动定时,在规定的时间内,不管有没有接收到字符都会退出。默认为0ms,不延时。-g和-r配合可以很方便的对串口协议进行解析,比如假设知道协议为4个字节,通过“-r4 -g1000”读取,如果1s内读取不到,就会退出,作超时处理;
“-t”是重复发送的延时时间,是一个以ms为时间单位的时间,默认是0ms;
“-c”发送的重复次数,如果加了-t参数,每次会隔-t时间重复发送出去,默认不重复,只发一次;
“-n”是标准模式还是非标准模式输入,标准模式需要按回车,串口才会接收返回,非标准输入任何字符都会接收返回,默认是非标准模式。此参数无参数值;
“-x”表示发送和接收都是16进制值。此参数无参数值;
“-h”表示会显示信息。此参数无参数值。
例子:
1: uart -g 5000 //参数为默认:读取串口1,波特率57600 8N 1, 5000ms后,如果没有读取到任何值将退出,5s内如果读到多少字符都会打印出来
2: uart -w123456dfcddw //向默认串口1,波特率57600 8N 1, 发送字符“123456dfcddw”
3: uart -w”this is a demo” -t500 -c100 //向默认串口1,波特率57600 8N 1, 每隔500ms发送100次“this is a demo”
4: uart -w0xAA -c200 -x //向默认串口1,波特率57600 8N 1, 发送200个16进制0xAA
5: uart -f/dev/ttyUSB0 -b 115200 -d8 -eN s1 -w’0x47 0x88′ -r2 -x //向USB转串口线设置波特率115200 8N 1,同时发送十六进制“0x47 0x88”,发送后再等待设备的返回值,读取2个16进制值(假设返回2个字节)。注意一下:参数后面可以用空格隔开参数值,也可以不用,比如-b 115200用空格隔开了,-d8没有隔开,-w’0x47 0x88’因为2个字节中间有空格,需要用单‘’或者双“”括起来。
6: uart -f“/dev/ttyS2” -r7 //默认是57600 8N 1,堵塞读取串口2,读取到7个字节后会退出,并打印出7个字节,如果没有读到7个字节会一直等待,直到读满7字节才退出。
7: uart -f/dev/ttyS2 -r7 -g3000 //默认是57600 8N 1,堵塞读取串口2,如果读取到1个字节后,会启动定时,不管后面有没有读到其它值,3秒后会退出。如果1个字节都没有读到,会一直堵塞,直到至少读取到1个字节。
8: uart -r2 -n //参数为默认:读取串口1,波特率57600 8N 1。标准输入方式读取2个字符,一定要按回车,否则不管输入多少字符都不会退出,最终会以回车作为结束才会退出。
9: 通过外部串口发自定义命令调用盒子的灯光程序或者控制盒子的一些操作:
#!/bin/sh
while true #一直循环下面内容
do
val=uart -r2 -g2000 #从串口1读取2字符
case $val in
01) callplay ‘/mnt/sda1/01.dmx’ #外部发字符01,播放U盘的脱机文件“01.dmx”
;;
02) lightplay ‘/mnt/sda1/02.dmx’ & #外部发字符02,播放U盘的脱机文件“02.dmx”
;;
03) callplay ‘/mnt/sda1/fade.avi’ #外部发字符03,播放U盘的视频文件“fade.avi”,同时把灯亮度🔅调暗
light 0 w 1 127
;;
44) light 8 s 1 0 #外部串口发字符44,关闭所有灯光,同时退出脚本
exit 1 #退出脚本
;;
esac
sleep 1 #外部串口发其它值,直接忽略,延迟1秒,接着继续循环检测串口
done
上面的 callplay 和 lightplay 功能是相同的,都是播放文件用的程序,唯一的区别是: callplay会检查是否有播放程序正在运行,如果有的话,会关闭正在播放的文件,然后播放现在的新文件; lightplay不会检查是否有播放程序正在运行,如果有的话,不会关闭正在播放的文件,因此现在的文件将不会播放。
Q12:如何使用PWM?
盒子有4路PWM,其中PWM2,3和UART2复用,如果使用PWM,不能使用网口1,因为如果使用网口1,会把IO口复用成模拟信号,不是数字接口。
PWM可以干什么?PWM可以控制电机不同速度的旋转💞,比如电脑灯里面的电机就是pwm控制的;可以控制屏幕的亮度;可以控制LED灯的变化;可以控制电源大小等等…
我们针对盒子的PWM0、PWM1编写有专用驱动,同时还编写了用户程序,方便用户通过命令行控制PWM。pwm命令行程序功能也很强大,有11个参数之多,具体使用方法可以看下图英文介绍:
pwm的输出频率 = clk / 预分频 / 数据宽度 ;
预分频 = 2 ^ 分频系数 (2的n次方);
占空比 = threshold / data_width ,就是高电平占多少时间 ;
盒子的pwm时钟clk有2种,一种是100K ,另外一个是40M,可以通过-c参数更改, -c0 是100K, -c1是40M, 默认是40M ;
我们给pwm程序开发了一个人性化的参数-a, 只需要跟自己想要输出的频率,程序会自动计算pwm的参数值进行设置,不需要我们自己计算,不过因为逼近计算的值会有一定微小误差,需要注意一下。
输入如下命令:
1: pwm -v2 -w1000 -t200 -s //分频系数2(预分频=2^2=4), 数据宽1000, 输出频率 = 40000000/4/1000 = 10000Hz , 占空比 = 200/1000 = 20% ;
2: pwm -f/dev/pwm1 -a7776 -s //-a为自动设置占空比50%的方波, -f为pwm的设备名, -s 会显示信息。 命令意思:pwm1自动输出频率7776Hz 。
接上示波器,可以看到盒子pwm0和pwm1分别输出如下的pwm波:
Q13:如何使用i2c接口?
i2c是一种总线结构的接口,只需要2根线就可以通讯,每个设备有一个固定的地址,理论上一条总线可以挂接127个设备。
常用的i2c接口设备有:oled屏幕、温度感应器、湿度感应器、姿态陀螺仪、手势动作感应器、人体感应器、时钟⌚…等等,很多很多,淘宝价格便宜的不到10元,比如128×64的oled屏幕才9.9元。
linux有自带的i2c的命令行程序: i2cdetect、i2cdump、i2cset、i2cget,具体可以百度一下使用方法。当然我们盒子也编写了专用的i2c程序,会更简单方便操作i2c,具体使用方法看下面英文说明:
usage: i2c [-a address] [-r length ] [-w data] [-s show mode] [-h]
for example:
i2c -a0x68 -r7 -s1 <–mean: read 7 byte from /dev/i2c-0, address 0x68, show is mode 1
i2c -a0x68 -r2 <–mean: read 2 byte from /dev/i2c-0, address 0x68, show is default
i2c -a0x3c -w’0x34 0xff’ <–mean: write 2 byte(0x34 0xff) to /dev/i2c-0, address 0x3c
盒子可以通过i2c外接屏幕,比如常用的ssd1306/128×64像素的oled屏幕,便宜好用,不到10元。针对这个屏幕我们专门开发了一个oled程序,使用方法如下:
oled程序有14个功能参数:
“-i” 后面跟0~4,显示盒子的一些常用状态
“-x/-y” 跟显示内容的xy坐标
“-w” 后面跟显示的文本内容
“-v” 后面跟0/1,0是反显,1是正常显示,默认为正常显示
“-c” 后面跟0/1/2,显示的颜色,0是黑色(关闭),1是白色,2是反显
“-s” 字体的大小
“-f” 这个参数很有用,显示bmp文件,bmp文件必须是:单色,128×64像素
“-b” 显示模式转换的文件,模式文件可以通过PCtoLCD2002得到
“-d” 显示每个输出口前5个通道的值,后面跟0或者1,-d0表示只显示一次,-d1会一直循环显示,直到按下CTRL+C键退出
“-l” 循环交替显示盒子的常用信息,-l后面跟显示的时间,单位是秒,按CTRL+C键退出
“-n” 显示信息中不会显示盒子密码,密码会被”*”代替,这个参数必须放在第一个位值才有效,无参数值
“-t” 自动测试屏幕,无参数值
“-h” 帮助,无参数值
oled -d1 会循环显示每个输出口的前5通道的值,方便查看输出状态
Q14:如何使用GPIO?
linux系统下有一套标准的GPIO操作方法,不过很繁琐,需要先导出IO口,再设置IO口的方向,接着再进行读写,不是一般的烦。针对这个问题,我们又开发了一套GPIO专用程序,简单好用,具体使用方法如下:
gpio程序有9个功能参数,不过大家不用怕,很多参数是可以默认的,只需要了解几个常用的参数就可以:
“-n” 后面跟GPIO的管脚号,盒子有3组GPIO,差不多有70几个IO口,不过很多IO口是复用的,不能同时使用,只预留了GPIO2,GPIO3作为通用IO口;
“-m” 输入、输出模式,切换IO口的方向,后面跟字符“in”或者“out”;
“-v” IO口输出的值,后面跟0或者1,0是表示输出低电平,1表示输出高电平;
“-i” IO口输入的中断模式,有上升沿触发,下降沿触发,双边触发🛫,后面跟0~3,0是rising,1是falling,2是both,3是none,这个理解有点难的话暂时可以不用管;
“-t” 读取IO口输入时的一个轮询等待时间,ms为单位,-1的话会一直堵塞,直到读取到IO口的值才退出;
“-k” 按钮模式,无参数值,IO口接按键的话,程序会作消抖处理,按键按下会打印“down”,可以通过判断“down”字符来确定按键是否按下;
“-a” 无参数值,会一直循环读取IO口,如果不加-a的话只读取IO口一次;
“-c” 无参数值,清除上次设置的中断,单命令;
“-h” 显示帮助
这些参数大部分是输入用的,输出的话比较简单,只需要-v跟高低电平。假设GPIO2接了一个继电器,继电器是高电平接通,低电平断开,继电器接的是电动窗帘的电源,窗帘大约15s可以拉起,我们可以写一个脚本进行触发:
gpio n2 -v1 #开电源
sleep 16 #延时16秒,多延时几秒没有关系,窗帘一般都会有限位开关,打开后会限位
gpio n2 v0 #关电源
light 0 s 1 255 #打开全部灯光
lightplay /mnt/mmcblk0p1/open.wav #播放提示声音
gpio最简单的测试方法:可以把一个led灯正脚接到gpio上,短脚接到gnd上,输入 gpio -v1 ,led灯就会亮;输入 gpio -v0 ,led灯会灭。
Q15:如何使用内置效果?
盒子带内置效果发生器程序 effects ,effects功能很强大,有19个参数之多,基本效果有54种,不需要任何外部设备和软件就可以输出54种基本效果,这些内置效果可以通过改变18个参数的值,又可以组合成千上万种效果。参数有点多,不过大家不要怕,理解后可以灵活应用这些参数,effects 的19个参数没有先后顺序,可以随便写,参数和参数值之间可以加空格也可以不加空格。
effects带2种类型的参数,其中小写字母的参数需要带参数值,比如-r255 -g0 -b0 表示颜色是红色,三基色值; 大写字母的参数没有参数值,比如-C表示会生成随机颜色值。具体说明如下:
“-r” Red红颜色的值,0~255;
“-g” Green绿颜色的值,0~255;
“-b” Blue蓝颜色的值,0~255;
“-C” 随机产生不同颜色的值,没有参数值;
“-l” 总体亮度的值,0~255;
“-L” 随机产生不同亮度的值,没有参数值;
“-s” 效果跑动的速度值,0~255,不填的话,缺省值是210;
“-S” 随机产生不同速度的值,没有参数值;
“-d” LED灯像素的数量,可以填1~1360像素,不填的话,缺省值是64像素,可以理解为单台灯的像素,1360表示当一个整体看待;
“-f” 效果功能编号,0~53,0号效果是静态颜色,其它编号是变化效果,共54种效果;
“-F” 随机产生调用不同效果编号,没有参数值;
“-t” 运行效果的时间,单位是秒,如果时间到了会退出效果,不填的话,缺省是15秒;
“-e” 灯带分段,可以理解为单台灯的配接数量,这个需要和 -d 配合用;
“-p” 灯带分段之间的空格,这个空格的灯不会显示,这个需要和 -e,-d 配合用;
“-R” 效果一直运行,不会退出,没有参数值,不管 -t 的时间,退出需要按CTRL+C键,或者遥控器按Q键(对应键值KEY_Q);
“-A” 从1开始,自动循环测试每种效果,没有参数值,可以和其它参数配合改变颜色,速度,时间等;
“-M” 镜像功能,会把U0~U3的效果镜像到U4~U7,就是把 SPI-LED 的第1根线输出的效果镜像到第2根线上;
“-H” 会显示一些调试信息,没有参数值;
“-h” 显示帮助信息,没有参数值;
举几个例子:
1:假设我有10台12像素(36通道)的RGB灯组合成一个圆,如下图,如果要让这个圆自动跑1~54种效果,每个效果里面颜色、亮度都不一样,随机变化,每种效果跑20秒,应该怎么做呢?如果这样的圆有N多个,又应该怎么做呢?
第一种情况只需要输入这个命令: effects -d12 -e10 -A -C -L -t20 就可以做到这个需求; 第2种情况,只需要把 -e10 改成需要组合成这些圆的灯的总数量 N*10 就可以,比如有10个圆就需要100台灯,于是改成: -e100 。还是这个例子,如果我想让圆和圆之间空3个像素(9通道)不显示,又要怎么做呢?
只需要加上 -p3 参数就可以。
于是命题就变成这样:100台12像素的RGB灯,每10台组合成一个圆,总共10个圆,圆和圆之间空3个像素应该怎么做?
命令就变成了这样: effects -d12 -e100 -p3 -A -C -L -t20 ,输入命令后,可以端起咖啡,慢慢欣赏超cool的效果吧,保证不会让你失望。
2:如果我只想使用第10号效果,应该怎么做呢? 输入: effects -f10 -d12 -e100 -p3 ,这样第10号效果会默认运行15秒,或者可以加入 -t 参数定义运行时间,如果想一直运行呢? 加入 -R 参数就可以,命令就变成这样了:effects -f10 -d12 -e100 -p3 -R
3:如果我想把8个域当成一个整体,比如矩阵,应该怎么做呢? 只需要输入命令 effects -d1360 -A -F -H , -d1360 表示全部像素, -A 表示自动运行54种效果, -F 表示效果会随机选取,-H 表示会打印一些信息给我们看。
需要特别注意的是:
1:效果发生器程序 effects 只能生成3通道的RGB灯或者矩阵灯的效果,灯可以接DMX512的灯,也可以是WS281x的灯,但不能生成电脑灯的效果,因为不同厂家的电脑灯的通道各个不同,没有规律,因此没办法做到通用。 effects 可以认为是一个简单的命令行版本 Madrix 程序,后续会升级版本,功能会更强大,会加入更多效果,大约有200多种基础效果,请留意我们网站升级信息。
2:effects 定义了15个按键功能,如果盒子接了USB键盘或者按上面 Q10 方法设置好红外线遥控器,那么就可以通过键盘和遥控器实时控制效果。其中定义了:
“V”和“左方向”键作为上一个效果功能;
“N”和“右方向”键作为下一个效果功能;
“上方向”键作为亮度增加功能;
“下方向”键作为亮度减小功能;
“P”键和“空格”键作为颜色改变功能,每按一下,颜色会随机改变一次;
“Q”键作为退出功能;
“R”键作为红色功能;
“G”键作为绿色功能;
“B”键作为蓝色功能;
“W”键作为白色功能;
“F1”键作为速度增加功能;
“F2”键作为速度减小功能。可以通过按这些键,实时改变正在生成的效果。
3:很多效果需要背景颜色和变化颜色有一定的反差,效果才明显,如果背景颜色和变化颜色一样,将看不到效果变化,请改变其中一个的颜色值就可以看到效果变化。
4:内置效果的简单使用也可以通过 webui 的 [Lighting Test] 进行操作,按按鼠标就可以进行操作。其中 “ColorRealOut” 如果勾选的话,改变颜色时会实时输出到灯光上, “AutoPlayAll”按钮会在后台循环播放全部的效果,对应命令行“-A”参数,这时如果改变颜色、亮度、速度时,灯光效果会实时改变,其它参数会在下一个效果改变,如果在播放效果时,“ColorRealOut” 最好不要勾选,否则改变色盘颜色时,颜色会进行重叠。“Run Time”推子如果用鼠标不好精确的改变数值,可以通过按键盘的左右键进行改变。
Q16:如何使用SD卡和U盘?
linux系统的sd卡、u盘还有很多设备接入到系统都要挂载(mount)才能使用,挂载方法比较麻烦,不适合刚入门的朋友。不过大家不用怕,我们盒子做了自动挂载脚本,sd或者u盘插入盒子会自动挂载,可以直接使用。
sd卡会自动挂载到目录“/mnt/mmcblk0p1” ,U盘挂载到“/mnt/sda1”,如果有多个U盘会依次挂载到“/mnt/sda2…n” 。 这些目录就相当于windows的D盘、E盘、F盘…
需要特别注意的是: 使用SD卡就不能使用第2个网口LAN1,因为这2个设备是复用的。切换复用方式可以在webui的[BOX SETUP]->[SD or LAN1]里面切换,或者使用命令行:setbox -C SD 切换成SD卡模式, setbox -C LAN1切换成第2个网口LAN1模式。第2个网口LAN1还是比较讨厌的,管脚同时还复用了pwm、uart2,切换到LAN1后,pwm和uart2也不能使用。
Q17:如何使用USB?
盒子的USB接口不但可以接U盘,还可以接USB声卡,USB键盘,USB鼠标,USB-RS232、USB-Hub扩充USB接口等等…大部分通用的USB设备不需要驱动,部分设备需要编写驱动才能使用,像USB-RS232设备就需要专门驱动。
需要注意的是:如果要让盒子播放音乐,必须把USB声卡插入到盒子,声音是从声卡出来的。
Q18:如何多台设备级联?
盒子带有2个10M/100M自适用的网口LAN0和LAN1,这2个网口里面设置的是直通,因此可以通过网线手拉手的接N多台盒子进行级联,不再需要交换机或者路由器,盒子内部本身带交换和路由功能,盒子的LAN口的IP设置的是静态固定IP,
出厂默认的IP地址是192.168.7.1,因此级联的盒子需要改成不一样的IP才不会冲突,级联盒子的IP可以改成:192.168.7.xxx, 只要xxx不一样就都可以。
需要注意的是:因为LAN1口复用了SD/PWM/UART2,如果要级联的话,一定要把盒子切换成网口LAN1模式,否则网口LAN1是不能用的,还有LAN0没有复用任何功能,一直可以使用,所以建议平时使用LAN0是一个好习惯。
Q19:如何升级?
盒子升级很简单,通过手机、平板或者电脑浏览器的地址栏输入盒子默认IP:192.168.7.1 ,就可以打开我们的webui,在webui的[BOX SETUP]里面浏览我们的固件,按“Upgrade”确认后,盒子就会自动完成升级。
还有一种方法就是:如果盒子连接上互联网,可以通过运行我们的升级软件,盒子会自动从我们服务器下载固件,我们服务器检测盒子SN正确后,会自动完成升级,这个方法需要在线下载固件,因为固件比较大,国内网络速度快慢的不确定性,造成下载的不确定,因此不推荐使用。
需要注意的是:升级具有一定的风险性,升级期间请勿碰到或者关闭盒子电源,否则有可能造成盒子变砖,变砖并不在保修范围内,因此请特别注意。
升级时间大约需要3分钟,可以观察5个LED灯的指示看升级是否完成,升级期间红灯会闪烁,黄灯会停止闪烁,如果2个黄灯其中一个再次闪烁的话,表示升级成功,盒子已经正常启动了。
还有一点需要说明:对于一些电子爱好者,请勿线刷我们的flash,线刷盒子falsh也将视为自动放弃保修权益。盒子内部的2颗cpu是一一对应的,如果破坏其中一个的flash将不再对应,盒子的功能将全部丢失或者时不时的造成不稳定。
Q20:盒子出厂是什么状态?
盒子出厂默认状态如下:
1:盒子默认Wifi是打开的; Wifi SSID:hahan_light; 密码是:AVLdiy123 (建议修改密码或者关闭wifi)
2:盒子默认IP: 192.168.7.1; Mask: 255.255.255.0; Wifi是DHCP; LAN0、LAN1是静态固定IP 。
3:盒子出厂默认: LAN0、GPIO、UART0/1、USB可以使用, SD/PWM/UART2可以使用, LAN1不能使用, 需要使用LAN1请切换复用 。
4:盒子默认输出: DMX512输出模式; 如果需要LED SPI输出的话,请在webui里面切换。
5:Artnet默认: net全部为0; subnet全部为0; univese分别为:0、1、2、3、4、5、6、7 。
6:登录盒子默认:用户名:root; 密码: AVLdiy123 (建议修改这个密码)
Q21:如何接不同灯光设备?
盒子可以控制DMX512灯具或者DMX512的设备,还可以直接控制LED SPI的led灯条或者灯带。但DMX512和LED SPI输出不能同时使用,需要通过切换输出模式使用,切换方法可以在webui的[BOX SETUP]里面切换,只需切换一次会自动记住。
1:盒子有8个DMX512输出口,每个口是标准的512通道输出,因此可控制的总通道数是:8×512=4096通道。DMX512国际标准接线方法是:3+ 2- 1GND,盒子是按国际标准来的,也是3+ 2- 1接地,具体可以参考上图3。
盒子的8个输出口软硬件都是独立的,互不干涉,和早期Artnet不一样,每个口独享16bit地址,ID号可以改成0~65535任何的值,非常自由,可以理解为8台独立1口输出的artnet设备组合成盒子,每个口都是独立的Artnet设备。
需要注意的是:很多人认为GND是相通的,实际上为了隔离,不同DMX512输出口的信号、电源、GND是完全独立的,各个不同,因此不要想当然把不同路DMX512的GND接到一起,这是错误的接法,如果GND并一起的话,有可能会造成无法隔离或者无法控制的现象。每路独立有一个很大的好处,即使误操作接入强电,也只能烧毁接入的这路,对其它路不会有影响,其它路还可以继续使用,起到盈余的作用。
2:盒子还可以直接控制WS281x\APA\SK…及其它兼任WS281x时序的LED灯带,WS281x的时序是800K单线控制,因为LED颗粒比较密,一个512域才能跑170颗3通道RGB像素,接的灯有点少,因此盒子的SPI LED输出每一根线上跑4个域,每根线接680颗3通道RGB灯,只需要2根线就可以跑8个域,对应DMX512的U0~U7,总共可以控制1360颗3通道RGB灯。
LED-SPI口的接线是:脚1是地线,LED灯带的地线需要和盒子的地线接一起; 脚2是域0~3的输出,对应DMX512的口是U0、U1、U2、U3,盒子内部会拼接这4个域; 脚3是域4~7的输出,对应DMX512的口是U4、U5、U6、U7。
需要注意的是:盒子的第1脚是地线,需要和LED灯带的地线以及给LED灯带供电的电源地线接一起;盒子的第2、3脚分别接LED灯带的DI,注意不是DO,经常有人接错到DO上。还有盒子输出的是控制信号,不是电源,LED灯带需要自己外接电源,而且电源的地线也需要和盒子的地线接一起,LED灯带、灯带电源、盒子LED-SPI输出需要共地,如果地线不接到一起,LED灯带会出现闪烁现象。
Q22:如何检测盒子的好坏?
当你通过浏览器输入 http://192.168.7.1 ,点击[MANUAL], 能够看到这里时,基本上可以断定盒子90%是好的,接着点击上面的 [LIGHTING TEST] 打开web控制台 ,推里面的推子,或者点击里面的 “AllTo0” 和 “AllTo255” ,看接的灯有没有变化,如果灯没有变化,基本上可以确定接线问题,请检查接线是否正确,DMX512的正确接线是: 3+ 2- 1接地。
敬请注意:
因为DMX512协议是一个完整的数据链条,每个包的数据链必须完整才能构成DMX512,因此,DMX512控制不会出现某个灯或者某个通道可以控制,而其它灯或者其它通道不能控制的现象,只会出现:要么都能控制,要么都不能控制两种情况,如果中间有某个灯不能控制的话,请检查线路或者灯具是否好坏,或者检查地址码是否对应上。LED-SPI的控制也是一个道理。
Q23:如何进行二次开发?
盒子的二次开发方式至少有5种:
1:按我们网络协议格式,通过自己编写PC程序进行开发;
2:通过USB接口,接USB-232到我们盒子,通过串口通讯进行二次开发,协议可以自己定义;
3:通过外部模块、单片机接我们盒子的UART或者I2C进行二次开发,协议可以自己定义;
4:直接在盒子内部开发,不需要其他额外的东西。盒子本身就是一台电脑,只是盒子的系统是linux,不是常用的windows而已,linux shell功能强大,盒子可以方便的通过shell脚本进行二次开发,类似上面的案例一样。
5:盒子还是一台服务器,可以通过web或者ssh远程控制,达到开发目的,类似我们的webui,可以自己写前端web页面进行控制。
敬请注意:
需要提醒的是:盒子具备这样二次开发的能力和平台,但是必须客户具备这样的知识和技术储备才能完成,不是拿到盒子就可以直接实现这些功能,需要用户按自己的工程项目需求编写代码才能实现。如果用户不具备这样的技术实力,可以付费找代理公司编写。注意:二次开发作为技术输出,是需要有偿提供技术支持的,并不是免费技术支持。
Q24:如何安装和卸载软件?
安装方法: 先从我们网站下载需要的软件,软件是ipk格式,比如需要安装CH341的USB-RS232串口线的驱动,需要下载ch341驱动ipk软件包 kmod-usb-serial-ch341.ipk,然后输入命令: opkg install kmod-usb-serial-ch341.ipk 就会安装好CH341的驱动了,现在插入CH341的USB-RS232串口线到盒子,盒子就会出现设备文件”/dev/ttyUSB0″ , 就可以通过我们的命令行串口调试助手[uart]操作这个串口。
卸载方法: 输入命令 opkg remove kmod-usb-serial-ch341 就可以卸载ch341的驱动。需要注意的是:如果盒子恢复出厂设置会删除所有opkg安装的程序。
Q25:为什么浏览器输入 192.168.7.1 无法浏览盒子?
敬请注意,浏览器输入的是 http://192.168.7.1 ,而不是 https://192.168.7.1 ,多了一个s是不能浏览的,很多浏览器会自动加一个s 。
Q26:如何保修?
盒子按国家三包政策进行保修,但仅限于正常使用,如果出现以下情况将视为自动放弃保修权益:
1:撕毁盒子封条的;
2:如果不具备一定电子知识,GPIO DIP乱接造成芯片烧毁的;
3:root登录误删除系统文件的;
4:更改我们bootload,或者更改flash的;
5:误操作烧毁芯片的(比如盒子进水,误接强电等);
6:升级期间断电造成flash损坏的;
7:盒子SN校验不对的;
以上这些都会视为客户自动放弃保修权益的行为。
还有:任何软件的使用,包括二次开发都不属于保修和服务范畴。
盒子的2颗CPU主芯片外围都带保护电路,正常使用的话,不会造成烧毁的情况,除非误接高于芯片承受的电压或者直接短路才会烧毁主芯片。
Q27:如何购买?
可以到我们淘宝链接购买: https://detail.tmall.com/item.htm?id=630984870508,国外客户如果没有淘宝的话,可以通过我们代理商到: http://www.aliexpress.com 购买。
谢谢支持了。