基于PIC32的居室智能化平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)
摘要 系統(tǒng)以PIC32單片機(jī)作為核心控制器,植入TCP/IP通信協(xié)議和文件系統(tǒng),通過WiFi模塊和無線網(wǎng)絡(luò)可實(shí)時(shí)訪問存儲(chǔ)在SD卡設(shè)備文件中的系統(tǒng)參數(shù)和傳感數(shù)據(jù),并能進(jìn)行參數(shù)的配置和數(shù)據(jù)的管理,進(jìn)而實(shí)現(xiàn)智能家居系統(tǒng)的遠(yuǎn)程監(jiān)控、管理和控制。系統(tǒng)可通過個(gè)人電腦或手機(jī)進(jìn)行訪問,具有較好的人機(jī)交互功能,方便易用,功能可擴(kuò)展性強(qiáng),且設(shè)計(jì)運(yùn)行成本低。
本文引用地址:http://2s4d.com/article/201610/307250.htm關(guān)鍵詞 PIC32;智能家居;WiFi;信息管理;數(shù)據(jù)庫
隨著人們對智能居室系統(tǒng)要求的不斷提高,智能化系統(tǒng)正向著傳感節(jié)點(diǎn)多、數(shù)據(jù)量大、控制更加復(fù)雜的方向發(fā)展。針對具有復(fù)雜節(jié)點(diǎn)網(wǎng)絡(luò)的系統(tǒng)來說,系統(tǒng)參數(shù)的配置和數(shù)據(jù)的管理顯得尤為重要。通常情況下,系統(tǒng)會(huì)配合專用服務(wù)器及數(shù)據(jù)庫實(shí)現(xiàn)遠(yuǎn)程控制和數(shù)據(jù)的管理。但對于小型的家居系統(tǒng)而言,整個(gè)系統(tǒng)的運(yùn)行需使用專用的服務(wù)器來支撐,這通常是沒必要的,由此不僅增加了系統(tǒng)的設(shè)計(jì)成本,還會(huì)使系統(tǒng)的運(yùn)行成本大幅增加,造成資源的浪費(fèi)。本文旨在通過架構(gòu)基于PIC32微控制單元(Micro Control Unit,MCU)的嵌入式服務(wù)器來實(shí)現(xiàn)更加簡潔實(shí)用的居室智能化系統(tǒng)。系統(tǒng)控制核心兼做數(shù)據(jù)服務(wù)處理器,大幅降低了系統(tǒng)的設(shè)計(jì)和運(yùn)行成本,適合于中小型智能系統(tǒng)中的參數(shù)和數(shù)據(jù)的管理。另外,系統(tǒng)還可配合云端服務(wù)器進(jìn)行使用,完成數(shù)據(jù)的同步等任務(wù),更具有實(shí)際的設(shè)計(jì)價(jià)值。
1 系統(tǒng)組成與原理
系統(tǒng)核心微處理器采用Microchip公司的PIC32MX695F512L32位單片機(jī),其內(nèi)部資源豐富,具有圖形接口、USB控制器、CAN模塊、以太網(wǎng)接口、ADC模塊等,最高工作主頻可達(dá)80 MHz,適用于智能化系統(tǒng)中,不僅方便各種傳感數(shù)據(jù)的采集,人機(jī)交互功能的實(shí)現(xiàn),也具有一定的數(shù)據(jù)處理能力。WiFi模塊選用的是該公司的 MRF24WGOMA,該模塊可通過SPI接口與PIC32 MCU進(jìn)行通信,通過該模塊使系統(tǒng)接入無線網(wǎng)絡(luò),以達(dá)到通過網(wǎng)絡(luò)對系統(tǒng)進(jìn)行訪問的目的??梢暬瘎?dòng)態(tài)Web交互界面主要采用 HTML,JavaScript,AjaX,jQHery和CSS網(wǎng)絡(luò)前端設(shè)計(jì)語言來實(shí)現(xiàn),并將相應(yīng)Web服務(wù)端文件存儲(chǔ)在SD卡中,核心處理器解析到網(wǎng)絡(luò)頁面或文件請求后,在SD卡中進(jìn)行相應(yīng)文件的查找,若文件存在,則對SD卡相應(yīng)文件進(jìn)行讀取,并將文件數(shù)據(jù)返回,以呈現(xiàn)在客戶端。若需要對系統(tǒng)進(jìn)行配置或控制,則處理器通過解析相應(yīng)的請求和參數(shù),將相應(yīng)的信息寫入文件,或直接轉(zhuǎn)化為對設(shè)備的控制信號。系統(tǒng)中數(shù)據(jù)的來源主要通過傳感器模塊進(jìn)行采集,而控制器指的是居室系統(tǒng)中的各種受控設(shè)備的控制驅(qū)動(dòng)電路。傳感器和控制器根據(jù)不同的系統(tǒng)會(huì)做出不同的調(diào)整,本文僅選擇單個(gè)節(jié)點(diǎn)用作測試。系統(tǒng)組成如圖1所示。
2 硬件平臺(tái)設(shè)計(jì)
2.1 WiFi模塊
MRF24WGOMA是符合IEEE 802.11的低功耗2.4 GHz表面貼裝模塊,含有所有相關(guān)的RF元件——晶振、帶集成MAC的旁路和無源偏置電路、基帶、RF和功率放大器,以及支持AES和TKIP(WEP、 WPA和WPA2安全性)的內(nèi)置硬件。支持802.11 b/g無線通信,最高傳輸速率可達(dá)54 Mbit·s-1。
模塊采用從動(dòng)SPI接口與微控制器連接,配合中斷,休眠,復(fù)位控制接口,完成各項(xiàng)功能控制和數(shù)據(jù)傳輸,SPI接口的同步時(shí)鐘頻率最高可達(dá)25MHz,傳輸速率可達(dá)25 Mbit·s -1。典型的連接方式如圖2所示。PIC32微控制器做主設(shè)備,MRF24WG0MA模塊作為SPI從設(shè)備。因此SPI的同步頻率有PIC32MCU控制產(chǎn)生。
為中斷信號引腳,在WiFi模塊接收到數(shù)據(jù)后,負(fù)責(zé)向主控制器發(fā)出中斷處理信號以接收數(shù)據(jù)。HIBERNATE為冬眠控制引腳,主控制器可通過該引腳控制其工作模式,使其達(dá)到最佳節(jié)能效果。
MRF24WG0MA模塊需要與Mierochip的TCP/IP軟件協(xié)議棧配合使用。該軟件協(xié)議棧集成有驅(qū)動(dòng)程序,其實(shí)現(xiàn)的API在模塊中用于命令和控制,以及管理和數(shù)據(jù)包通信。
2.2 SD卡模塊
SD數(shù)據(jù)存貯卡可分為SD和SPI兩種工作模式,SD模式是標(biāo)準(zhǔn)的默認(rèn)模式,該模式下利用SD總線進(jìn)行數(shù)據(jù)傳輸,位寬一般為4 bit,讀寫最高時(shí)鐘可達(dá)50 MHz,讀取速度能到達(dá)20 MByte·s-1以上,可充分發(fā)揮SD卡的性能。而SPI模式則是SD卡可選的第二種模式,該模式下利用SPI總線進(jìn)行數(shù)據(jù)傳輸,位寬為1 bit,時(shí)鐘最高只能到25 MHz,讀取速度通常低于3 MByte·s-1,但該模式對硬件要求較低,可將設(shè)計(jì)花費(fèi)減到最小。鑒于本次設(shè)計(jì)對SD卡的讀寫速率要求不高,并需要能較好地與WiFi模塊通信帶寬和數(shù)據(jù)的處理速度進(jìn)行配合,采用SPI模式基本可滿足設(shè)計(jì)要求,系統(tǒng)采用Miero SD Card作為數(shù)據(jù)存儲(chǔ)器,器件引腳定義及典型SPI模式應(yīng)用電路如圖3所示。
3 系統(tǒng)軟件設(shè)計(jì)
3.1 系統(tǒng)軟件架構(gòu)
系統(tǒng)軟件部分,是在Microehip公司提供的TCP/IP協(xié)議棧和應(yīng)用層Http協(xié)議基礎(chǔ)上進(jìn)行應(yīng)用程序的設(shè)計(jì)與開發(fā)的。整個(gè)系統(tǒng)架構(gòu)框圖如圖4所示,其中用戶應(yīng)用層的設(shè)計(jì)是本次設(shè)計(jì)的核心工作。
3.2 嵌入式服務(wù)器的設(shè)計(jì)
該平臺(tái)下嵌入式服務(wù)器,主要是基于PC端瀏覽器和移動(dòng)端APP進(jìn)行設(shè)計(jì)的。因此,僅采用HTTP協(xié)議即可滿足設(shè)計(jì)要求,HTTP協(xié)議是建立在TCP/IP 協(xié)議之上的應(yīng)用層協(xié)議,客戶端進(jìn)行數(shù)據(jù)發(fā)送時(shí)會(huì)對報(bào)文進(jìn)行格式化,因此只需在服務(wù)器端對報(bào)文格式進(jìn)行解析,提取相應(yīng)的控制信息和數(shù)據(jù)即可;返回?cái)?shù)據(jù)時(shí)也需要將返回的內(nèi)容格式化成HTTP協(xié)議報(bào)文格式,以便被客戶機(jī)解析。TCP/IP連接建立過程和數(shù)據(jù)收發(fā)流程如圖5所示。
首先服務(wù)器端需要進(jìn)行系統(tǒng)初始化工作,包括打開套接字,綁定端口,建立偵聽等,最后將狀態(tài)轉(zhuǎn)移到“接受連接請求”;TCP是面向連結(jié)的傳輸機(jī)制,客戶端與其套接字建立連接前需要進(jìn)行3次“握手”確認(rèn),才能通過建立連接的套接字進(jìn)行數(shù)據(jù)的收發(fā),數(shù)據(jù)格式均采用HTTP協(xié)議,在HTTP報(bào)文解析部分,通過編寫的應(yīng)用程序,將HTTP請求的參數(shù)和數(shù)據(jù)解析出來,根據(jù)實(shí)際應(yīng)用將服務(wù)器端狀態(tài)機(jī)進(jìn)行轉(zhuǎn)移,狀態(tài)機(jī)主要包括通過外設(shè)獲取信息,向I/O口發(fā)送控制信息,進(jìn)入文件系統(tǒng)讀取SD卡中的相應(yīng)文件并將數(shù)據(jù)返回,或者將提交的數(shù)據(jù)信息寫入文件或更新系統(tǒng)狀態(tài)等。套接字連接一旦建立將會(huì)一直保持,除非客戶端或服務(wù)器端主動(dòng)請求斷開,例如客戶端直接關(guān)閉應(yīng)用程序或服務(wù)器端長時(shí)間無數(shù)據(jù)請求自動(dòng)斷開。
3.3 數(shù)據(jù)管理軟件的實(shí)現(xiàn)
數(shù)據(jù)管理軟件部分是基于文件系統(tǒng)API進(jìn)行設(shè)計(jì)的。文件系統(tǒng)提供的基礎(chǔ)API主要包括open(),close();read(),write(),seek()等接口函數(shù);而所需主要數(shù)據(jù)操作函數(shù)如表1所列。
數(shù)據(jù)存儲(chǔ)文件選擇普通的文本文件基本可滿足要求,但考慮到數(shù)據(jù)的增刪查改實(shí)際操作的需要,選擇標(biāo)簽語言文件XML格式更便于應(yīng)用程序的編寫,另外當(dāng)客戶端進(jìn)行數(shù)據(jù)加載時(shí),通過MSXm12組件也能方便地直接加載數(shù)據(jù)。
考慮到人機(jī)交互的用戶體驗(yàn)以及PIC32 MCU的數(shù)據(jù)處理能力,文中將眾多運(yùn)算處理放在了前端文件中,前端文件一旦首次加載成功,便可在客戶機(jī)完成主要的人機(jī)交互操作,最終將處理后的數(shù)據(jù)通過部分提交的方式發(fā)送至服務(wù)器端,使用Ajax部分提交技術(shù)無需重載界面,提高微控制器的處理能力。另外,由于大部分人機(jī)交互的工作可放在前端通過 JavaScript腳本語言處理。因此,需提交的數(shù)據(jù)量也會(huì)大幅減小,PIC32的處理任務(wù)也會(huì)相應(yīng)減少,資源利用率也有所提高,能使系統(tǒng)達(dá)到一個(gè)比較好的運(yùn)行狀態(tài)。
在表1所列出的關(guān)鍵函數(shù)中,file_read_line()按行讀取文件內(nèi)容,多用于檢索數(shù)據(jù)。sys_config()實(shí)現(xiàn)的功能是更改指定標(biāo)簽后的設(shè)定值,主要用于進(jìn)行系統(tǒng)參數(shù)配置。rc ad_config()用于讀取配置信息,即讀取指定標(biāo)簽后的設(shè)定值,多用于系統(tǒng)參數(shù)的實(shí)時(shí)顯示和監(jiān)控。modify_flag()用于修改固定格式數(shù)據(jù)條目中的指定數(shù)據(jù),例如讀取數(shù)據(jù)條目時(shí),若該條目已被讀取過,則修改條目中相應(yīng)標(biāo)記為已讀取或修改為已被讀取的次數(shù)。 rcad_next_schedule()按順序或條件讀取固定格式數(shù)據(jù),其更多地用于管理具有時(shí)間標(biāo)記的數(shù)據(jù)。
在智能居室系統(tǒng)多以時(shí)間為控制主線,很多數(shù)據(jù)都具有時(shí)間標(biāo)記,通常需要根據(jù)時(shí)間節(jié)點(diǎn)進(jìn)行數(shù)據(jù)操作,由于日期和時(shí)間數(shù)據(jù)的特殊性,在進(jìn)行具有時(shí)間標(biāo)記的數(shù)據(jù)條目的讀寫前,進(jìn)行日期時(shí)間的計(jì)算是必須的,這在較多數(shù)據(jù)操作中均有體現(xiàn)。add_item()增加固定格式數(shù)據(jù)條目。del_line()按行刪除數(shù)據(jù),被調(diào)用時(shí)會(huì)先按照標(biāo)記如索引ID號查找該條目,然后刪除。clear_data()用于清除數(shù)據(jù)文件內(nèi)容,因?yàn)橛玫氖荴ML文件,所以實(shí)際進(jìn)行數(shù)據(jù)清除操作時(shí)應(yīng)保留文件頭。run_log()用于記錄系統(tǒng)運(yùn)行日志,設(shè)備運(yùn)行狀態(tài)的變換都會(huì)被記錄下來,這對于系統(tǒng)運(yùn)行的監(jiān)控和維護(hù)是非常必要的。通過以上基本的數(shù)據(jù)操作函數(shù),可以完成對數(shù)據(jù)的增、刪、查、改等操作,能夠滿足系統(tǒng)的設(shè)計(jì)要求。
4 系統(tǒng)測試
4.1 測試平臺(tái)
測試平臺(tái)采用Chipkit-WF32核心板與外圍設(shè)備擴(kuò)展板組成。Chipkit-WF32核心板集PIC32MX695F512L單片機(jī)、MRF24WG0MA WiFi模塊和Micro SD卡接口于一體,配合設(shè)計(jì)的用于連接各類傳感器、控制器和顯示設(shè)備的外設(shè)擴(kuò)展板構(gòu)成居室智能化系統(tǒng)硬件平臺(tái)。測試平臺(tái)硬件實(shí)物如圖6所示。
4.2 測試結(jié)果
通過系統(tǒng)配置的網(wǎng)絡(luò)參數(shù)對系統(tǒng)平臺(tái)進(jìn)行登陸訪問,系統(tǒng)參數(shù)配置以及通過傳感器(溫度)實(shí)時(shí)采集的信息實(shí)時(shí)更新到客戶機(jī)前端,通過配置界面或者控制界面也可對系統(tǒng)的配置進(jìn)行更改和外設(shè)模塊的控制。另外實(shí)時(shí)數(shù)據(jù)也可以被記錄到系統(tǒng)后臺(tái)數(shù)據(jù)文件中,可單獨(dú)或批量調(diào)出,方便查看。系統(tǒng)的所有配置,數(shù)據(jù)詳情以及控制日志等數(shù)據(jù)均進(jìn)行相應(yīng)存儲(chǔ),并可進(jìn)行基本的管理。圖7為通過PC端IE瀏覽器訪問系統(tǒng)的部分結(jié)果。
5 結(jié)束語
采用PIC32 MCU移植TCP/IP協(xié)議和FAT32文件系統(tǒng),通過WiFi網(wǎng)絡(luò)實(shí)現(xiàn)的居室智能化信息平臺(tái)可方便實(shí)現(xiàn)居室智能化系統(tǒng)本地?cái)?shù)據(jù)的管理及控制,也可通過網(wǎng)絡(luò)將數(shù)據(jù)與云端同步,并實(shí)現(xiàn)遠(yuǎn)程控制。大幅降低了智能控制類家居系統(tǒng)的設(shè)計(jì)成本和運(yùn)行成本,也在一定程度上提高了系統(tǒng)的易用性和易維護(hù)性。
評論