楊琳 ,李媛 ,馮爽 ,向勝奎 ,楊雪松 ,韓婧 ,喬成芳
(1.商洛學院電子信息與電氣工程學院,陜西商洛726000;2.商洛市體育運動中心,陜西商洛726000;3.商洛學院化學工程與現代材料學院,陜西商洛726000)
隨著互聯網與物聯網技術[1]的發展,智能化產品[2]越來越深入我們的生活中。智能儀表[3]在生活中的應用非常的多。國外研究此領域較早,在此市場發布較早的產品有美國的X-10系統[4-5]功能強大,但由于其設計前提是基于國外環境和應用需求以及西方人的生活習慣設計的,并且其價格昂貴,難以被國人接受,因此,此系統在國內很少運用。智能物聯網的概念在中國起步較晚,而近幾年隨著科技的進步,智能儀表物聯網在各行各業的發展突飛猛進[6-7],無線互聯[8-11]已經深入人心,國內外對網絡化智能儀表的研究也在不斷的深入[12],STM32系列單片機[13-16]作為一款先進的芯片,廣泛應該用于各類網絡互聯平臺中。針對目前這樣的現狀,本設計主要以ARM Cortex-M3內核的STM32系列單片機為主控芯片,將實現基于Yeelink服務器的智能儀表,使用戶可以將周圍的環境信息反饋到網絡平臺上,可以服務于實用且有經濟價值的智能儀表的研發。
在STM32+W5500+Yeelink平臺中,以ARM Cortex-M3內核的STM32F103系列單片機為內核。主要由單片機最小系統、以太網W5500模塊、Yeelink物聯網平臺、熱釋電紅外人體感應傳感器、繼電器驅動電路、OLED顯示等幾部分組成。系統構架如圖1所示,實現的功能有設備參數實時采集、實時處理、實時查看等。用戶可以用手機或PC機訪問Yeelink物聯網服務器,隨時查看設備的環境參數。

圖1 系統構架圖
硬件電路設計核心處理器采用STM32F103芯片,負責采集環境溫度、濕度數據的是DHT11,同時利用OLED顯示屏來顯示圖形數據,通過控制W5500網絡模塊上傳數據到Yeelink服務器,通過引腳來控制報警器,人體紅外傳感器等外圍硬件模塊,硬件PCB圖如圖2所示,其中箭頭方向是指控制信號的流向。

圖2 硬件PCB圖
采用STM32F103ZET6單片機芯片作為主控,它負責控制整個硬件電路和程序的運行。如圖3所示,STMF103ZET6需要2個晶振,其中一個晶振常用于外部高頻使用,如上圖中的Y2,主要起到倍頻用;另一個晶振用作外部低頻晶振,如上圖中的Y1,其主要作用是系統待機使用。

圖3 主控芯片以及外圍電路
W5500與內核芯片的連接方式比較容易。W5500總線方式有三種分別是SPI、直接并行、間接并行。W5500的通信接口電路設計如圖4所示。

圖4 W5500接口電路
人體感應模塊,全稱為熱釋電紅外的傳感器模塊,它是一種可以檢測人或動物發射的紅外線而輸出電信號的傳感器,只要設置STM32對應的GPIO引腳為輸入模式,當有人靠近過時就會檢測到高電平,達到報警的功能。引腳圖如圖5所示。

圖5 OLED引腳連線圖
OLED,即有機發光二極管,正因為OLED具有自發光,其具有對比度比較高,顯示效果比一般的液晶屏好許多;此次用的是SPI接口,如圖6所示。

圖6 OLED引腳連線圖
OLED顯示采用4線串行SPI,使用4線制串行模式的接口信號線。RST引腳用來硬件復位OLED,讓其恢復默認狀態;DC引腳是命令/數據標志,用于讀與寫;SDIN引腳是數據線,不同模式下對應的信號線不同,SCLK引腳是時鐘線,只有在串行模式下,D0時鐘線為信號線,D1為數據線。
在4線串行SPI方式下,數據的長度均為8位,只有當SCLK的狀態由低電平轉變成上升沿到來時,數據才按照 D7、D6、D5…D1、D0的順序從SDIN寫進SSD1306。DC信號線為Data和Control標志位。在4線串行通信下,寫操作的時序如圖7所示。

圖7 寫操作的時序圖
OLED模塊的顯存。SSD1306將這些顯存分成8頁顯示;SSD1306的每頁包含了128個字節,這樣剛好是128*64的點陣大小。運用OLED模塊顯示漢字時,需要用到顯存,而本設計用到的顯存大小為128*64Bit,足以滿足設計要求。需要用取模軟件轉換,如液晶屏上顯示“商洛學院”字樣,取模方法如圖8所示。取模方式是共陰——列行式——逆向輸出,將生成的字模加載到程序中,根據程序設計思路,以及函數實現的功能,如圖9所示,取模結果最終在液晶屏幕上顯示出來。

圖8 軟件取模

圖9 OLED顯示效果圖
DHT11采用單總線數據格式,即使用一個IO口即可實現雙向通信,其數據包由5Byte(40Bit)組成;該傳感器采集將得到的數據為浮點型,可以將數據分為小數和整數部分,但都要經過相應處理;每次傳輸數據為40Bit,數據輸出格式是高位在前。溫濕度數據計算方式如圖10所示。DHT11將數據通過IO傳遞給單片機,運算速度在4毫秒左右,所以在進行設計時,要考慮其反應時間,防止在死區時間里讀取錯誤數據,建議時間間隔大于50 ms。

圖10 數據計算方式
圖11為溫濕度傳感器和單片機之間進行數據讀取的過程,通過主機發送信號30us的低電平信號,使傳感器的數據線的電平被拉低,然后通過程序設置開啟DATA對應引腳的中斷,通過檢測DATA引腳的電平變化是否滿足條件,設置變量并進行計數,如果在此期間DATA再次檢測到有高電平到來,記錄下此時時間為T0,當DATA再次監測到有下降沿到來時,記錄此時時間T1,通過比較T=T1-T0的值得到一次采集到的數據,依次循環進行40次,得到最終數據,然后送給單片機進行處理。
通過設置W5500的寄存器與存儲器的值,就可以實現W5500和Interent連接起來進行數據通信。W5500的程序設計部分流程如圖12所示,以太網模塊不管是作為服務器還是客戶端,通信時都是通過發送連接請求,所以在程序中也要判斷是否需要建立連接,如果判斷此次連接為有效連接,則進行接收數據,經過數據處理后再發送相應的數據,發送完成后,完成一次數據交流,需要關閉連接,然后依次循環進行。
W5500與單片機進行通信,使用SPI協議。在SPI協議中設置了不同環境下四種工作模式(0,1,2,3 四種模式);每種模式的區別是根據SCLK的電平高低和相位不同來定義的;SPI的模式0和3唯一不同在于默認狀態下,SCLK的信號電平不同;數據都是在SCLK上升沿鎖定,當數據傳輸完成時,在下降沿輸出[6]。W5500的數據幀分有三部分:地址段,用于存放接收到的數據;控制段,用于控制數據何時開始接收,何時發送;數據段,數據傳送過程中的載體。W5500實現UDP通信,UDP與TCP有許多相似之處。在使用UDP時,經常遇到數據丟失,主要原因是在沒有連接的時候自發傳送數據。
Yeelink是由青島一家互聯網公司免費開放的物聯網平臺,類似于國內的樂聯網、機智云、中國移動物聯網、傳感云等平臺一樣;需要經過相關設置便可接入用戶的設備,它是一個安全可靠的云存儲平臺,會保留用戶提交的每一條數據,并且支持多平臺接入。Yeelink的優點是將復雜的傳感器數據以簡便的方式組合到一個網絡內。Yeelink與用戶的設備連接方式簡單,云服務流程如圖13所示。

圖13 設備與Yeelink連接流程圖
通過在Yeelink平臺注冊賬號,用戶會獲得一個屬于自己專有的APIKey,它是設備和Yeelink連接的唯一通道;然后在網頁上添加設備;添加了一個溫度設備和濕度設備。如圖14所示為用戶在溫濕度設備下添加的兩個傳感器,其ID分別為407105和407113,當其上傳數據時需要知道傳感器屬于哪個設備,以及設備ID、傳感器ID。用戶所添加的溫濕度設備相關信息如圖15所示,一個設備下可以掛載多個傳感器。

圖14 在Yeelink上添加設備

圖15 設備相關信息
程序中進行設置網絡參數、MAC地址、用戶設備IP、子網掩碼、網關、DNS、Yeelink服務器IP地址、開啟DHCP的端口、連接TCP服務器的端口、數據緩沖區、設備ID、傳感器ID等等,然后在函數中進行處理。設備與Yeelink進行通訊時的程序流程圖如圖16所示。單片機通過申請發送和接收緩存,確定HTTP請求首部的格式,程序中添加數據上傳屬性,比如:采集的數據上傳到對應設備下的傳感器屬性上;數據傳輸過程中需要知道APIKey、設備ID、傳感器ID等信息;添加表單編碼格式,例如:Host:api.yeelink.net為Yeelink 的域名地址;最終程序中將HTTP首部與HTTP內容分隔開,分別處理。
調試完畢后,通過串口調試助手查看,如圖17所示。

圖17 程序運行后打印的HTTP報文格式
由串口調試助手可以知道詳細信息:設備的IP 地址:192.168.103,子網掩碼:255.255.255.0,網關 :192.168.1.1,MAC 地 址 :0X00-0X08-0XDC-0X00-0XAB-OXCD等,以及單片機發送的對應API函數,如果數據成功上傳到Yeelink,則串口會顯示HTTP OK!指令,以及上傳的溫濕度數據;如圖25所示下位機采集的溫濕度數據已經上傳到Yeelink平臺了,此時登陸網頁可以看到數據已經更新到當前時間段;也可以查看歷史數據,比如:顯示最近一天、一周、一月、一年等采集的數據,方便了解數據變化趨勢。
系統由軟件、硬件以及Yeelink平臺組成,系統上電前,需要保證該系統上的總電源開關處于關閉狀態;由于用到網絡,所以需檢查一下該系統板是否連接網線;檢查相關傳感器是否安裝良好。將程序下載進MCU,打開串口調試助手,先通過串口調試助手查看數據的運行情況是否正常,如果串口有數據從服務器返回,則說明系統采集的數據已經成功上傳云服務器,此時可以通過手機或電腦登陸Yeelink頁面,實時查看采集到的數據。來自路由器的網線,接入系統的以太網模塊,單片機通過與以太網模塊之間的通信,最終實現將采集的數據上傳至云服務器。在網頁登陸到云服務器界面,可看到相應數據,以及歷史數據,也可以通過數據曲線了解數據變化趨勢。分段采集各個節點處的電壓值、電流值、損耗等相關數據并上傳至云服務器Yeelink,當線路發生異常時,可以快速判斷出異常位置。
本系統運用搭建了STM32+W5500+Yeelink的平臺,主要由單片機最小系統、以太網W5500模塊、Yeelink物聯網平臺、熱釋電紅外人體感應傳感器、繼電器驅動電路、OLED顯示等幾部分組成。實現了遠程數據采集和遠程控制,具有安防報警功能,擺脫了傳統的設計只能在局域網內實現的限制。設計的遠程控制和遠程數據采集功能可以應用在地區糧倉的空氣質量、光照強度變化趨勢、病蟲報警處理、多點溫度檢測等領域,具有非常廣闊的應用前景。