陳駿耀 陳芬生 林鐸 梁珀榮 林培照
摘要:本文設(shè)計(jì)了一種智能家居控制系統(tǒng),該系統(tǒng)采用樹(shù)莓派為上位機(jī),MCS-51單片機(jī)為下位機(jī),設(shè)置多個(gè)單片機(jī)從機(jī)用作控制模塊,使用Flask做為網(wǎng)絡(luò)服務(wù)框架,基于Python語(yǔ)言設(shè)計(jì)網(wǎng)絡(luò)控制界面,用戶能夠在PC端或手機(jī)終端通過(guò)該界面來(lái)實(shí)現(xiàn)智能家居控制開(kāi)關(guān)的應(yīng)用功能。
關(guān)鍵字:樹(shù)莓派;MCS-51單片機(jī);嵌入式系統(tǒng);Flask框架;智能家居
一、緒論
目前智能家居網(wǎng)絡(luò)控制系統(tǒng)實(shí)現(xiàn)的關(guān)鍵技術(shù)為兼容性強(qiáng)的家庭主控制器和滿足信息傳輸需要的家庭網(wǎng)絡(luò),主要有PC架構(gòu)、單片機(jī)架構(gòu)、嵌入式架構(gòu)三大解決方案[1]。一般情況下,非PC系統(tǒng)就是我們常說(shuō)的嵌入式系統(tǒng),嵌入式系統(tǒng)的軟硬件可裁剪,從而能更靈活的適應(yīng)不同的應(yīng)用場(chǎng)景;PC機(jī)架構(gòu)與單片機(jī)架構(gòu)在運(yùn)行上都存在穩(wěn)定性不高的問(wèn)題[2],而嵌入式系統(tǒng)采用數(shù)字電路設(shè)計(jì),結(jié)構(gòu)簡(jiǎn)單,穩(wěn)定性強(qiáng),結(jié)合單片機(jī)的實(shí)用性與易用性,本文從照明控制與窗簾控制入手,提出了一種以嵌入式系統(tǒng)為主、單片機(jī)架構(gòu)為輔的組合式方案來(lái)進(jìn)行智能家居的網(wǎng)絡(luò)控制。
二、系統(tǒng)設(shè)計(jì)
在樹(shù)莓派開(kāi)發(fā)板上搭載Ubuntu Mate 16.04系統(tǒng),組成一個(gè)嵌入式系統(tǒng)控制中心,采用最新的Flask框架搭建Web服務(wù)器,用戶可使用PC端或者手機(jī)終端通過(guò)無(wú)線網(wǎng)絡(luò)登錄控制頁(yè)面。系統(tǒng)框圖如下:
三、硬件環(huán)境搭建
1.樹(shù)莓派與MCS-51單片機(jī)之間的數(shù)據(jù)傳輸
在MCS-51單片機(jī)上設(shè)置中斷事件,通過(guò)檢測(cè)樹(shù)莓派電路板上指定I/O口的高低電平的變化來(lái)判斷中斷事件是否發(fā)生,從而實(shí)現(xiàn)兩者之間的數(shù)據(jù)傳輸;若中斷事件發(fā)生,則表明用戶在網(wǎng)絡(luò)控制平臺(tái)進(jìn)行的相應(yīng)操作(如照明的開(kāi)關(guān))經(jīng)由樹(shù)莓派上的Ubuntu系統(tǒng)處理后,將信號(hào)進(jìn)行傳遞,此時(shí)接收到信號(hào)的MCS-51單片機(jī)將實(shí)施對(duì)實(shí)際電路模塊的控制。
2.單片機(jī)與單片機(jī)之間的通信
本文設(shè)計(jì)中共用到三個(gè)MCS-51單片機(jī),其中一個(gè)用作主機(jī),另外兩個(gè)用作從機(jī);主機(jī)接收來(lái)自系統(tǒng)控制中心的數(shù)據(jù),并且通過(guò)nRF24L01無(wú)線模塊向另外兩個(gè)從機(jī)發(fā)送指令;從機(jī)接收到指令后進(jìn)行對(duì)窗簾或照明的控制。nRF24L01是一款新型單片射頻收發(fā)器件,可以進(jìn)行一對(duì)多同通信,其工作模式有四種:收發(fā)模式、配置模式、空閑模式和關(guān)機(jī)模式,在這里我們采用了收發(fā)模式。
3.Nrf24L01之間通信調(diào)試
在發(fā)送端先讀取狀態(tài)寄存器,判斷標(biāo)志位是否置位,再清除標(biāo)志位,調(diào)試時(shí)候可以先固定一端(比如接收端),調(diào)試發(fā)送端,確保發(fā)送正確后再嘗試調(diào)試接收端。本文將采用shockburst模式發(fā)送接收數(shù)據(jù),在此方式下,通訊協(xié)議如下:對(duì)發(fā)送方(配置PRIM_RX為低):發(fā)送方啟動(dòng)發(fā)送后,即CE拉高至少10us,發(fā)送方發(fā)送數(shù)據(jù),發(fā)送完數(shù)據(jù)后使用通道0接收終端應(yīng)答ASK信號(hào),如果沒(méi)有收到ASK,發(fā)送方將重發(fā)相同的數(shù)據(jù)包,直到收到應(yīng)答信號(hào)或重發(fā)次數(shù)超過(guò)設(shè)定最大值為止。若超過(guò)最大次數(shù),將會(huì)產(chǎn)生MAX—RT中斷,IRQ輸出低電平。若收到了ASK信號(hào),認(rèn)為發(fā)送成功,將產(chǎn)生TX_DS中斷。對(duì)接收方(配置PRIM_RX為高):接收方啟動(dòng)接收后,即CE拉高至少10us,若接收到的數(shù)據(jù)通過(guò)CRC校驗(yàn)正確,則將數(shù)據(jù)存儲(chǔ)在RX_FIFO中。
四、軟件程序設(shè)計(jì)
采用最新的Flask框架搭建Web服務(wù)器,F(xiàn)lask是一個(gè)使用Python編寫(xiě)的輕量級(jí)Web應(yīng)用框架,其WSGI工具箱采用Werkzeug,模板引擎則使用Jinjia2,F(xiàn)lask自帶開(kāi)發(fā)用服務(wù)器和debugger、集成單元測(cè)試和RESTful調(diào)度請(qǐng)求。本文使用Python+Flask設(shè)計(jì)出智能家居控制網(wǎng)頁(yè),如圖3。
在同個(gè)局域網(wǎng)下面,用戶可以使用PC端或者手機(jī)終端在地址欄輸入IP+端口號(hào)登錄,用戶通過(guò)HTTP協(xié)議訪問(wèn)網(wǎng)頁(yè)控制平臺(tái)。
運(yùn)行python程序后,只要有用戶連接到正確的IP+端口號(hào),在系統(tǒng)控制中心下還可以及時(shí)得到智能家居控制情況的反饋信息,如所訪問(wèn)的用戶,響應(yīng)時(shí)間以及網(wǎng)頁(yè)是否正常響應(yīng)等,保證系統(tǒng)運(yùn)行的正確性。
五、結(jié)語(yǔ)
本文所設(shè)計(jì)的基于樹(shù)莓派及MCS-51單片機(jī)的智能家居控制系統(tǒng),樹(shù)莓派上搭載的Ubuntu Mate 16.04作為系統(tǒng)運(yùn)行后臺(tái),采用MCS-51單片機(jī)作為控制終端,使用NRF24L01無(wú)線模塊實(shí)現(xiàn)各個(gè)控制終端之間的通信,方法簡(jiǎn)單有效;并且使用基于Python的開(kāi)源框架Flask設(shè)計(jì)了智能家居網(wǎng)頁(yè)控制界面,使得用戶可以通過(guò)PC端或手機(jī)端通過(guò)HTTP協(xié)議訪問(wèn)該界面進(jìn)行智能家居的控制,系統(tǒng)后臺(tái)可以及時(shí)得到反饋信息,有效地保障了系統(tǒng)穩(wěn)定運(yùn)行。
參考文獻(xiàn):
[1]李鴻. 幾種智能家居網(wǎng)絡(luò)控制系統(tǒng)方案的分析與比較[J]. 現(xiàn)代電子技術(shù), 2010, 3(314): 143-146
[2]郭福洲. 嵌入式技術(shù)在智能家居控制系統(tǒng)中的應(yīng)用[J]. 論述, 2017, 22(11): 334-336