喬大偉 QIAO Da-wei;王丹丹 WANG Dan-dan
(山東輕工職業(yè)學(xué)院,淄博 255300)
(Shandong Vocational College of Light Industry,Zibo 255300,China)
上個(gè)世紀(jì)微軟公司提出了“Venus plans”從而引發(fā)中國智能家居概念。目前,在物聯(lián)網(wǎng)的全面發(fā)展新時(shí)期,智能家居行業(yè)具有巨大開發(fā)潛力。[1]在高等職業(yè)學(xué)校中主導(dǎo)實(shí)驗(yàn)平臺(tái)依舊是8位內(nèi)核的51類單片機(jī)。8位單片機(jī)以其結(jié)構(gòu)簡(jiǎn)單,易于理解和操作的特點(diǎn)深入人心。STM32具有運(yùn)算速度非??欤現(xiàn)LASH、RAM容量大,能操作SD卡等很多優(yōu)勢(shì)。在此,選取具有巨大開發(fā)潛力智能家居行業(yè),通過利用STM32位單片機(jī)配合編制的相關(guān)程序,實(shí)現(xiàn)智能家居的基本功能,從而實(shí)現(xiàn)一個(gè)低端實(shí)用的智能家居系統(tǒng),在整個(gè)搭建過程中講授STM32的相關(guān)知識(shí)點(diǎn),從而嘗試探索新的職教課改之路。
系統(tǒng)設(shè)計(jì)目標(biāo)和原則:本課題的設(shè)計(jì)目的是實(shí)現(xiàn)一個(gè)簡(jiǎn)單的智能家居系統(tǒng),能夠在普通家庭中得到應(yīng)用,因此在設(shè)計(jì)的時(shí)候遵循以下原則:①簡(jiǎn)單實(shí)用;②價(jià)格低廉;③穩(wěn)定耐用;④可擴(kuò)展性。文章所設(shè)計(jì)的智能家居系統(tǒng)由單片機(jī)和各種外設(shè)組成。單片機(jī)作為核心的處理芯片,通過其內(nèi)部的豐富的接口,連接外圍設(shè)備,外圍器件通過輸入信號(hào)或輸出信號(hào)與實(shí)際的控制物品相連。其架構(gòu)如圖1所示。
從控制的方式上來看,系統(tǒng)框架分為本地控制單元和遠(yuǎn)程控制單元。本地控制單元的設(shè)計(jì)思路是通過接入觸摸屏,由觸摸屏上的人機(jī)交互界面實(shí)現(xiàn);遠(yuǎn)程控制單元的設(shè)計(jì)思路可以通過架設(shè)Web服務(wù)器,遠(yuǎn)程網(wǎng)絡(luò)登錄網(wǎng)頁,來控制系統(tǒng)接入的外設(shè),也可以通過GSM模塊,由移動(dòng)終端通過短信的方式來控制。從功能上大致分為報(bào)警傳感器(溫度,濕度,火警,煤氣)、家電控制、開關(guān)控制,燈光控制,家庭安全監(jiān)控。
圖1 智能家居系統(tǒng)框架
無線照明在教學(xué)中是一個(gè)入門的很好經(jīng)典實(shí)例,雖然還沒有用到協(xié)議棧,但它具有數(shù)據(jù)發(fā)送、接收和用協(xié)議棧,而且代碼容易學(xué)習(xí),如果把這個(gè)模塊掌握了,到后面的協(xié)議棧就比較方便學(xué)習(xí)。在此需要掌握ZigBee有關(guān)內(nèi)容,ZigBee節(jié)點(diǎn)所屬類別主要分三種,分別是協(xié)調(diào)器、路由器、終端。同一網(wǎng)絡(luò)中至少需要一個(gè)協(xié)調(diào)器,也只能有1個(gè)協(xié)調(diào)器,負(fù)責(zé)各個(gè)節(jié)點(diǎn)16位地址分配(自動(dòng)分配)。理論上可以連上65536個(gè)節(jié)點(diǎn),組網(wǎng)方式千變?nèi)f化。BasicRF軟件文件中主要內(nèi)容有三部分,如圖2所示。
圖2 BasicRF軟件文件夾框架
圖3 軟件設(shè)計(jì)框架圖
講授思路簡(jiǎn)要敘述如下:
docs文件夾:主要內(nèi)容是介紹BasicRF的特點(diǎn)、結(jié)構(gòu)及使用,閱讀這個(gè)文檔就可以做Basic RF里面的實(shí)驗(yàn)了。
Ide文件夾:打開文件夾后會(huì)有三個(gè)文件夾,及一個(gè)cc2530_sw_1.eww工程,其中這個(gè)工程是三個(gè)實(shí)驗(yàn)例程工程的集合,期中包含無線點(diǎn)燈的實(shí)驗(yàn)工程。在IAR軟件環(huán)境中打開,在workspace看到IdeSettings文件夾:是在每個(gè)基礎(chǔ)實(shí)驗(yàn)的文件夾里面都會(huì)有的,它主要保存有學(xué)生自己的IAR環(huán)境里面的設(shè)置。
source文件夾:打開文件夾里面有apps文件夾和components文件夾;
Sourceapps文件夾:存放BasicRF三個(gè)實(shí)驗(yàn)的應(yīng)用實(shí)現(xiàn)的源代碼。
Sourcecomponents文件夾:包含著BasicRF的應(yīng)用程序使用不同組件的源代碼;在介紹Basic RF之前,來看看這個(gè)實(shí)驗(yàn)例程設(shè)計(jì)的大體結(jié)構(gòu),如圖3所示Basic RF例程的軟件設(shè)計(jì)框圖,Hardware layer放在最底,是實(shí)現(xiàn)數(shù)據(jù)傳輸?shù)幕A(chǔ)。Hardware Abstraction layer它提供了一種接口來訪問TIMER,GPIO,UART,ADC等。這些接口都通過相應(yīng)的函數(shù)進(jìn)行實(shí)現(xiàn)。
①確保外圍器件沒有問題。②創(chuàng)建一個(gè)basicRfCfg_t的數(shù)據(jù)結(jié)構(gòu),并初始化其中的成員。③調(diào)用basicRfInit()函數(shù)進(jìn)行協(xié)議的初始化,在basic_rf.c代碼中可以找到uint8 basicRfInit(basicRfCfg_t*pRfConfig)。
函數(shù)功能:對(duì)Basic RF的數(shù)據(jù)結(jié)構(gòu)初始化,設(shè)置模塊的傳輸通道,短地址,PAD ID。
①創(chuàng)建一個(gè)buffer,把Payload放入其中。②調(diào)用basicRfSendPacket()函數(shù)發(fā)送,并查看其返回值。pPayload指向發(fā)送緩沖區(qū)的指針length發(fā)送數(shù)據(jù)長(zhǎng)度函數(shù)功能:給目的短地址發(fā)送指定長(zhǎng)度的數(shù)據(jù),發(fā)送成功剛返回SUCCESS,失敗則返回FAILED。
①上層通過basicRfPacketIsReady()函數(shù)來檢查是否收到一個(gè)新數(shù)據(jù)包在basic_rf.c中可以找到uint8 basicRfPacketIsReady(void)函數(shù)功能:檢查模塊是否已經(jīng)可以接收下一個(gè)數(shù)據(jù),如果準(zhǔn)備好剛返回TRUE。②調(diào)用basicRfReceive()函數(shù),把收到的數(shù)據(jù)復(fù)制到buffer中。代碼可以在basic_rf.c中可以找到uint8 basicRfReceive(uint8*pRxData,uint8 len,int16*pRssi)。
第 22~23行:關(guān)閉WeBee底板的LED2,開LED1。由于WeBee設(shè)計(jì)的LED電路是低電平點(diǎn)亮的,與TI不同,更符合以前學(xué)生學(xué)習(xí)單片機(jī)的習(xí)慣,所以halLedSet()置1是使燈熄滅。第26~27行:選擇其中的一行,并把另外一行屏蔽掉;一個(gè)是實(shí)現(xiàn)發(fā)射按鍵信息的功能,另一個(gè)是接收按鍵信息并改變LED狀態(tài)的功能。
當(dāng)前在高職教育課程改革中眾多的老師和學(xué)生在共同探索一條可以終身學(xué)習(xí)之路,讓學(xué)生們學(xué)以致用,以技能培養(yǎng)為學(xué)生學(xué)習(xí)的主旨、以設(shè)計(jì)的教學(xué)項(xiàng)目作為學(xué)生學(xué)習(xí)和研究的重點(diǎn),老師重在引導(dǎo)學(xué)生,與學(xué)生一起去探索,把職業(yè)和教育融為一體,拓展職業(yè)教育的外延,向著終身教育發(fā)展。
[1]葛年明等.基于STM32的物聯(lián)網(wǎng)開發(fā)應(yīng)用系統(tǒng)設(shè)計(jì)[J].微型機(jī)與應(yīng)用,2012(17).
[2]蔣立兵.基于STM32的智能家居控制系統(tǒng)的設(shè)計(jì)與開發(fā).
[3]李文仲,段朝玉.ZigBee無線網(wǎng)絡(luò)技術(shù)入門與實(shí)戰(zhàn),2007.