近段时间在家DIY咱的屌丝版智能小车(总预算小于100),想复用我家三星电视遥控器来遥控我的智能小车,本来以为很简单的事情,结果弄了几天没弄好,各种折腾,逼着我把现在市面最流行的几种红外解码协议都研究了一把,最后实在没招,把红外收下来的方波下降沿全部打出来一看,发现是三星的红外编码规则竟然是自成一家,与国内主流的NEC 1621不兼容,害人不浅啊。后面在老外的网站上才找到资料,对于三星这种非主流选择,真想骂娘,你丫的这不是没事找事吗,有标准不靠,非得不走寻常路。
这是我写好三星红外解码程序以后,通过单片机收集到的遥控码表,仅供参考:

智能小车还有几个问题没解决,暂没时间折腾,先DIY一个PC遥控器出来玩玩:
主要的想法是,通过电视遥控器遥控电脑操作,红外接收头连单片机,单片机连PC,电路图太简单,不贴了,直接上个实物图:

PC端从串口收数据,再去调控制指令。本来是想用node.js通过node-serialport扩展来读取串口,但node-serialport 依赖一堆其它库,其它库又依赖其它库,其它库又依赖其它库 ,其它库又依赖其它库 ,其它库又依赖其它库 。。。这样直接导致用npm安装半个小时下不完,话说国外npm可是飞快的,国内的孩子想干点有境界的事情真TMD伤不起啊。
后面在等npm的时间,我用vs2008自个写了一个读串口(从vcbase里抄的一个开源库),调外部命令的程序,外部控制指令通过 nircmd.exe 这个犀利哥去执行。这个程序很简单,100行代码不到,npm没下完,我的VC版本已经搞完了,读一个配置:
config.ini:
test,RM:IRCode:0x65,nircmd.exe sendkey left press
test,RM:IRCode:0x62,nircmd.exe sendkey right press
test,RM:IRCode:0x60,nircmd.exe sendkey up press
test,RM:IRCode:0x61,nircmd.exe sendkey down press
test,RM:IRCode:0x68,nircmd.exe sendkey enter press
test,RM:IRCode:0x58,nircmd.exe sendkey esc press
test,RM:IRCode:0x8C,nircmd.exe exec show "C:\Program Files (x86)\XBMC\XBMC.exe"
音量静音键 ,RM:IRCode:0x0F,nircmd.exe sendkey 0xAD press
音量调低键 ,RM:IRCode:0x0B,nircmd.exe sendkey 0xAE press
音量调高键 ,RM:IRCode:0x07,nircmd.exe sendkey 0xAF press
媒体下一曲目键 ,RM:IRCode:0x10,nircmd.exe sendkey 0xB0 press
媒体上一曲目键 ,RM:IRCode:0x12,nircmd.exe sendkey 0xB1 press
媒体停止键 ,RM:IRCode:0x46,nircmd.exe sendkey 0xB2 press
媒体播放/暂停键,RM:IRCode:0x47,nircmd.exe sendkey 0xB3 press
写完以后,试了一下,控制可用,为了增加显示效果,下了一个开源的媒体中心:XBMC,装上以后一玩,NB,比我家那5000多门的三星液晶的控制界面好太多了,可以理解为一个增强版本的电视控制系统。
XBMC的主界面(网络上找的图,我的没去截图,大概差不多,我的是中文的,这个系统操控感一流,我没仔细去找,有没有更好的家庭媒体软件)

全部搞完,享受的时候到了,躺在沙发上,通过遥控器轻轻松松在电视上用XBMC把我家电脑里的相片、电影、小视频全都过了一遍,跟操作一个真实电视机完全一样的体验,那叫一个爽啊。哈哈。
计算一下总成本:

因为是原型系统,所以在面包板上测试,如果要搞成实用型的,可以省去电源、USB转串口线,把面板板换成洞洞板,单片板用不着我这么高级的STC 12C5A60S2顶级单片机,用比较低级的那种,1块搞掂,总成本应该在10元左右,如果还要继续追求屌丝方案,可以连单片机都不用,直接把接收头经过简单处理焊在RS232口上,电源什么的都不用了,理论上2块钱内搞掂(参考老外方案:www点cesko点host.sk/girderplugin.htm)。 注:以上价格均未考虑软件成本。--俺怎么老想着软件不花钱哩?这是严重不对的,自我鄙视一下吧
|