做一个窗帘遥控器

96
cliiip
2016.03.16 22:44* 字数 2759

听到“窗帘遥控器”你一定想的是遥控家里窗帘的电动遥控器吧,但是实际上要比那个厉害的多啊!

是我们天花板上的窗帘啊!一共有四八三十二个!一定看到下面的图了,这个只是其中的一角。总之超级帅气……

wccl

下面的内容大概就是做这个遥控器的过程了,主要会按照时间序来走,所以中间会有些弯路。这篇文章本身也是想记录下这个过程。

窗帘的遥控

有了窗帘总不能用棍子去开关吧,然后是有遥控器的。有两种遥控器,一种是长长的,一种是方方的。

长长的可以控制十六个,两个按键选择要控制哪个,上面的数码管做提示,另外三个按键控制开、停、关。

ykqa

方方的据说可以直接控制全部的,但是我试了试没有成功,先不管。

ykqb

不如 Hack 一下遥控器吧

其实就是想打通遥控和网络,这样到时候想怎么弄都行,比如搭一个服务器写一个网页网页上面有图形化且使用友好的控制界面啊,谁都可以登陆上去控制。之后就可以很简单的添加早上自动全部打开、下午两点拉上,晚上再打开这样的事情,还有……啊再说脑洞就关不上了。之后大家在慢慢去想吧,其实要打通的东西也就是“理想与现实的差距”了,但是正因为有这种“差距”存在,所以努力去改变现实才有用啊,为了理想。

(这里需要说一下这个想法是小鲜肉同学提出来了!不过毕竟我是学通信的,所以中间这一段由我来先弄一下。)

这时候心里还是没底的,如果这个遥控器不好弄的话大概我上面现打的字也就白打了,祝好。

可行性分析

如上面所说,关键在于遥控器上。好在遥控器似乎是通用遥控器,所以可能会简单些。只要能知道遥控器发的是什么内容的信号,又能有可以受自己控制的发出一样频率信号的设备问题就解决了。

第一步——了解遥控器的技术细节

AC127
AC125

通过型号里面的 RF 大概知道了应该是射频的,不过还远远不够,还是按照遥控器型号去淘宝搜索,找到相关产品,看看能不能找到一些技术的细节吧。
好的,“淘宝搜索 AC127”!然后是下面的结果,似乎很不理想。。。

tbsac127

那么再加一些关键字吧,比如“遥控 AC127”,还是失败,不过看到了相关的东西!

tbsac127..

先看这个 AC114 吧,待会儿再搜一搜“窗帘遥控”、“万能窗帘遥控”之类的。

ac114
433MHz

还在这个点里找到了方方遥控器的同款:

ffykq

发现他们的频率是一样的。

淘宝店找不到更多的信息了。去百度吧,“窗帘遥控 diy”,看看先人的成果。

完全 DIY 的,没有想要的。 遥控窗帘--DIY新作 - 实用电子制作 - 中国电子DIY之家 - 最受欢迎的电子制作论坛!

小米无线开关DIY电动窗帘,求鉴理论是否可行? - 小米社区官方论坛

这个思路找不到。还是从射频的思路看看。

射频 - 维基百科,自由的百科全书

淘宝“万能 射频 遥控”

wdyjsxgs!!!

是有 433MHz 这个专门的频率的,不知道有没有东西可以读取 433MHz 频率的信号同时又可以控制发射自定的内容的设备。
此外还找到了一些关键字:“对拷”、“学习”。
去搜索一波 433MHz 设备发送的是什么信号,是靠编码还是靠频率。Google “433mhz 遥控”。然后找到了一篇这样的文章!

433Mhz模块代替433Mhz遥控器 - Powered by Discuz!

确实是靠的编码。

感觉花几块钱买一个 433MHz 模块就全部搞定了,哈哈哈。对拷遥控器之类的也就不需要了。

顺便搜到的两个网页可以用作参考:

去找一个 433MHz 的模块

普通 Arduino 版本,发射器是 3.5V ~ 12V,接收器是 5V

Risym 433M超再生高频接收模块 无线发射模块 发射板+接收器 一套-tmall.com天猫

低电压版:

H34B最小无线遥控发射模块|433M315M远距离|低功耗低电压工厂现货-淘宝网 但是这个是没有自带天线的。

或者找射频转串口模块:

串口转射频模块 315M/433Mhz 替代遥控器 串口无线发射 智能家居-淘宝网

最后我选择了一家的 5.2 包邮的 433MHz 收发模块,这样这个计划还能叫“五块钱一手遮天计划”

(以上的都是当时边弄边写的,后面的属于回忆的)

开始测试

等到模块到了之后信心满满的拿出来 Arduino,去网上找来别人写好的库,按照上面在极客工坊里面看到的方法,接上模块,准备接受遥控的信号。

可是。。。收不到东西。是什么原因呢?那个参数没弄对吗?试着调了一下似乎没有效果。

...

使用的那个库里面有一个 LineCoding(线路码):KnowHow_LineCoding · sui77/rc-switch Wiki

后来看啊看,想到上面能接收到的都是标准的芯片发出的协议,这种的遥控为了节约成本等原因有很大的可能是厂家自定的协议(后来确认了的确如此)。

试着用 Arduino 去测试接收到的遥控信号,虽然很渺茫,但是还是在杂波中找到了一些看似有规则的东西!!!可以看出图里面的很像前面看到的 LineCoding 里面的 1 3 3 1 编码。此刻感觉到了希望的存在!

1331

这时候其实是有些想放弃了,因为还有好多其他的事情要做,这个也不知道能不能弄出来,害怕弄了半天弄不出来。但是转念一想,这个应该没那么难弄的吧,且这个自己不去弄,别人没有这方面经验的去弄这个更麻烦啊。且这个弄出来还蛮有用的。所以还是继续吧。

已经不是年轻的时候可以随意折腾了。最后想了想还是老老实实花 35 块钱买一个简单的 USB 逻辑分析仪。毕竟得有个靠谱的东西啊,不然眼前全部是黑暗。有了专门的工具一定会节约很多的时间的。(事实证明这个买对了)

使用逻辑分析仪

为了使用逻辑分析仪,把乞丐 Mac 上面没用的东西删了删,又装起了 Windows 虚拟机。

看到了像样的波形,真的是激动的不行!

xydbx

采集了很多的数据,把里面的波形数据导出做分析。

dcfx

上面的数据经过处理后就得到了类似这样的数据:

10100011001101010011010111111111000000010000000000001011011101011

后来多采集了一些之后能够看出里面的一点点规律了。既然这样,下一步就开始模拟那个信号吧!

(下面顺便贴一张最后的时候采集整理出来的编码图,其实前面的知道是什么意思了,但是后面几个不知道是啥,也不想去研究了,好在量也不大,就直接全部抓包了)

bmt

Hello Curtain

选择了上面的一串编码之后按照波形里面的时间,用 Arduino 去模仿它发射相同波形的信,发射之前先用逻辑分析仪测试了下,很一样。

(这里其实还很不自信的,因为总觉得他们的波形里面可能还有其他的规则,不过转念一想,应该不至于弄的那么复杂吧,一个小遥控而已。)

结果是,把那个试发射的时候一下子就成功了!!!这种事在我调硬件的经历中都很少很少出现的。很是激动。窗帘遥控的 Hello World 就这么完成了。

去控制其他的

在这中间出现了一个小波折,就是后来再去控制其他的时候发现全部都失败了,没有一个成功的。这时候就很恼火了,怎么能这样呢?

这时候果然还是被控制变量法救了,最后发现原来他们发射的编码中前半段和后半段是不一样的。开始的时候采集的是前半段中的一组,成功了。但是后来采集的时候是采集的后面的,结果就全错了。赶快重新测之后成功了!

这样问题就差不多解决完了。

由树莓派来发射信号

首先是 「让树莓派跑起来」小记,然后是树莓派简单 GPIO 操作

搞定了这个之后我就去写树莓派控制用的脚本了。写啊写,就写出了一个能用的。(最后会附上代码地址)

这时候已经可以用命令行来控制了,可用范围扩大到了开发组。

ymlhkz

写一个页面

只是上面的还不行,想控制还是很麻烦。还是弄一个页面吧。后来自己抛砖引玉先写了个很挫的版本出来。后来就有 kok 同学给加上了 map,可用性又提高了一个等级。附上一张图:

rgnxyapikz

(URL 对应的是内网 IP,所以外人是打不开的 :D)

还有实物图:

swt

还有挺多要去完善的,慢慢来吧。

代码位置:xiachufang/FriarSand: 沙和尚,卷帘大将,控制窗帘

DIY 🛠
Web note ad 1