基于GPRS的嵌入式智能家居终端的设计与实现
5.1RS485总线控制
基于上一部分RS485的总线协议,主从控制主要分为:轮询、查询、控制三部分。(1)轮询:主机定时对各从机进行查询,如果发现报警信息,保存后及时触发报警并反馈给用户。如果出现超时或帧错误等状态时主机放弃此次查询,并将该事件存储在主机中。(2)查询:查询的工作流程和轮询大致相同,但是只对指定的从机和指定状态进行查询。(3)控制:把控制指令发到指定从机,并要求从机反馈执行结果。
5.2GPRS的无线数据传输
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模块,发送信息[4]。(3)接收:当收到短信时,发送”“AT+CMGR=X”从SIM卡读取短消息并调用短信处理程序作相应转换。
5.2.2GPRS联网在Linux下的实现
GPRS联网是Linux的PPP协议实现的。因此在编译内核时需要增加Linux内核的PPP支持[5]。然后根据程序中提供的配置信息,包括移动的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模块和主机是否通讯正常。然后开始对从机进行轮询,发现警情时,读取并存储报警信息,启动报警器并将相应的报警信息通过拨号和短信的方式通知用户。当收到用户命令时,先判断用户的控制方式,再做出做出回应。本文引用地址://m.amcfsurvey.com/article/162617.htm
软件流程
6总结与展望
本文介绍了一种基于ARM-Linux和 GPRS技术的家庭智能控制终端,并通过RS485总线解决了家用设备的布线及控制器对设备的控制问题。文中给出了详细的系统架构方案。从软、硬件两方面给出了详细的设计思路和实现方法。整套方案对家庭智能控制器系统实现中存在的主要问题提出详细的解决方案,并且在实践中证明了其可实施性。此外,由于该控制器具备GPRS控制器的基本功能,只需在应用程序部分做相应修改,可用作其它无线远程控制设备,具有通用性和可扩展性。
评论