吳亮亮,曹江濤
(1.廈門南洋職業(yè)學院航空機電學院,廈門361102;2.北京高偉達鉭云科技有限公司云運營服務部,北京100000)
單片機開發(fā)設計電路已廣泛深入應用于生產(chǎn)生活中,溫濕度檢測反饋系統(tǒng)在地鐵、冷鏈存儲運輸、紡織定型機、煙葉發(fā)酵、農(nóng)業(yè)、機房等諸多領域有重要的實用價值。以往設計的溫濕度檢測系統(tǒng)較多采用51單片機進行設計開發(fā),且系統(tǒng)設計針對具體一種特定應用場合,不便于移植,通用性差。溫濕度檢測反饋系統(tǒng)往大存儲、智能化方向發(fā)展已經(jīng)成為市場主流趨勢[1],并且,主流MCU單片機公司之一的ST意法半導體公司自2014年起,已經(jīng)不再更新固件庫。結合可視化、圖形化的CubeMX軟件和HAL庫,以其抽象和可移植性等諸多優(yōu)勢,取代固件庫開發(fā)也是大勢所趨?;赟TM32和HAL驅動庫,結合CubeMX軟件設計的溫濕度監(jiān)測反饋系統(tǒng),可以自主調節(jié)溫濕度上下限值以實現(xiàn)不同場合的運用,具備功能更強、功耗更低、開發(fā)周期更短等顯著優(yōu)勢。
溫濕度監(jiān)測反饋系統(tǒng)整體規(guī)劃有六個部分:STM32單片機、溫濕度采集、顯示電路、閾值設置、聲光報警電路、外設反饋控制電路。系統(tǒng)整體框圖見圖1。
圖1系統(tǒng)整體框圖
主流MCU(單片機)公司之一意法半導體(ST),推出的產(chǎn)品STM32 MCU融高性能、實時性、數(shù)字信號處理、低功耗、低電壓于一身,同時保持高集成度和開發(fā)簡易的特點。本系統(tǒng)正是采用Cortex-M3基礎型MCU主流級的STM32F103C8T6。該系列有豐富的外設、低壓、低功耗、高集成度、高性能,同時價格適中。工作頻率達72MHz,集成了512KBFlash和64KBSRAM,具有I2C、SPI、SDIO等接口模塊,并且具有8個16位的定時器[2]。軟件實現(xiàn)部分結合可視化軟件CubeMX和HAL驅動庫。高效便捷開發(fā)周期短,可移植性強。
單片機STM32F103核心電路設計方面針對系統(tǒng)所需,省去非必要環(huán)節(jié),有效降低成本。核心電路設計包含以下內容:
(1)電源:采用5V充電器接DC直流電源插座,核心電路使用ASM1117得到單片機所需的3.3V供電電壓;電源和地之間接電容以提高電源穩(wěn)定性。
(2)時鐘:單接外部8M晶振,省去RTC時鐘。單片機引腳數(shù)量少,設計上原本接RTC晶振的兩個引腳PC14(OSC32_IN)和PC15(OSC32_OUT)通過10K電阻直接接地。硬件設計上也可把兩個引腳重映射到PD0/PD1,設置推挽輸出0,節(jié)省兩個電阻。
(3)復位:采用按鍵連接NRST端口完成復位電路,并聯(lián)電容以消除抖動。
(4)啟動:BOOT1接地,BOOT0通過跳線帽完成高/低電平轉換,實現(xiàn)程序運行和在線調試的轉換。
(5)下載:用最節(jié)省資源的SWD下載方式,實際接線時候只接SWIO/SWCLK/GND三條線,僅占用單片機兩個引腳。
溫濕度采集選用DHT11數(shù)字溫濕度傳感器,這是一款含有已校準數(shù)字信號輸出的溫濕度復合傳感器,它應用專用的數(shù)字模塊采集技術和溫濕度傳感技術,產(chǎn)品具有極高的可靠性和卓越的長期穩(wěn)定性。精度為濕度+-5%RH,溫度+-2℃,濕度量程20-90%RH,溫度量程0~50℃,可滿足多種場合要求。
硬件上DHT11腳1接5V電源;2腳通過5K電阻接電源,同時連接單片機PA1輸入數(shù)據(jù);3腳懸空;4腳接地。
顯示采用微功耗、體積小、顯示內容豐富、超薄輕巧,抗震性能更好等諸多優(yōu)點的OLED,相比LCD,OLED不需要背光。在數(shù)據(jù)傳輸方面,提供多種對外接口方式,例如I2C(Inter-Integrated Circuit)接口,串行SPI(Serial Peripheral Interface)接口,6800、8080并行接口[3]。
七針OLED模塊共有七個管腳,硬件設置上1(GND)腳接地、2(VCC)腳節(jié)電源、3(SCLK)時鐘管腳接PA5、4(SDA)數(shù)據(jù)管腳接PA7、5(REST)低電平復位接PB1、6(DC)數(shù)據(jù)和命令控制管腳接PB0、7(CS)片選管腳接PA4,采用SPI方式驅動OLED。
用四個按鍵開關,分別接單片機PB3/PB4/PB5/PB6引腳,以設置溫濕度上下限值。
用紅色LED和喇叭,當前溫度或者濕度超過設定的閾值,LED點亮同時喇叭響起實現(xiàn)聲光報警。
LED陽極通過IK限流電阻接3.3V電源,陰極接單片機PB10,低電平驅動;蜂鳴器通過PNP接單片機PB11,低電平驅動。
單片機PB12/PB13/PB14/PB15四個引腳分別通過三極管8050驅動四路繼電器輸入端,繼電器輸出端分別接排濕、加濕、降溫、升溫設備。每個繼電器反并聯(lián)一個二極管以避免過高的感應電壓損壞三極管,設計上繼電器和單片機不共地。產(chǎn)品在結合實際應用場合可采用不同的控制設備。
系統(tǒng)設計原理圖如圖2所示。
圖2系統(tǒng)原理圖
(1)默認使用STM32F103C8T6的8M內部時鐘源。
(2)開啟ST-Link調試口(PA13和PA14)
(3)開啟SPI1端口,使用硬件NSS端口,驅動OLED,使用端口PA4、PA5、PA7、PB0、PB1。
(4)開啟外部中斷,接收處理按鍵輸入,使用端口為PB3、PB4、PB5、PB6。
(5)溫濕度模塊接PA1,需動態(tài)配置輸入輸出,輸出為喚醒模塊,輸入為讀取模塊數(shù)據(jù)。
(6)聲光報警端口,PB10/PB11設置為GPIO_Out-Put模式。
(7)外設開關端口,引腳PB12、PB13、PB14、PB15設置為GPIO_OutPut模式。
軟件實現(xiàn)是結合CubeMX軟件,采用HAL驅動庫,在Keil uVision5平臺開發(fā),方便實現(xiàn)移植。Keil5支持常見的ARM公司系列產(chǎn)品,最主要的是與STM32系列完美兼容,提供了直接可用的啟動文件,直接進行C語言編程開發(fā),適用于多種機型和多種操作系統(tǒng)[4]??梢酝ㄟ^開發(fā)軟件自動尋找中斷地址,不需要重新設置啟動文件,不僅方便也有效縮短開發(fā)周期[5]。
程序主要包括溫濕度監(jiān)測、顯示、閾值上下限設定、反饋調節(jié)控制等幾個模塊。系統(tǒng)流程圖如圖3所示。
圖3系統(tǒng)流程圖
通過硬件測試(未接外設控制設備),用溫濕度計記錄數(shù)據(jù)作為參照,分別采用空調降溫升溫、加濕器加濕等手段來改變當前環(huán)境的溫濕度,實驗結果表明系統(tǒng)能夠實時顯示當前溫度濕度,超過設定溫濕度實現(xiàn)聲光報警(蜂鳴器響起,LED燈亮),同時相應繼電器開關動作,溫濕度值回到閾值內,聲光報警再度停止工作。響應速度快,性能可靠。
本系統(tǒng)開發(fā)的溫濕度檢測反饋系統(tǒng)是使用單片機STM32F103C8T6結合CubeMX軟件和HAL驅動庫運行程序開發(fā),完成聲光報警和反饋控制。硬件電路設計成本低,功能完善,通用性好,適用于多種環(huán)境的需求、長時間工作、無人值守的場合。