周書友,代銀莉,莫建麟
(阿壩師范學院 電子信息與自動化學院,四川 汶川 623000)
伴隨5G網絡的正式商用[1],萬物互聯的時代正式到來。智能家居行業目前發展迅速,沖擊傳統家居行業。人們開始對起居環境有了更高追求,不只是單一的智能家電,而是將所有的家居電器連接到一起,通過先進的計算機嵌入式技術,讓它們彼此互相通信,且能隨時了解它們的情況[2-3]。
本文設計的基于STM32和μC/OS的家居智能防盜系統采用STM32作為主控制器,ZigBee大規模組網技術作為連接各個家居和傳感器的橋梁,再通過MQTT協議連接到私有云服務器,實現用戶手機APP的監視和控制。基于STM32和μC/OS的家居智能防盜系統總體設計方案如圖1所示。

圖1 基于STM32和μC/OS的家居智能防盜系統總體設計方案
該控制器基于ARMv7-M架構,包括了所有的16位Thumb指令集和一部分基本的32位Thumb-2指令集架構,支持線程模式和處理模式。它具有先進的中斷處理功能,其內部嵌套向量中斷控制器支持240條外部輸入中斷,憑借向量化中斷功能,在硬件去除判斷中斷源的軟件操作,大幅度縮短了中斷延時;工作主頻為72 MHz,ROM為512 KB,以及多個硬件外設。作為一款微控制器,其已經達到了很高水準。本設計主要使用了其3個USART串口控制無線WiFi模塊和ZigBee協調器,并通過FSMC通信接口操控LCD顯示屏[4-6]。
μC/OS于1992年發布μC/OS-I版本,到2009年發布μC/OS-Ⅲ版本,μC/OS一直在取精棄粕,推陳出新。相比前2代版本,μC/OS-Ⅲ版本進步很大[7]。μC/OS-Ⅲ對任務數量和每個優先級的任務數擴展到了無限制,理論芯片資源數夠多,就會建立多個任務,同時對任務嵌套、信號量、消息隊列等實時操作必備的功能做出更多優化。因此,采用μC/OS-Ⅲ作為本系統的網關系統可提高網關的實時性、穩定性。
ZigBee網絡也叫紫蜂網絡,是一種基于IEEE 802.15.4標準規范的媒體訪問層和物理層的低速率短距離無線上網協議。其以低速率、低功耗、低成本、低復雜度、高安全性、大規模組網等優勢在物聯網領域有著很高知名度。
由于ZigBee強大的組網及萬物互聯能力,所以本設計采用ZigBee 3.0 協議版本的TI CC2530作為傳感器數據采集上報下發的最小節點,同時采用性能更強的Silicon EFR32作為所有節點的協調器,對所有節點進行管理,同STM32網關進行數據交互。每個節點讀取掛載在其上的傳感器信息來實現環境監控[8-10]。
本系統硬件總體結構主要分為兩部分:STM32網關設計和ZigBee節點外圍硬件電路設計。其中,網關模塊由STM32開發板、EFR32 ZigBee協調器和ESP8266最小系統板構成,它們之間通過串口通信;ZigBee節點模塊核心芯片為CC2530,且外圍搭載了溫濕度傳感器、火焰傳感器、氣體傳感器等。硬件總體框圖如圖2所示。

圖2 硬件總體框圖
網關采用STM32開發板,包括3個串口、TFT液晶屏接口、豐富的外設接口,可快速搭建起網關環境。在設計中,2個串口用于交換數據,剩余的1個串口用于配置ZigBee模塊參數,使模塊具有多樣性;通過TFT觸控屏以及按鍵控制程序可設計出串口2連接ESP8266模塊、串口3連接ZigBee協調器方案[11]。STM32網關設計如圖3所示。
4.1.1 μC/OS移植后能正常工作的條件
編譯微處理器代碼的編譯器可產生重入型代碼,即一段程序可以被多任務調用而不出問題。
由于μC/OS需要定時硬件中斷來實現任務調度,因而需要一個硬件中斷定時器。在μC/OS任務調度切換時,需要任務保存數據,再切換下一個任務,一次需要足夠的棧空間來保存現場,同時也需要能夠操作CPU寄存器和棧的指令,來完成任務切換,這樣大部分的32位處理器便能運行μC/OS。
4.1.2 STM 32上對μC/OS的移植
把μC/OS-Ⅲ移植到STM32F103上,需要改動OS_CPU.H、OS_CPU_A.ASM、OS_CPU_C.C三個與內核相關的文件,然后改動CPU.H、CPU_A.ASM、CPU_CORE.C三個CPU處理相關的文件,再改動BSP包相關的定時器中斷控制器等硬件初始化代碼。μC/OS移植流程如圖4所示。

圖4 μC/OS移植流程
網關是手機APP能和每個終端傳感器通信的橋梁,其流程如圖5所示。
網關開始時初始化3個串口,并創建5個任務,其中對串口數據流任務,系統上電便開始執行,并處理ZigBee協調器和ESP8266發來的各種數據。上電之初,如果在5 s內未收到ESP8266發來的NTP時間數據,系統將啟動所有任務,并初始化系統時鐘為默認時間;如果收到ESP8266傳來的NTP時間數據,系統將會啟動所有任務,并初始化系統RTC時間為當前NTP時間。
ESP8266將STM32網關發送來的數據進行解析并封裝成JSON包,建立一個TCP客戶端,通過MQTT協議將封裝好的JSON發送給服務器,完成上傳;同時,ESP8266通過MQTT的訂閱功能,實時準備接收服務器的消息,并會以1次/2 s來發送。當收到服務器數據時,將會把收到的數據發送給網關,完成控制操作[12]。ESP8266控制流程如圖6所示。
云服務器采用阿里云ECS云服務器,其為設計中的關鍵點,能通過公網IP進行遠程訪問,意味著能夠通過它傳輸數據,這也是人們能通過手機控制終端最重要的原因。此外,借助其優秀的平臺特性,能夠保證系統不宕機,以及實時地穩定訪問。

圖5 網關執行流程

圖6 ESP8266控制流程
EMQ基于高并發的Erlang/OTP語言設計,支持百萬級的連接,提供發布和訂閱的MQTT消息服務器。服務器安裝便捷,支持Windows、Linux、MacOS和FreeBSD操作系統平臺。EMQ運行時的Dash Board如圖7所示。它將服務器的所有參數都進行了列舉,包括當前客戶端的連接數量、服務器的負載情況等。通過該可視化本地物聯網平臺,可搭建好自己的服務器端,只需手機和ESP8266訂閱服務器消息,即能輕松通信。
安卓上位機借助Android Studio,開發流程為先將APP的布局界面設計出來,然后再逐一添加功能。在本設計中,由于需要添加Smart Config配網功能,因而最終由考量決定,通過下載樂鑫官網提供的Android SDK修改,既能進行ESP8266配網,也可以將自己的功能放在該SDK中。Android上位機執行流程如圖8所示。

圖7 EMQ運行時的Dash Board

圖8 Android上位機執行流程
在程序執行之初,即同Ubuntu服務器建立TCP連接,然后通過MQTT獲取消息并發布。安卓界面設計有1個主界面和3個副界面,其中主界面包含網關終端所有的設備節點狀態,而其余3個副界面分別為下發控制指令界面、插座配置界面、WiFi入網配置界面。Android上位機界面展示如圖9所示。

圖9 Android上位機界面展示
網關是數據交換中心,因此硬件測試極為重要。測試中主要測試串口連線是否正確,對應模塊電源是否供電正常,上電時測試電源紋波是否波動異常等,通過網關發送串口數據給ESP8266,再通過ZigBee協調器來監測串口通信是否正常。
其中,ESP8266入網流程為:讀取FLASH原有WiFi配置進行連接,如果搜索不到便會進入SmartConfig流程,期間通過手機配置入網。ESP8266入網流程如圖10所示,SmartConfig如圖11所示,配網成功如圖12所示。

圖10 ESP8266入網流程

圖11 SmartConfig
手機配網流程入網成功后,即會定時發送網絡數據給網關,其中有手機端下發的指令和NTP時間信息。ESP周期下發數據如圖13所示。

圖13 ESP周期下發數據
全部上電后,手機界面顯示如圖14所示,網關狀態展示如圖15所示。圖中將節點的狀態全部進行顯示,用戶可以控制及查看家居狀況。

圖14 手機顯示界面

圖15 網關狀態展示
本文針對目前家居智能防盜系統的成本高、兼容性差等缺陷,通過對嵌入式操作系統移植方法及技術、家居防盜相關技術及實現方法、物聯網感知技術在家居防盜上的具體應用、物聯網數據傳輸技術等進行深入研究,設計基于μC/OS的STM32家居防盜系統。目前,已完成所用物聯網技術選擇、硬件選擇、程序編寫和測試等內容。
本文雖已完成所有功能,但還有一些地方存在問題,需要后續改進:目前環境較為單一,需要在實際環境中使用才能發現更多不足;設備數量不能動態擴展,需要進一步更新;數據的轉發算法還需要優化,并增強處理速度。