喬大偉 QIAO Da-wei;王丹丹 WANG Dan-dan
(山東輕工職業學院,淄博 255300)
(Shandong Vocational College of Light Industry,Zibo 255300,China)
上個世紀微軟公司提出了“Venus plans”從而引發中國智能家居概念。目前,在物聯網的全面發展新時期,智能家居行業具有巨大開發潛力。[1]在高等職業學校中主導實驗平臺依舊是8位內核的51類單片機。8位單片機以其結構簡單,易于理解和操作的特點深入人心。STM32具有運算速度非常快,FLASH、RAM容量大,能操作SD卡等很多優勢。在此,選取具有巨大開發潛力智能家居行業,通過利用STM32位單片機配合編制的相關程序,實現智能家居的基本功能,從而實現一個低端實用的智能家居系統,在整個搭建過程中講授STM32的相關知識點,從而嘗試探索新的職教課改之路。
系統設計目標和原則:本課題的設計目的是實現一個簡單的智能家居系統,能夠在普通家庭中得到應用,因此在設計的時候遵循以下原則:①簡單實用;②價格低廉;③穩定耐用;④可擴展性。文章所設計的智能家居系統由單片機和各種外設組成。單片機作為核心的處理芯片,通過其內部的豐富的接口,連接外圍設備,外圍器件通過輸入信號或輸出信號與實際的控制物品相連。其架構如圖1所示。
從控制的方式上來看,系統框架分為本地控制單元和遠程控制單元。本地控制單元的設計思路是通過接入觸摸屏,由觸摸屏上的人機交互界面實現;遠程控制單元的設計思路可以通過架設Web服務器,遠程網絡登錄網頁,來控制系統接入的外設,也可以通過GSM模塊,由移動終端通過短信的方式來控制。從功能上大致分為報警傳感器(溫度,濕度,火警,煤氣)、家電控制、開關控制,燈光控制,家庭安全監控。

圖1 智能家居系統框架
無線照明在教學中是一個入門的很好經典實例,雖然還沒有用到協議棧,但它具有數據發送、接收和用協議棧,而且代碼容易學習,如果把這個模塊掌握了,到后面的協議棧就比較方便學習。在此需要掌握ZigBee有關內容,ZigBee節點所屬類別主要分三種,分別是協調器、路由器、終端。同一網絡中至少需要一個協調器,也只能有1個協調器,負責各個節點16位地址分配(自動分配)。理論上可以連上65536個節點,組網方式千變萬化。BasicRF軟件文件中主要內容有三部分,如圖2所示。

圖2 BasicRF軟件文件夾框架

圖3 軟件設計框架圖
講授思路簡要敘述如下:
docs文件夾:主要內容是介紹BasicRF的特點、結構及使用,閱讀這個文檔就可以做Basic RF里面的實驗了。
Ide文件夾:打開文件夾后會有三個文件夾,及一個cc2530_sw_1.eww工程,其中這個工程是三個實驗例程工程的集合,期中包含無線點燈的實驗工程。在IAR軟件環境中打開,在workspace看到IdeSettings文件夾:是在每個基礎實驗的文件夾里面都會有的,它主要保存有學生自己的IAR環境里面的設置。
source文件夾:打開文件夾里面有apps文件夾和components文件夾;
Sourceapps文件夾:存放BasicRF三個實驗的應用實現的源代碼。
Sourcecomponents文件夾:包含著BasicRF的應用程序使用不同組件的源代碼;在介紹Basic RF之前,來看看這個實驗例程設計的大體結構,如圖3所示Basic RF例程的軟件設計框圖,Hardware layer放在最底,是實現數據傳輸的基礎。Hardware Abstraction layer它提供了一種接口來訪問TIMER,GPIO,UART,ADC等。這些接口都通過相應的函數進行實現。
①確保外圍器件沒有問題。②創建一個basicRfCfg_t的數據結構,并初始化其中的成員。③調用basicRfInit()函數進行協議的初始化,在basic_rf.c代碼中可以找到uint8 basicRfInit(basicRfCfg_t*pRfConfig)。
函數功能:對Basic RF的數據結構初始化,設置模塊的傳輸通道,短地址,PAD ID。
①創建一個buffer,把Payload放入其中。②調用basicRfSendPacket()函數發送,并查看其返回值。pPayload指向發送緩沖區的指針length發送數據長度函數功能:給目的短地址發送指定長度的數據,發送成功剛返回SUCCESS,失敗則返回FAILED。
①上層通過basicRfPacketIsReady()函數來檢查是否收到一個新數據包在basic_rf.c中可以找到uint8 basicRfPacketIsReady(void)函數功能:檢查模塊是否已經可以接收下一個數據,如果準備好剛返回TRUE。②調用basicRfReceive()函數,把收到的數據復制到buffer中。代碼可以在basic_rf.c中可以找到uint8 basicRfReceive(uint8*pRxData,uint8 len,int16*pRssi)。

第 22~23行:關閉WeBee底板的LED2,開LED1。由于WeBee設計的LED電路是低電平點亮的,與TI不同,更符合以前學生學習單片機的習慣,所以halLedSet()置1是使燈熄滅。第26~27行:選擇其中的一行,并把另外一行屏蔽掉;一個是實現發射按鍵信息的功能,另一個是接收按鍵信息并改變LED狀態的功能。
當前在高職教育課程改革中眾多的老師和學生在共同探索一條可以終身學習之路,讓學生們學以致用,以技能培養為學生學習的主旨、以設計的教學項目作為學生學習和研究的重點,老師重在引導學生,與學生一起去探索,把職業和教育融為一體,拓展職業教育的外延,向著終身教育發展。
[1]葛年明等.基于STM32的物聯網開發應用系統設計[J].微型機與應用,2012(17).
[2]蔣立兵.基于STM32的智能家居控制系統的設計與開發.
[3]李文仲,段朝玉.ZigBee無線網絡技術入門與實戰,2007.