劉寺杰 徐敏 張晨宇 趙婭麗
摘 要 傳統的OLED顯示編程繁瑣,開發復雜,USART HMI屏開發界面友好,利用上位機進行界面開發,可以直接同步到屏幕上顯示。系統采用STM32F407作為控制芯片,選用DHT11作為溫濕度采集的傳感器,最終將采集的溫度以多元化的方式顯示在HMI串口屏上。如果溫濕度不符合設定要求,蜂鳴器就會啟動報警。系統經測試,開發容易,工作穩定可靠。
關鍵詞 HMI 智能 多元化 溫濕度
中圖分類號:TP302.7 文獻標識碼:A DOI:10.16400/j.cnki.kjdkx.2018.08.029
Abstract The traditional OLED display programming is complicated and complicated to develop. USART HMI screen development friendly interface, the use of host computer interface development, can be directly synchronized to the screen display. The system uses STM32F407 as the control chip and DHT11 as the sensor for temperature and humidity acquisition. Finally, the collected temperature is displayed on the HMI serial screen in a diversified manner. If the temperature and humidity do not meet the set requirements, the buzzer will start the alarm. The system has been tested and developed with ease and reliability.
Keywords HMI; smart; diversification; temperature and humidity
0 引言
隨著人們生活水平的不斷提高,電氣設備已經走進千家萬戶,溫濕度對于電氣設備來說一直是一個重要的環境因素,因此越來越多的傳感器被應用到電氣設備中。系統采用STM32F407作為控制芯片,選用DHT11作為溫濕度采集的傳感器,最終將采集的溫度以多元化的方式顯示在HMI串口屏上。如果溫濕度不符合設定要求,蜂鳴器就會啟動報警。系統具有智能化、多元化、性價比高等多個優點。
1 系統總體設計
系統主要的功能是溫濕度采集,數據的多元化顯示以及超出范圍的報警。系統處理單元為STM32F407,采集的傳感器為DHT11顯示部分為HMI智能串口屏。傳感器先采集溫度,然后以串口的形式把數組發送給處理器,處理器對溫濕度進行判斷和處理,若不滿足程序的判斷語句,就會觸發蜂鳴器模塊,同時將數據以串口的形式傳送給HMI智能串口屏。設計系統的總體框圖如圖1所示。
2 系統硬件設計
2.1 處理器
針對本系統設計的要求,系統CPU選用STM32F407,該處理器芯片基于ARM Cortex-M4內核設計。STM32F4擁有192KB的片內SRAM,帶攝像頭接口(DCMI)、USB高速OTG等。對于相同的外設部分,STM32F4具有更快的模/數轉換速度,更低的ADC/DAC工作電壓、4KB的電池備份SRAM以及更快的USART和SPI通信速度。另外在時鐘的最高運行頻率上,STM32F4可達到168MHz,擁有的ART自適應實時加速器可以達到相當于FLASH零等待的性能,STM32F4的功耗為238 A/MHz, 滿足了開發需求。
2.2 HMI智能串口屏
HMI智能串口屏是可編輯的智能LCD觸摸顯示屏,擁有先進的人機界面處理系統和美觀的嵌入式圖形界面。串口屏的界面制作是在USART HMI的上位機上完成的,STM32用串口與顯示屏交互傳送指令,開發效率得到了提高。串口屏不僅可以用串口下載,還可以用SD卡下載,插入SD卡后,串口屏自動更新。在調試方面,不僅有電腦端模擬的調試方式,還可以用模擬器和串口屏同步調試。
2.3 DHT11溫濕度傳感器
DHT11可以檢測環境的溫度和濕度,濕度范圍為20~95%RH,誤差在?%;溫度測量范圍為0℃~50℃,誤差為?℃,工作電壓在5V左右。一個測溫元件和一個電阻式測濕度的器件組成了傳感器,通過插入的方式就可以與處理器建立連接,該傳感器價格低,穩定性強,這也是選擇這種型號傳感器的原因。
3 系統軟件設計
3.1 DHT11溫濕度采集
DHT11溫濕度傳感器使用一條總線,數據在傳感器和處理器之間來回傳輸。數據包的大小是5Byte。數據包又分成小數和整數數據,高位先輸出。格式為:8比特濕度整數、8比特濕度小數、8比特溫度整數、8比特溫度小數、8比特校驗和。核心代碼如下:
u8 DHT11_Bit(void)
{
u8 time=0;
while(DHT11_DQ_IN&&time;<100)
{
time++;
delay_us(1);
}
time=0;
while(!DHT11_DQ_IN&&time;<100)
{
time++;
delay_us(1);
}
delay_us(40);
if(DHT11_DQ_IN)return1;
else return 0;
}
u8 DHT11_Byte(void)
{
u8 i,dat;
dat=0;
for (i=0;i<8;i++)
{
dat<<=1;
dat|=DHT11_Bit();
}
return dat;
}
u8 DHT11_Data(u8 *temper,u8 *humini)
{
u8 buf[5];
u8 i;
DHT11_Rst();
if(DHT11_Check()==0)
{
for(i=0;i<5;i++)
{
buf[i]=DHT11_Byte();
}temper
if((buf[0]+buf[1]+buf[2]+buf[3])==buf[4])
{
*temper=buf[0];
*humini=buf[2];
}
}
else return 1;
return 0;
3.2 HMI智能串口屏顯示
串口屏人機界面的設計基于上位機軟件USART HMI完成,這個上位機軟件操作方便,功能強大,擴展性強,上位機可以同步頁面的顯示,并且通過代碼控制控件可以多元化顯示數據。同時要注意的是,為確保串口HNI正常通信,顯示前先發送結束符。核心代碼如下:
void HMISends(char *buf2)
{
u8 p=0;
while(1)
{
if(buf2[p]!=0)
{
USART_SendData(USART2,buf2[p]);
while(USART_GetFlagStatus(USART2,USART_FLAG_TXE)==RESET){};
i++;
}
else
return;
}
}
void HMISendEND(void) //結束符發送函數
{
HMISendb(0xff);
HMISendb(0xff);
HMISendb(0xff);
}
void Sendb(u8 m)
{
USART_SendData(USART2,m); //發送一個字節
while(USART_GetFlagStatus(USART2,USART_FLAG_TXE)==RESET){};
return;
}
3.3 STM數據處理
STM32F407負責發送溫度和濕度,針對不同的控件,用不同的文本類型傳輸。當溫度大于28或者濕度大于90時,蜂鳴器就會觸發。下面是部分代碼:
//給文本控件賦值
HMISends("t0.txt="); //發送字符串
HMISendb(34); //發送引號
DHT11_Data(&temperature;,&humidity;); //讀取溫濕度
zifu_Send(temperature); //分解溫度為字符,單字節發給串口屏HMISendb(34);
HMISendEND();
HMISends("j0.val=");
zifu_Send(temperature*2);
HMISendEND(); //發送結束符
if(temperature>28||humidity>90)
{BEEP=1;
}
else
{
BEEP=0;
}
4結果
在HMI智能串口屏上設計兩個頁面。第一個是加載頁面,從0緩沖到100;第二個是讀取溫濕度頁面,屏幕上不僅可以顯示對應的溫濕度數據,還提供了多元化的顯示,用溫度計的形式顯示溫度,用圓盤的形式顯示濕度。具體結果如圖2和圖3。
5 結束語
系統的設計是功耗低,處理快,功能較多,顯示多元化的溫濕度測量系統。特別是顯示屏的開發部分更加友好,界面也更美觀。不足的是沒有加入無線傳輸模塊和手機終端,要是將兩者加入,系統的功能也會更加完善和強大。
參考文獻
[1] 卜永波.基于DHT11傳感器的溫濕度采集系統[J].計算機與現代化,2013(11):133-135.
[2] 顏麗娜 基于DHT11溫濕度測控系統的設計[J].測控技術,2013(12):397-399.
[3] 邱建東基于STM32和嵌入式Web服務的智能溫度監測系統[J].寧夏大學學報,2015(1):40-43.
[4] 方威,孫玉坤.基于SHT75的溫濕度監測網絡設計[J].農機化研究,2009(3):86-88.
[5] 王海燕,高之圣.基于數字溫度傳感器DS18B20的智能溫度控制器的設計[J].科技信息(科學教研),2007(13):21-23.