吳晨紅
安徽三聯(lián)學院,安徽合肥 230601
隨著現(xiàn)代科技的快速發(fā)展,多種智能設備應用于人類生活的方方面面。溫度和濕度是環(huán)境特性參數(shù)的主要組成部分,如SARS-CoV-2病毒的環(huán)境穩(wěn)定性會隨溫度和濕度而變化[1]。在醫(yī)院、運輸、化工、智能家居和航空航天等行業(yè)中,監(jiān)測和控制環(huán)境的溫濕度非常重要[2-4]。
監(jiān)測系統(tǒng)可以大大地促進社會的發(fā)展,在如今快節(jié)奏的時代具有很大的優(yōu)勢。設計高精度的系統(tǒng)更符合嵌入式系統(tǒng)發(fā)展的新趨勢。隨著嵌入式系統(tǒng)、微控制器(Microcontroller Unit,MCU)和半導體技術(shù)的高速發(fā)展和多種技術(shù)的日益成熟,使溫濕度采集系統(tǒng)的研制和設計也在不斷地發(fā)展。短距離、高精度溫濕度采集系統(tǒng)將在工業(yè)現(xiàn)場中發(fā)揮著很大的作用[5-6]。
溫濕度采集系統(tǒng)的總體框架圖如圖1所示,該系統(tǒng)由傳感器、下位機和主機組成。基于此傳感器節(jié)點硬件平臺,實現(xiàn)了采集、管理、信息融合、顯示、有線傳輸?shù)裙δ堋貪穸炔杉到y(tǒng)是利用HDC1080溫濕度傳感器與STM32F103C8T6開發(fā)板實現(xiàn)溫濕度的數(shù)據(jù)采集,由USB轉(zhuǎn)RS-232轉(zhuǎn)換器發(fā)送到電腦,用戶可進行查看和查詢。
設計硬件電路時,首先需要確定下位機的主控芯片;然后將基于HDC1080的高精度溫濕度采集系統(tǒng)的硬件電路分為多個主要電路模塊;最后設計系統(tǒng)的整體結(jié)構(gòu)。
ST公司生產(chǎn)的STM32F103C8T6有很多優(yōu)勢,例如功耗低、成本低、性能高和LQFP48 封裝體積小等特點[7-8]。其主要技術(shù)參數(shù)如表1所示。

表1 STM32F103C8T6芯片主要技術(shù)參數(shù)
最小系統(tǒng)是主控芯片能夠正常工作的前提。STM32芯片的最小系統(tǒng)由主控制器、啟動存儲器的選擇電路、下載和調(diào)試電路、時鐘電路、復位電路和供電電路6個部分組成[9]。單片機采用3.3 V供電,由供電電路把外接5 V電壓經(jīng)過電源濾波電路轉(zhuǎn)化為3.3 V[10]。
此系統(tǒng)硬件部分需要用到2片STM32F103C8T6單片機作為下位機1和下位機2的主控芯片,而主機則作為上位機使用。下位機包括供電電路、時鐘電路、STM32F103C8T6主控芯片、復位電路、LED電路、溫濕度采集模塊RS-232接口電路、按鍵電路和下載電路[10]。下位機可以向上位機傳輸數(shù)據(jù)指令,所以上位機與RS-232接口需要通過總線相連接,達到數(shù)據(jù)傳輸?shù)墓δ堋4讼到y(tǒng)硬件總體結(jié)構(gòu)設計如圖2所示。圖中3種箭頭的方向分別代表著此系統(tǒng)的溫濕度信號傳輸?shù)姆较颉⒄{(diào)試過程中的數(shù)據(jù)傳輸方向和控制信號傳輸方向,根據(jù)箭頭的指示可以清晰地看到系統(tǒng)中各模塊的數(shù)據(jù)信息的交互流程及溫濕度信號的傳輸路徑[6]。
HDC1080傳感器如圖3所示,電路連接時用3.3 V供電,SCL引腳、SDA引腳分別與STM32的PB6、PB7兩個引腳相連。
HDC1080是一款數(shù)字溫濕度傳感器,具有測量精度高、功耗低、成本低的特點,常用于空調(diào)、醫(yī)療儀器中。濕度和溫度傳感器出廠前均經(jīng)過校準[11]。HDC1080性能指標如表2所示。

表2 HDC1080性能指標
RS-232接口自美國在1962年發(fā)布后,在嵌入式系統(tǒng)中逐漸具有很高使用率,現(xiàn)在主要用于計算機與多種串口之間的近距離通信。RS-232接口是一對一的可實現(xiàn)全雙工(Full Duplex)通訊,同一時刻可完成數(shù)據(jù)的發(fā)送和接收,即可以允許數(shù)據(jù)在2個方向同時傳輸[12],數(shù)據(jù)傳輸距離為15 m。如圖4給出的RS-232接口電路,單片機STM32F103C8T6通過應串口USART1與芯片SP3232EEN相連接,把TTL電平轉(zhuǎn)化成RS-232電平。通訊用-3~-15 V的電壓表示邏輯1,用+3~+15 V的電壓表示邏輯0[13]。
根據(jù)硬件結(jié)構(gòu)完成對應功能的程序設計,最終達到系統(tǒng)設計的目的。程序設計從系統(tǒng)的總體結(jié)構(gòu)和主要程序功能進行分析介紹。
根據(jù)基于HDC1080傳感器的高精度溫濕度采集系統(tǒng)實現(xiàn)的溫濕度采集、溫濕度傳輸和數(shù)據(jù)顯示等幾個主要功能來進行程序開發(fā)。程序以芯片STM32為支持的模塊化設計,增加了程序的通用性和二次開發(fā)的可行性。程序關(guān)鍵設計,結(jié)合硬件模塊分類和作用不同可以分為3個重要部分:
(1)主程序設計模塊。主程序的功能主要是對各模塊進行功能調(diào)度,以完成系統(tǒng)的溫濕度采集、近距離信息查詢和上位機信息接收。在下位機中,主要建立時鐘、串口USART、LED、按鍵等主要模塊的函數(shù)庫,完成初始化參數(shù)設置。根據(jù)外界輸入信號,調(diào)用函數(shù)對功能流程進行推進。
(2)數(shù)據(jù)采集程序設計模塊。在下位機中,此模塊要實現(xiàn)的功能是單片機STM32F103C8T6將獲取的溫濕度保存為適合下個模塊發(fā)送的數(shù)據(jù)格式。
(3)數(shù)據(jù)傳輸程序設計模塊。在程序設計時,此部分將測試模塊保存的溫濕度數(shù)據(jù)由串口USART1經(jīng)過RS-232接口總線發(fā)送給電腦端,實現(xiàn)系統(tǒng)最終功能。
上電時,HDC1080進入低功耗睡眠模式,首先啟動I2C,然后將數(shù)據(jù)傳輸方向設為寫入,STM32接收應答信號。默認情況下,HDC1080將首先執(zhí)行溫度測量,然后進行濕度測量。HDC1080上電后等待STM32啟動I2C總線,此時HDC1080處于休眠模式,無法主動測量。初始化HDC1080程序流程圖如圖5所示。
暫存于寄存器內(nèi)溫濕度值為16位二進制數(shù)據(jù),需要通過溫度與濕度的計算公式(1)、(2)轉(zhuǎn)換為最終發(fā)送給上位機的數(shù)據(jù)格式。
RS-232模塊的程序設計部分,即溫度與濕度數(shù)據(jù)由UART1發(fā)送主機,此模塊主要是對USART1發(fā)送數(shù)據(jù)的程序設計。因為配置串口UART1,由時鐘配置可得初始化的是固件庫函數(shù)RCC_APB2PeriphClockCmd()。引腳配置中,將配置結(jié)構(gòu)體GPIO_InitTypeDefGPIO的屬性設置為復用推挽輸出,切換速率設置為50 MHz,最后使能I/O口。USART1發(fā)送函數(shù)如下,通過該函數(shù)將溫濕度數(shù)據(jù)發(fā)送到上位機。
void USART_SendData(USART_TypeDef* USARTx, uint16_t Data)
{
assert_param(IS_USART_ALL_PERIPH(USARTx));
assert_param(IS_USART_DATA(Data));
USARTx->DR=(Data & (uint16_t)0x01FF);
}
在室內(nèi)環(huán)境下,13分鐘下,每0.1分鐘采集一次數(shù)據(jù),采集溫度和濕度數(shù)據(jù)曲線如圖7所示。在前1分鐘內(nèi),溫度與濕度都有偏大的波動范圍,溫度的最大波動范圍為0.15 ℃,相對濕度的最大波動范圍為1.49%RH。已知HDC1080的溫度測量精度為±0.2 ℃,相對濕度測量精度為±2%。測試結(jié)果表明,此系統(tǒng)可穩(wěn)定且高精度地采集溫濕度數(shù)據(jù),符合系統(tǒng)的設計要求。
本文設計了一個由上位機控制下位機,實現(xiàn)實時、高精度的溫濕度數(shù)據(jù)查詢與檢測系統(tǒng)。結(jié)合硬件與程序設計過程,搭建系統(tǒng)并完成測試。測試數(shù)據(jù)表明,此系統(tǒng)可實現(xiàn)采集高精度溫濕度數(shù)據(jù)的功能,且具有一定的穩(wěn)定性。此系統(tǒng)將高精度溫濕度傳感器應用于工業(yè)監(jiān)測系統(tǒng)中,滿足了應用的需求。同時,此系統(tǒng)具有很好的兼容性和可擴展性,可應用于多種工業(yè)現(xiàn)場中,為之后搭建更為復雜的系統(tǒng)打下了良好的基礎。