基于树莓派及MCS—51单片机的智能家居控制系统设计
2018-04-08陈骏耀陈芬生林铎梁珀荣林培照
陈骏耀 陈芬生 林铎 梁珀荣 林培照
摘要:本文设计了一种智能家居控制系统,该系统采用树莓派为上位机,MCS-51单片机为下位机,设置多个单片机从机用作控制模块,使用Flask做为网络服务框架,基于Python语言设计网络控制界面,用户能够在PC端或手机终端通过该界面来实现智能家居控制开关的应用功能。
关键字:树莓派;MCS-51单片机;嵌入式系统;Flask框架;智能家居
一、绪论
目前智能家居网络控制系统实现的关键技术为兼容性强的家庭主控制器和满足信息传输需要的家庭网络,主要有PC架构、单片机架构、嵌入式架构三大解决方案[1]。一般情况下,非PC系统就是我们常说的嵌入式系统,嵌入式系统的软硬件可裁剪,从而能更灵活的适应不同的应用场景;PC机架构与单片机架构在运行上都存在稳定性不高的问题[2],而嵌入式系统采用数字电路设计,结构简单,稳定性强,结合单片机的实用性与易用性,本文从照明控制与窗帘控制入手,提出了一种以嵌入式系统为主、单片机架构为辅的组合式方案来进行智能家居的网络控制。
二、系统设计
在树莓派开发板上搭载Ubuntu Mate 16.04系统,组成一个嵌入式系统控制中心,采用最新的Flask框架搭建Web服务器,用户可使用PC端或者手机终端通过无线网络登录控制页面。系统框图如下:
三、硬件环境搭建
1.树莓派与MCS-51单片机之间的数据传输
在MCS-51单片机上设置中断事件,通过检测树莓派电路板上指定I/O口的高低电平的变化来判断中断事件是否发生,从而实现两者之间的数据传输;若中断事件发生,则表明用户在网络控制平台进行的相应操作(如照明的开关)经由树莓派上的Ubuntu系统处理后,将信号进行传递,此时接收到信号的MCS-51单片机将实施对实际电路模块的控制。
2.单片机与单片机之间的通信
本文设计中共用到三个MCS-51单片机,其中一个用作主机,另外两个用作从机;主机接收来自系统控制中心的数据,并且通过nRF24L01无线模块向另外两个从机发送指令;从机接收到指令后进行对窗帘或照明的控制。nRF24L01是一款新型单片射频收发器件,可以进行一对多同通信,其工作模式有四种:收发模式、配置模式、空闲模式和关机模式,在这里我们采用了收发模式。
3.Nrf24L01之间通信调试
在发送端先读取状态寄存器,判断标志位是否置位,再清除标志位,调试时候可以先固定一端(比如接收端),调试发送端,确保发送正确后再尝試调试接收端。本文将采用shockburst模式发送接收数据,在此方式下,通讯协议如下:对发送方(配置PRIM_RX为低):发送方启动发送后,即CE拉高至少10us,发送方发送数据,发送完数据后使用通道0接收终端应答ASK信号,如果没有收到ASK,发送方将重发相同的数据包,直到收到应答信号或重发次数超过设定最大值为止。若超过最大次数,将会产生MAX—RT中断,IRQ输出低电平。若收到了ASK信号,认为发送成功,将产生TX_DS中断。对接收方(配置PRIM_RX为高):接收方启动接收后,即CE拉高至少10us,若接收到的数据通过CRC校验正确,则将数据存储在RX_FIFO中。
四、软件程序设计
采用最新的Flask框架搭建Web服务器,Flask是一个使用Python编写的轻量级Web应用框架,其WSGI工具箱采用Werkzeug,模板引擎则使用Jinjia2,Flask自带开发用服务器和debugger、集成单元测试和RESTful调度请求。本文使用Python+Flask设计出智能家居控制网页,如图3。
在同个局域网下面,用户可以使用PC端或者手机终端在地址栏输入IP+端口号登录,用户通过HTTP协议访问网页控制平台。
运行python程序后,只要有用户连接到正确的IP+端口号,在系统控制中心下还可以及时得到智能家居控制情况的反馈信息,如所访问的用户,响应时间以及网页是否正常响应等,保证系统运行的正确性。
五、结语
本文所设计的基于树莓派及MCS-51单片机的智能家居控制系统,树莓派上搭载的Ubuntu Mate 16.04作为系统运行后台,采用MCS-51单片机作为控制终端,使用NRF24L01无线模块实现各个控制终端之间的通信,方法简单有效;并且使用基于Python的开源框架Flask设计了智能家居网页控制界面,使得用户可以通过PC端或手机端通过HTTP协议访问该界面进行智能家居的控制,系统后台可以及时得到反馈信息,有效地保障了系统稳定运行。
参考文献:
[1]李鸿. 几种智能家居网络控制系统方案的分析与比较[J]. 现代电子技术, 2010, 3(314): 143-146
[2]郭福洲. 嵌入式技术在智能家居控制系统中的应用[J]. 论述, 2017, 22(11): 334-336