无线家庭自动化系统

在现代家居生活中,自动化技术的应用越来越广泛。其中,X10 Industries生产的Firecracker无线控制单元,以其小巧的尺寸和便捷的安装方式,受到了许多用户的青睐。Firecracker通过一个火柴盒大小的设备,插入串行端口,无线传输命令至接收单元,该接收单元再通过家庭的AC电源线路将信号传输给所有其他X10控制模块。

系统组件

X10系统包括多种类型的模块,其中最主要的是灯光控制器和电器控制器。该系统可以支持16个家庭代码,每个家庭代码下可以有16个控制器,总共可以控制256个设备。每个单独的控制器可以通过旋转开关设置到特定的家庭和单元代码。

系统可以发送多种不同的命令,包括开、关、调暗、调亮、全灯开、全灯关和全控制器关。开和关信号是发送到特定的家庭和单元代码,这将使该控制器进入监听模式,然后它将响应调暗和调亮命令,这些命令没有提供目标。每次调暗或调亮命令大约会造成5%的差异。全灯开和全灯关命令只针对家庭代码,这将导致所有具有该家庭代码的灯光控制器(最多16个)相应地响应。最后,全控制器关命令将关闭该家庭代码下的所有灯光和电器模块。

Firecracker并不依赖常规的串行通信,而是通过RTS和DTR信号线驱动,这些信号线同时也提供电源。命令帧非常简单,仅由5个字节组成。初始化设备是通过将RTS/DTR线设置为低电平一段时间,然后再次将它们都设置为高电平,之后开始发送消息。发送位的过程包括从两条线都为高电平开始,将DTR设置为低电平表示开位,将RTS设置为低电平表示关位。在这两种情况下,必须至少延迟500微秒才能将同一线再次设置为高电平。这个过程一直持续到整个5个字节被发送出去。

家庭代码和单元代码的设置对于系统的正常工作至关重要。例如,家庭代码A对应于十六进制的0x60和0x64,分别用于控制1-8单元和9-16单元。值得注意的是,当目标控制器位于9-16单元时,家庭代码的第2位会被打开。

命令代码用于控制设备的具体操作。例如,调暗命令的十六进制代码为0x98,调亮命令的十六进制代码为0x88。全灯开命令的十六进制代码为0x90,全灯关命令的十六进制代码为0xA0,全控制器关命令的十六进制代码为0x80。

每个消息的格式包括2个头部字节、1个家庭代码、1个单元代码/功能/命令和1个尾部字节。头部字节始终为0xD5,0xAA,尾部字节始终为0xAD。

如何使用

要使用Firecracker,只需要几个函数即可实现其功能。首先,通过调用Open()函数并传入所需的COM端口字符串(例如"COM1")来打开COM端口。VC6和VS.NET的演示项目都已包含在内。

void Open(LPCSTR pszComPort); // "COM1", "COM2", etc... void Close(); // Releases the COM port void TurnOn(char cHouseCode, int nUnitCode); // Turns on a unit. House code is the letter from A thru P void TurnOff(char cHouseCode, int nUnitCode); // Turns of a unit void Dim(); // Dims the last unit turned on by about 5% void Brighten(); // Same as Dim() but brightens instead void AllLightsOn(char cHouseCode); // Turns all lights on in a house code. Up to 16 controllers void AllLightsOff(char cHouseCode); // Turns all lights off void AllUnitsOff(char cHouseCode); // Turns all light and appliance controllers off
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485