|
1?引言
随着科技的不断进步,智能家居逐渐成为可能,而智能家居网络终端则是智能家居的关键。本文介绍采用RS485工业总线,设计实现了一种基于嵌入式系统的家庭智能控制器。用户可以通过短信及互联网等方式现远程无线监控,在手机和互联网相当普及的今天,为用户提供了更简单、方便的选择。同时由于该控制器RS485接口的特殊设计,外挂节点可以由原来的32个扩展到64个,解决了家用设备的布线组网以及控制等问题。
2?系统设计
从结构上看主要分为用户,控制器,和RS485总线的家用设备控制三个部分。用户通过手机短信或网络方式向控制器的GPRS模块发送命令,而控制器也通过GPRS模块向用户反馈信息或发出报警通知。从而实现了用户和控制器无线互联,实现远程控制。
3?硬件设计
硬件部分的结构框图如图1所示,控制器是整个系统的核心部分,经过串口扩展与GPRS模块相连;通过电平转换芯片提供RS485总线接口与家用设备相连接;同时还提供LCD,键盘等交互接口。控制器的主控芯片采用三星S3C44B0,使用ARM7TDMI核,工作频率在66MHz.处理器外接 4MFlash(用于存储控制器的启动代码和系统代码以及当天事件的文本日志)分配到存储器Bank0空间和4M×16的SDRAM,分配到存储器的 Bank6空间。
主机发查询请求 主机发读请求 从机准备好接收 从机处于忙碌 主/从机发送数据
本系统采用LRC帧校验的方法。LRC值由传输设备来计算并放到消息帧中,接收设备在接收消息的过程中计算LRC,并将它和接收到消息中LRC域中的值比较,如果两值不等,说明有传输错误。除了帧结构的定义以外,整个系统的通信还需要遵守下面的规则:(a)主机查询方式:由主机轮询各从机,并要求从机提交状态信息,从机不能主动发出请求。(b)当主机发出"ASK"命令后,若从机反馈"BUSY"帧,则主机启动计时和计数,超时3次,则任务执行失败。(c)主机接收到从机发回的"READY"信号后,向从机发送"GETDATA"指令,进入接收状态,同时开启超时控制。若在规定时间未接收到从机发回的数据,则计数器加1,并继续发出"GETDATA"信号。如果超时3次,则取消这次查询。(d)从机等待主机发送指令,并根据具体指令作相应操作。如果接受到的指令帧错误,则会直接丢弃该帧。
5 软件设计
5.1? RS485总线控制
基于上一部分RS485的总线协议,主从控制主要分为:轮询、查询、控制三部分。(1)轮询:主机定时对各从机进行查询,如果发现报警信息,保存后及时触发报警并反馈给用户。如果出现超时或帧错误等状态时主机放弃此次查询,并将该事件存储在主机中。(2)查询:查询的工作流程和轮询大致相同,但是只对指定的从机和指定状态进行查询。(3)控制:把控制指令发到指定从机,并要求从机反馈执行结果。
5.2? GPRS的无线数据传输
5.2.1接收和发送SMS短信
(1)编码转换:要发送中文短信就需要使用PDU模式的16-bit编码。在Linux系统中默认用GB2312保存中文字符。发送短信前,要先进行编码转换,要将GB2312转换为Unicode编码,再将Unicode编码转换为 PDU 的16-bit 编码。这里使用Linux中的iconv () 函数,该函数可以实现Linux支持的任意的两种编码之间的转换。实现的方法:首先用iconv_open(),打开一个转换句柄,指定两种转换前的编码和转换后的编码。然后用 icnov() 作转换。最后用 iconv_close()关闭句柄,释放资源。完成转换后,即可以正确的发送。
??? (2)发送:向MC35模块发送一条AT指令,得到OK响应,则表示控制器与GPRS模块通讯正常,通过"AT+CSCA="***"及AT+CSCA=0命令设置设置短信中心号码及短信格式(PDU)。然后发送 AT+CMGS = "电话号码",得到提示符号">",此时可以向MC35模块发送编辑好的PDU编码并以"CTRL+Z"结束。得到响应OK,则发送成功;如果收到 ERROR则表示发送失败,重新初始化MC35模块,发送信息。
??? (3)接收:当收到短信时,发送""AT+CMGR=X"从SIM卡读取短消息并调用短信处理程序作相应转换。
5.2.2 GPRS联网在Linux下的实现
GPRS联网是Linux的PPP协议实现的。因此在编译内核时需要增加Linux内核的PPP支持。然后根据程序中提供的配置信息,包括移动的APN*/为"CMNET",通讯协议IP,拨号号码 "*99***1#",串口设备号/dev/ttyS2,波特率9600,用户名,密码等信息配置PPP协议需要的5个脚本和配置文件:ppp-on、 ppp-off、options.gprs、dialer.gprs、pap-secrets.完成设置后,运行ppp-on,就可以进行GPRS拨号;运行ppp-off断开连接。
GPRS联网流程(控制器作为客户端):(a)当用户希望通过网络访问GPRS模块时可以通过短信方式向主机 GPRS模块发送联网命令,包括用户的IP地址和相关配置信息。(b)主机根据用户短信获得GPRS上网连接的配置信息,并生成对应的拨号脚本文和配置文件。调用ppp-on脚本进行PPP拨号。(c)判断PPPD是否拨号成功,标志是能否生成ppp0网络设备。(d)在数据传输过程中通过看门狗实时观测网络连接状态,网络掉线时,主机保存当前数据状态,重新启动GPRS模块并恢复连接。(e)结束本次任务时,用户在网上发送命令,让控制器调用ppp- off,断开连接。
5.3系统软件流程
软件流程如图2所示,系统上电启动后,首先对包括串口,LCD,键盘, GPRS模块以及网络配置文件等做相应的初始化。并检测GPRS模块和主机是否通讯正常。然后开始对从机进行轮询,发现警情时,读取并存储报警信息,启动报警器并将相应的报警信息通过拨号和短信的方式通知用户。当收到用户命令时,先判断用户的控制方式,再做出做出回应。
6? 结语
本文介绍了一种基于ARM-Linux和GPRS技术的家庭智能控制终端,文中从软、硬件两方面给出了详细的设计思路和实现方法。对家庭智能控制器系统实现中存在的主要问题提出详细的解决方案,并且在实践中证明了其可实施性。
|
|