陳駿耀 陳芬生 林鐸 梁珀榮 林培照
摘要:本文設計了一種智能家居控制系統,該系統采用樹莓派為上位機,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