Pages

Subscribe:

Ads 468x60px

Wednesday, July 13, 2011

Hack一栋大楼的照明系统?

(图:用一栋大楼的灯光来玩"贪吃蛇"?)
Youtube上有一段视频:两个人使用一块电路板和一台Mac来侵入一栋大楼的照明系统,然后把这栋大楼的灯光当作显示屏来玩坦克大战。

这个视频在Youtube上有超过200万的点击率,其真实性一直处于网友的巨大争议之中。本文讨论的重点是,像这样hack一栋大楼是否是可能的?如果可能,那么原理是什么?

请先看看这段1分多钟的视频:



除去无聊的争论(目前已经争论到Apple的OSX和Linux哪个更好的地步了╮( ̄▽ ̄)╭),我认为这个方案是完全可行的。下面来进行一个简单的分析:

1. 原理:
原理非常简单。如左边这个图,上半部分是一般家用的电灯开关,红色的switch按下去,线路接通,电灯就亮。

下半部分是三极管开关,常用于大型的电路开关控制,其实本质上和上半部分的图没有区别,只是一个是要用手来按开关,一个是用三极管的通断来控制电流的通断。

毫无疑问,要想控制一整个大楼的全部电灯,我们现在都用三极管电路,再说的通俗一点,就是通过电路板上的某个port发出0或者1来控制相应那盏电灯的亮和灭。

左边这个图是我用windows的画笔画的,很难看,将就看吧。

计算机或者控制电路,发出1或者0的信号(在此我们假设0代表开,1代表关),传递到电源电路的时候,不同的灯的电源就被打开或者关上。

因此如左图,收到0的灯,都是亮的;收到1的灯,就灭了。这样就可以实现视频中的某些房间亮灯,某些房间暗灯的效果。

然后计算机不断更改输出的0,1信号,那些相应的房间就会随之亮灯,灭灯,亮灯...


因为一般情况下对于一个大楼的电路控制,都应该由电脑或者电子系统完成,那么设计者应该会把所有的电灯开关的接口,都做到一起,然后再通过类似右图的cable接入电脑或者电控系统中,也就是上图中的桔黄色的“cable”。

当你知道这个cable是什么型号的时候,一切就都好办了。你可以把这个cable从原本的控制系统上拔下来,然后接到你自己的电路板里。如果我没有看错,上面那个视频里的人,也是这么做的。

2. 如何用大楼来玩贪吃蛇和坦克大战?
现在你已经明白了灯的开关原理,那么怎么来让这些房间的灯按照你的意愿开关呢?

如果你只想显示一个简单的图案,那么一块不到$0.5的集成电路芯片就能满足你的要求。

如果你想玩贪吃蛇和坦克大战,那么你需要一块左边的FPGA来自己编游戏程序,这块板子也有足够的接口让你输出信号。怎么给FPGA编程?那个需要你去修一门大学本科的400或500 level的课程。

另外插一句话,不要被视频里面那个硕大无比的电脑主板一样的电路板吓着了,真正的控制电路最多一个巴掌那么大,剩下的都是无线发收装置,只是用来操纵游戏杆的。

3.  最大的难点
尽管这个视频看起来很厉害,但在技术层面其实并不难。实际上,最大的难点就是如何获得电路控制室的钥匙,以及如何拿到电灯开关和房间位置的对应图。

在中国的话,估计把电路室管理员请出去吃一顿就可以搞定了。


后记:
我在读高中的时候,学校引入一套新的扩音器设备,即上下课的时候不再是刺耳的铃声,而是一段音乐。无奈那些音乐也是非常难听的。于是,当时正是仙剑迷的我和我的一个朋友,就打算去替换这个铃声。我的朋友刚好认识那个广播室的值班学生,他就把那个学生用问作业的方式骗出来。我则利用短暂的课间10分钟,在电脑上找到铃声文件的位置,然后用三寸盘(那时候还没有USB)替换成我事先准备好的仙剑的“雨蝶”。之后,每次下课就都是“雨蝶”了,一时间全年级的仙剑迷们都兴奋不已。

同理,这个行动最难的一部分,仍然与电路和计算机无关,而是如何把那个值班的学生引出来 :P

0 comments:

Post a Comment