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