本程序出自:http://www.torrancerestoration.com/bbs/dpj-181601-1.html
本作品大部分內(nèi)容來自于網(wǎng)上轉(zhuǎn)載,做出了一些修改,目前也不是很完善,望大家能繼續(xù)完善本開源作品,一起學(xué)習(xí),共同進步,感謝開源作者,感謝大家:
非接觸式智能測溫系統(tǒng)
本系統(tǒng)以單片機STC89C51為核心,使用紅外傳感器作為感應(yīng)器,檢測是否有人要進行溫度測量,將檢測的結(jié)果轉(zhuǎn)化為電信號傳輸至單片機中。單片機再進行判斷是否啟用紅外測溫傳感器進行溫度數(shù)據(jù)采集。將采集的數(shù)據(jù)送至單片機進行計算、處理后傳輸?shù)?/font>OLED顯示屏進行顯示,并且由MP3播放器進行播報溫度是否正常。
隨著人們對自身安全和健康要求的不斷提高,原有接觸式水銀溫度腋測法的缺點不斷顯露。其接觸式的體溫測量方法可能直接導(dǎo)致發(fā)熱類的傳播。臨床上常用的水銀體溫計雖價格便宜,測量性能穩(wěn)定,但缺點明顯,測溫時間長,消毒繁瑣,易破損,造成水銀泄漏,增加護理工作量和潛在危險性, 不適用于人員流動較大的公共場所進行體溫篩查。選擇一種快速、簡單、精確的體溫篩查器械尤為重要,紅外體溫測量裝置在大規(guī)模人群防控傳染病監(jiān)測中具有較好的應(yīng)用效果,具有適應(yīng)性高、響應(yīng)快、精度高、可動態(tài)監(jiān)測等優(yōu)勢。 因此許多國家紛紛采取措施,主要方法是采用手持式的紅外測溫儀檢測。該方式的優(yōu)點是不接觸皮膚,對人體無任何害處,而且速度快,在1秒鐘內(nèi)就能鑒別被檢測者是否發(fā)燒,缺點是增加了檢測者的感染幾率,給他們造成很大的心理負擔(dān)。在復(fù)學(xué)的同時,我們迎來了電子系統(tǒng)設(shè)計,借助這次設(shè)計作品的機會我們研發(fā)了一款具有自動感應(yīng)、自動測量、智能播報的非接觸式智能測溫系統(tǒng),該系統(tǒng)不僅可以提高測量效率,還可以有效地解決檢測者被感染的問題。 二、系統(tǒng)硬件的具體設(shè)計與實現(xiàn) 2.1系統(tǒng)原理和框圖 非接觸式智能測溫系統(tǒng)的硬件組成如下圖2-1所示。本系統(tǒng)主要由STC89C51單片機及其外圍電路、紅外檢測傳感器、紅外測溫傳感器、顯示裝置、MP3播放器等五部分組成。單片機循環(huán)檢測由紅外傳感器檢測傳輸來的電信號,據(jù)此產(chǎn)生的電信號來判斷是否有人,同時紅外測溫傳感器進行相應(yīng)的工作方式。當(dāng)檢測到有人靠近時,紅外測溫傳感器開始運行,此時OLED顯示屏上將會顯示當(dāng)前檢測者的溫度,并且進行語音播報溫度是否正常(體溫在36.2°—37.2°之間播放:體溫正常且綠燈亮起;否則,播報體溫異常且紅燈亮起)。如果沒有人靠近,OLED顯示屏將會在2秒之后進行熄屏。此時紅外傳感器繼續(xù)檢測是否有人。
1.png (47.74 KB, 下載次數(shù): 86)
下載附件
2020-10-22 10:26 上傳
圖2-1系統(tǒng)設(shè)計框圖
2.2主控芯片 該作品采用了STC89C51作為控制核心,對每個模塊傳送過來的數(shù)據(jù)進行處理并發(fā)送。該單片機是一種低功耗、高性能CMOS8位微控制器,具有8K字節(jié)系統(tǒng)可編程Flash存儲器,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得STC89C51為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。內(nèi)部看門狗定時器、低電壓復(fù)位和低電壓檢測等內(nèi)部保護特性。 2.3紅外測溫傳感器 2.3.1紅外測溫原理 紅外測溫系統(tǒng)是采用紅外測溫模塊接收不同光譜,經(jīng)過STC89C51單片機處理后在OLED顯示模塊上顯示不同數(shù)字來實現(xiàn)的。物體或人的不同溫度反應(yīng)出不同的光譜,紅外測溫系統(tǒng)發(fā)射一束光到物體或人的表面,然后反射到紅外測溫模塊中接收,其物體或人的溫度的光譜經(jīng)過紅外測溫模塊處理后,將以數(shù)字信號傳給單片機,再由OLED顯示模塊顯示出來。 2.3.2 GY-906 MLX90614的特點 (1)應(yīng)用范圍廣泛,適用于恒溫控制、工業(yè)系統(tǒng)、消費類產(chǎn)品、溫度計或任何熱敏系統(tǒng)。 (2)體積小巧,可安裝于狹小的空間范圍內(nèi),進行溫度測量。 (3)易集成。 (4)3V和5V電源電壓。 (5)節(jié)能工作模式。 (6)車用級別標(biāo)準(zhǔn)。 2.4紅外感應(yīng)傳感器 該傳感器對環(huán)境光線適應(yīng)能力強,其具有一對紅外線發(fā)射與接收管,發(fā)射管發(fā)射出一定頻率的紅外線,當(dāng)檢測方向遇到障礙物(反射面)時,紅外線反射回來被接收管接收。經(jīng)過比較器電路處理之后綠色指示燈會亮起,同時信號輸出接口輸出數(shù)字信號(一個低電平)。該傳感器的探測距離可以通過電位器調(diào)節(jié)、具有干擾小、便于裝配、使用方便等特點。
2.5顯示裝置 OLED(Organic Light-Emitting Diode)有機發(fā)光二極管又稱為有機激光顯示、OLED顯示技術(shù)具有自發(fā)光的特性、采用非常薄的有機材料涂層和玻璃基板、當(dāng)有電流通過時、這些有機材料就會發(fā)光、而且OLED顯示屏幕可視角大、功耗低、OLED由于同時具備自發(fā)光、不需背光源、對比度高、厚度薄視角廣、反應(yīng)速度快、可用于撓曲面板、使用溫度范圍廣、結(jié)構(gòu)及制程等優(yōu)異之特性、先接觸的1286屏都是LCD的、需要背光、功耗較高,而OLED的功耗低、更加適合小系統(tǒng)、由于兩者發(fā)光材料的不同、在不同的環(huán)境中、OLED的顯示效果好、模塊供電可以是3.3v也可以是5v、不需要修改模塊電路、OLED屏具有多個控制指令、可以控制OLED的亮度、對比度、開關(guān)升壓電路等指令、操作方便、功能豐富、可顯示漢字、ASCII、圖案等、同時為了方便應(yīng)用在產(chǎn)品上、預(yù)留4個M3固定孔、方便用戶固在機殼上。 2.6 MP3播放器 YS-M3語音播放器的特點有: (1)觸發(fā)一次播放一次。 (2)9個觸發(fā)端口,直接觸發(fā)播放。 (3)結(jié)合單片機IO口編碼觸發(fā)播放31首MP3。 (4)內(nèi)部帶3W功放,滿足大部分應(yīng)用要求。 三、系統(tǒng)軟件設(shè)計 3.1 程序描述 程序中主要用到的知識點有:單片機定時器、紅外測溫傳感器的I2C通信方式和溫度計算、OLED的顯示、延時函數(shù)的調(diào)用以及LED燈的亮滅等。其中,單片機中的定時器尤為重要,主要用于產(chǎn)生固定時間,也可以作為UART等外設(shè)的頻率發(fā)生器。 3.2 程序設(shè)計思路 紅外感應(yīng)傳感器一旦檢測到有人靠近,紅外測溫模塊開始采集溫度數(shù)據(jù)并送至單片機進行計算,再將單片機計算出來的數(shù)據(jù)進行比較,若在正常范圍值,則單片機發(fā)送一個低電平信號到MP3播放器進行播報“體溫正!鼻揖G燈亮起。否則,播報“體溫異!鼻壹t燈亮起。同時,OLED顯示屏也將從單片機得到處理完的溫度數(shù)據(jù)進行顯示當(dāng)前檢測溫度,若在兩秒后沒人檢測溫度,OLED顯示屏將會熄滅。此時紅外感應(yīng)傳感器持續(xù)檢測是否有人。 3.3 程序流程圖 作品的程序流程圖如下圖3-1所示,紅外感應(yīng)傳感器一旦檢測到有人,將會發(fā)送一個低電平信號到單片機中,單片機即發(fā)出開始信號START,緊接著在總線上發(fā)出尋址信號(AddressByte),其地址信息的讀/寫控制位為1時,表示對GY-906進行讀操作。單片機接收到GY-906的應(yīng)答信號,通信建立起來,接著GY-906發(fā)送溫度數(shù)據(jù)的高8位。單片機則開始一位一位的接收GY-906發(fā)出的溫度數(shù)據(jù),然后保存,完成8位數(shù)據(jù)接收后,單片機便發(fā)送一個應(yīng)答信號。GY-906收到應(yīng)答信號后,再發(fā)送溫度數(shù)據(jù)的低8位。單片機收到并保存低8位數(shù)據(jù)后,單片機在緊隨的下一個周期拉高SDA,發(fā)送不應(yīng)答信號。由此單片機將得到十六位二進制數(shù)并加以處理,變成十進制的BCD碼,最后通過顯示屏顯示出來。
2.png (23.3 KB, 下載次數(shù): 90)
下載附件
2020-10-22 10:27 上傳
圖3-1系統(tǒng)程序流程圖
四、系統(tǒng)創(chuàng)新 1、相對于額溫槍而言,該作品采用了智能感應(yīng),實現(xiàn)了非接觸式紅外測溫,可以有效地解決檢測者被感染的問題。 2、在OLED顯示溫度的基礎(chǔ)上,增加了智能語音播報系統(tǒng),免去了人眼去獲取數(shù)據(jù)的步驟。 3、在GY-906紅外測溫的探頭上添加了菲涅爾光學(xué)透鏡,增加了紅外探頭的測試距離,也使整個測試系統(tǒng)更加穩(wěn)定。 五、相關(guān)調(diào)試 5.1 電前檢查 任何電子電路在組裝好之后,都必須要進行線路檢查,以免出現(xiàn)短路。檢查的方法就是按照一定順序?qū)φ罩娐穲D進行逐級檢查,其中要特別注意電源是否連接正確,電源與地是否有短接,集成電路和晶體管的引腳是否連接正確,用手輕輕觸動一下元器件看焊點是否焊牢等等。 5.2 通電檢查 將所需電源電壓數(shù)值先調(diào)試好之后,就可以接通電路電源。電源接通之后,先觀察電路是否出現(xiàn)異,F(xiàn)象,例如出現(xiàn)冒煙、異常氣味以及器件發(fā)燙等等。如果出現(xiàn)上述異常現(xiàn)象就應(yīng)該立即斷開電源,在確保 排除故障后才能再次接通電源。然后,測量每個集成塊的電源引腳電壓是否正常,確保集成電路已進行正常的通電工作。 5.3 軟件調(diào)試 硬件調(diào)試完之后還要進行軟件調(diào)試,就是將程序?qū)懭氲絾纹瑱C的存儲器中來實現(xiàn)整個實物的設(shè)計功能。 六、結(jié)論 體溫作為防控篩查的重要指標(biāo)之一,其數(shù)據(jù)需高度準(zhǔn)確,以利于醫(yī)護人員及時采取防控措施。在體溫篩查中,應(yīng)用非接觸式智能測溫系統(tǒng)進行體溫初步篩查安全、有效,測量時間短,節(jié)約時間,降低感染風(fēng)險,節(jié)省工作人員勞動量等。 在此次非接觸式智能測溫控制系統(tǒng)的設(shè)計中,讓我感覺到了單片機應(yīng)用的廣泛性,它很貼切我們的日常生活,應(yīng)用無處不有,它并不是想象中的那么復(fù)雜。在設(shè)計中,要充分了解所用芯片的使用條件及輸入輸出的特性,這樣才能避免因使用錯誤而多走彎路。電路設(shè)計部分應(yīng)該有的精神就是廣集資料。只憑借自己頭腦中的知識是遠遠不夠的。哪里出現(xiàn)了問題,就要翻書本,或上網(wǎng)查資料。當(dāng)然也要開動自己的腦筋怎樣使系統(tǒng)電路更完美。例如我的設(shè)計是非接觸式智能測溫系統(tǒng)。有非接觸式測溫,自然會用到紅外測溫傳感器,每種紅外測溫傳感器都有不同的特性和功能,你就要進行選擇了。例如對紅外測溫傳感器的選擇,你就要選擇你所熟悉的、所了解的。在電路設(shè)計時,應(yīng)充分發(fā)揮單片機的記憶運算、判斷控制能力,避免采用復(fù)雜的、穩(wěn)定性較差的模擬電路。為了使微機控制系統(tǒng)各種硬件設(shè)備能夠正常運行,有效地實現(xiàn)作品的相關(guān)功能,除了要設(shè)計合理的硬件電路,還必須要有高質(zhì)量的軟件支持,兩者相輔相成,共同維持系統(tǒng)的正常運作。
七、單片機+MLX90614代碼及作品圖 - #include "reg52.h"
- #include "stdio.h"
- #include "LQ12864.h"
- #include "GY906.h"
- #include "eepom.h"
- sbit hongwai=P1^5; //紅外感應(yīng)傳感器
- sbit MP3_1 = P2^4; //語音播放異常
- sbit MP3_2 = P2^5; //語音播放正常
- sbit LED1 = P1^2; //紅色LED燈
- sbit LED2 = P1^3; //綠色LED燈
- float wendu_change;
- unsigned int temp_int;
- unsigned int temp ;
- unsigned int ceshi ;
- uint temp_[3]={0};
- uint biaohao_num_[3]={0};
- uchar diaplay_5s = 0; //讀取顯示
- uchar flage_5s; //5s計時
- uint zhancun;
- uchar first_flage = 1;
- /*
- 紅外感應(yīng)傳感器 P1^5;
- 語音播放 P2^4/P2^5
- LED P1^2/P1^3
- oled 端口定義
- sbit SCL_OLED=P1^0; //串行時鐘
- sbit SDA_OLED=P1^1; //串行數(shù)據(jù)
- //GY-906 端口定義
- sbit SCL=P2^6;// 時鐘線
- sbit SDA=P2^7;// 數(shù)據(jù)線
- */
- void oled_gd_diaplay()
- {
-
- OLED_P16x16Ch(70,0,0); //溫
- OLED_P16x16Ch(90,0,1); //度
- OLED_P16x16Ch(110,0,2); //:
- // dxzm('.',70,0); //.
-
- }
- void oled_wendu()
- {
- char i;
- if(temp > 0)
- {
- if (0 == diaplay_5s)
- {
-
- OLED_P16x16Ch(0,0,3); // 閩
- OLED_P16x16Ch(20,0,4); // 南
- OLED_P16x16Ch(40,0,5); // 科
- OLED_P16x16Ch(60,0,6); // 技
- OLED_P16x16Ch(80,0,7); // 學(xué)
- OLED_P16x16Ch(100,0,8); // 院
- OLED_P16x16Ch(0,4,0); // 溫
- OLED_P16x16Ch(20,4,1); // 度
- OLED_P16x16Ch(40,4,2); // :
-
- //我們要達到的體溫精度是0.1,因此要有三位數(shù)
- // dxzm(((int)(temp)/100)+48,50,0);
- dxzm(((temp)/100)+48,60,4); //進行顯示百位
- dxzm(((temp)/10%10)+48,70,4); //進行顯示十位
- dxzm('.',80,4); //進行顯示.
- dxzm(((temp)%10+48),90,4); //進行顯示個位
- }
-
- else //讀取溫度標(biāo)志位等于 1
- {
- oled_gd_diaplay();
- TR0 =1; //打開定時器
-
- for(i = 0;i < 3;i++)
- {
-
- dxzm(0+48,70,i*2+2);
- dxzm((temp_[i]/100)+48,80,i*2+2);
- dxzm((temp_[i]/10%10)+48,90,i*2+2);
- dxzm('.',100,i*2+2); //.
- dxzm((temp_[i]%10)+48,110,i*2+2);
-
- }
-
- if(flage_5s >= 100) //顯示5s
- {
- TR0 = 0;
- diaplay_5s = 0;
- flage_5s = 0;
- OLED_Fill(00);
- }
-
- }
- }
-
- }
- /******************把數(shù)據(jù)保存到單片機內(nèi)部eepom中******************/
- void write_eepom(uchar num)
- { char num_num,i;
- if(1 == first_flage)
- {
- SectorErase(0x2000);
- first_flage = 0;
- }
-
- if(5 == num)
- {
- for(i=0;i<9;i++)
- {
- byte_write(0x2000+i,0);
- }
- }
- else if(num!=5)
- {
- num_num = num*3;
- byte_write(0x2000+num_num,(temp) % 256);
- byte_write(0x2001+num_num,(temp) / 256);
- byte_write(0x2002+num_num,num);
- }
- }
- /******************把數(shù)據(jù)從單片機內(nèi)部eepom中讀出來*****************/
- void read_eepom(uchar tem_num, uchar biao ,uchar num)
- {
- temp_[tem_num] = byte_read(0x2001+num*3);
- temp_[tem_num] <<= 8;
- temp_[tem_num] |= byte_read(0x2000+num*3);
- biaohao_num_[biao] = byte_read(0x2002+num*3);
- }
- void read_all_data()
- {
- uchar i;
- for(i =0;i<3;i++)
- {
- read_eepom(i,i,i);
- // delay(50);
- }
- }
- void Tim_init()
- {
- SCON = 0x50; /* 010 1 0000B,工作方式1, 8位UART,波特率可變,允許接收 */
- TMOD = 0x21; /* T1工作于方式2 T0工作在方式1*/
- TCON = 0x40; /* 定時器1開始計數(shù) */
- TH1 = 250; /* T1計數(shù)初值 */
- TL1 = 250;
- PCON = 0x80; /* SMOD置1,雙倍速率 */
- RI = 0;
- TI = 1; //串口打印必需為1
-
- TL0 = (65536-50000)%256; //reload timer0 low byte
- TH0 = (65536-50000)/256; //reload timer0 high byte
- // TR0 = 1; //timer0 start running
- ET0 = 1; //enable timer0 interrupt
- EA = 1; //open global interrupt switch
- }
-
- int main(void)
- {
- Tim_init(); //定時器和串口的初始化
- i2c_Init(); //屏幕通訊初始化
- OLED_Init(); //oled顯示初始
- while(1)
- {
- if(hongwai==0) //紅外感應(yīng)傳感器判斷是否有人
- {
- temp = (int)(memread()*10); // 讀取溫度,讀取小數(shù)點后一位所以*10
- oled_wendu(); // oled顯示當(dāng)前溫度
- if(temp>372) //判斷溫度是否大于37.2
- {
- MP3_1=0; //播放體溫異常
- LED1=0; // 同時紅色LED燈亮起
- delay(1000); // 給語音播放和紅色lED燈亮,留一點時間
- MP3_1=1; // 關(guān)閉語音播放
- LED1=1; //關(guān)閉紅色LED
- }
- else if(temp<361) //判斷溫度是否小于36.1
- {
- MP3_1=0; //播放體溫異常
- LED1=0; // 同時紅色LED燈亮起
- delay(1000); // 給語音播放和紅色lED燈亮留一點時間
- MP3_1=1; // 關(guān)閉語音播放
- LED1=1; //關(guān)閉紅色LED
- }
- else // 溫度在36.1-37.2之間
- {
- MP3_2=0; //播放體溫正常
- LED2=0; // 同時綠色LED燈亮起
- delay(1000); // 給語音播放和綠色lED燈亮,留一點時間
- MP3_2=1; // 關(guān)閉語音播放
- LED2=1; //關(guān)閉綠色LED
- }
- delay(1200); //使得一秒左右的時間,只采集一次,避免測量者再測溫的時候一下子采集了好幾組數(shù)據(jù)
-
- }
- else //紅外檢測沒人
- {
-
- MP3_1=1; // 關(guān)閉語音播放
- MP3_2=1; // 關(guān)閉語音播放
- LED1=1; //關(guān)閉紅色LED
- LED2=1; //關(guān)閉綠色LED
- delay(1200); //調(diào)用延時 ,讓最后一個的體溫數(shù)據(jù)顯示停留一段時間
- OLED_Fill(0x00); //進行清屏,熄滅屏幕
- }
-
- }
- }
- /* Timer0 interrupt routine */
- void tm0_isr() interrupt 1 using 1 //50ms中斷計時
- {
- TL0 = (65536-50000)%256; //reload timer0 low byte
- TH0 = (65536-50000)/256; //reload timer0 high byte
- flage_5s++;
- }
-
復(fù)制代碼
SRGN0XWJ{KD_C`TE3}FJ{5C.png (118.03 KB, 下載次數(shù): 83)
下載附件
2020-10-22 10:32 上傳
測試圖2.jpg (1.45 MB, 下載次數(shù): 92)
下載附件
2020-10-22 10:30 上傳
51hei.png (5.54 KB, 下載次數(shù): 95)
下載附件
2020-10-22 16:29 上傳
本程序出自:http://www.torrancerestoration.com/bbs/dpj-181601-1.html
本作品大部分內(nèi)容來自于網(wǎng)上轉(zhuǎn)載,做出了一些修改,目前也不是很完善,望大家能繼續(xù)完善本開源作品,一起學(xué)習(xí),共同進步,感謝開源作者,感謝大家:
上圖代碼的Keil工程文件51hei附件下載:
非接觸式智能測溫系統(tǒng)-程序.zip
(94.66 KB, 下載次數(shù): 239)
2020-10-22 10:35 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|