设计思路:
作为智能家居系统,首先要有能为客户提供各种服务的终端设备,比如用于采集空气质量数据的二氧化碳传感器/煤气浓度传感器(防煤气溢出中毒)/PM2.5传感器等,还有能够控制照明设备通电/断电/改变照明亮度/改变灯光颜色的智能开关设备,以及控制窗帘自动收放的马达电机等等。这些服务用户的终端设备分为控制模块和任务执行模块,其中控制模块用于接受用户指令一般耗电较少,任务执行模块负责具体的任务执行一般耗电较大。为了尽可能减少家里面供电线路的布线,我们只对任务执行模块中耗电较大的部分进行供电线路布线,对于控制模块我们使用锂电池供电,并使用低功耗的Zigbee射频芯片作为控制模块的主控芯片。
说完了智能家居里面服务用户的终端设备,下一个问题就是这些终端设备如何与用户通信。最起码我们必须考虑到两种场景,其一是用户在家里时自由的控制家里面的各种终端设备为自己提供服务,其二是用户离家远在千里之外时可以自由的控制家里面的各种终端设备获取自己想要的数据或提供某些服务,为了满足这两种场景,我们的终端设备需要接入Internet互联网,那么Zigbee如何联网就是我们该考虑的问题。
首先,我们采用RT5350或MT7620作为家庭网关的主控芯片,这是一款路由器芯片,当然你也可以采用ARM作为主控芯片,然后ARM芯片引出usb或pci管脚连接无线网卡如rt3080,为了简述方便,下文我们就统一用MT7620作为家庭网关的主控芯片。MT7620芯片引出串口管脚,该串口管脚与Zigbee相连(此处简称master_Zigbee),这样无论你在家里还是远在千里之外,都可以使用手机App或其他能接入Internet的方式与家里的MT7620通信,MT7620收到你的指令后通过串口将指令数据发给master_Zigbee,然后mater_Zigbee再与各终端设备的Zigbee进行通信传达指令。
最后,总结一下我们需要完成的工作:
1、制定智能家居系统私有通信协议,主要是通信报文的包头、命令字段、报文数据长度字段、报文数据字段及CRC校验等,需要详细定义各命令字段的含义和对应数据字段的含义,定义完毕后最好使用EXCEL表格汇总整理方便编程时查阅,且在制定协议时要注意考虑可拓展性和向下兼容性,方便后面增加修改协议;
2、实现MT7620侧应用程序,该程序一方面将网络侧发来的数据解析并按照制定的私有通信协议打包报文转发给master_Zigbee,另一方面负责接收master_Zigbee通过串口发来的数据并解析后重新打包报文转发到网络侧,该应用程序需重点实现通信报文的收发、解析、容错、重传以及可拓展性和良好的向下兼容性;
3、实现master_Zigbee侧应用程序,该应用程序主要负责报文转发,将从MT7620接收到的报文转发给各终端设备的Zigbee模块以及将各终端设备发来的报文数据转发给MT7620家庭网关;
4、实现各终端设备Zigbee侧应用程序,该应用程序主要负责解析接收到的报文并根据报文命令字控制终端设备,如采集传感器数据或产生PWM方波控制马达电机。
5、MT7620主控芯片使用开源路由操作系统openWRT,可根据需要剪裁定制openWRT固件如添加应用程序开机自启动等。