一.设计意义:
体温作为人体健康的一个重要指标,人体体温过高或过低都是不健康现象,如何快速有效地测量人体体温,是当前研究的热点。目前常用的人体测温有水银体温计、电子体温计等设备,而电子体温计有接触式体温计和非接触式体温计。 2020年爆发的新型冠状病毒疫情,主要由体温症状(≥37.3℃)来发现疑似型冠状病毒感染者,测温设备迅速被应用到医院、车站、超市等各个公共场合,用于发现、排查可能感染者,这正是得益于红外测温非接触性、响应快的特点。与传统接触式测温相比,红外测温具有非接触性、响应快、灵敏度高、范围广等优势,近些年来发展迅速,便携式红外测温仪已经广泛应用于各个领域,如医疗、工业、农业等。
二.需求功能分析:
本测温系统采用STM32F103芯片作为核心微处理器,搭配DHT11温度传感器,再结合OLED 显示器、语音播报、蜂鸣器等辅助功能,以提供更好的人机交互服务。该测温系统具有简易、可靠、精度较高、功能多、成本较低等优点。
三.系统方案:
具体实现功能: 本系统以stm32f103为主控芯片,DHT11为数据采集模块,OLED显示屏为显示模块,蜂鸣器为报警模块,BY8301-16P语音模块+喇叭为语音播报模块。系统通过DHT11实时采集人体温度,并将数据传递给stm32,stm32将采集到的温度进行处理并将处理后的数据传送至oled屏显示出来,同时语音播报也会进行播报,如果测到的体温属于正常的范围,系统将只会播报“体温正常”;如果测到的体温超出正常的范围,系统不仅会提示体温不正常,而且还会进行相应的报警。
系统框图
四.系统总电路图+传感器实物图and原理图:
系统总电路图
-
DHT11 温湿度传感器
其主要构成部分为电容式感湿和NTC 测温组件组成,测量温度范围在 0℃~+50℃之间,温度误差在±1℃之间,具有体积小、响应速度快、控制简单的特点,常用于空调、医疗、消防、其他有测量环境温度需求的电器中。
DHT11实物图以及模块电路图
-
蜂鸣器
一种将电信号转换为声音信号的器件,常用来产生设备的按键音、报警音等提示信号蜂鸣器按驱动方式可分为有源蜂鸣器和无源蜂鸣器。有源蜂鸣器:内部自带振荡源,将正负极接上直流电压即可持续发声,频率固定。无源蜂鸣器:内部不带振荡源,需要控制器提供振荡脉冲才可发声,调整提供振荡脉冲的频率,可发出不同频率的声音。蜂鸣器有正负极,顶部印有+号的为正极,若蜂鸣器引脚没剪,则长的为正极。
蜂鸣器实物图以及模块电路图
-
BY8001-16P语音模块
BY8001-16P 是深圳市百为电子科技有限公司自主研发的一款小巧的新型高品质插卡MP3模块。采用BY8001-SSOP24 MP3主控芯片,支持MP3、WAV格式双解码。模块内置TF卡座,可插卡进行更换语音内容;也可外接U盘或USB数据线连接电脑更换TF内容。该模块内置3W功放,可以直接驱动3W的喇叭,使用更方便。
BY8301-16P语音模块实物图以及电路图
-
OLED (Organic Light-Emitting Diode)
有机发光二极管又称为有机电激光显示,OLED显示技术具有自发光的特性,采用薄的有机材料涂层和玻璃基板,当有电流通过时,这些有机材料就会发光,而且OLED显示屏幕可视角度大,功耗低。OLED由于同时具备自发光、不需背光源(只上电是不会亮的,驱动程序和接线正确才会点亮)、对比度高、厚度薄、视角广、反应速度快、可用于挠曲面板、使用温度范围广、结构及制程简单等优异之特性。最先接触的12864屏都是LCD的,需要背光,功耗较高,而OLED的功耗低,更加适合小系统;由于两者发光材料的不同,在不同的环境中,OLED的显示效果较佳。模块供电可以是3.3V也可以是5V,不需要修改模块电路,OLED屏具有多个控制指令,可以控制OLED的亮度、对比度、开关升压电路等指令。操作方便,功能丰富,可显示汉字、ASCII、图案等。
OLED显示屏实物图
五.软件设计主流程:
函数开始,delay函数、DHT11函数、oled函数等初始化。DHT11传感器每隔1000ms读取一次温度和湿度数据,并在oled屏幕上显示。判断温度是否小于37度,若温度小于37°,语音播报“温度正常”。函数结束。
主函数代码
#include "sys.h"
#include "delay.h"
#include "led.h"
#include "beep.h"
#include "key.h"
#include "usart.h"
#include "oled.h"
#include "dht11.h"
//按键相关变量
uint8_t key_val;
//USART相关变量
u8 password[7]={1,2,3};
int len;//数据的长度
u8 usart_str[20];
//DHT11相关变量
u8 temp;
u8 humi;
//oled相关变量
u8 t=0;
u8 str[20];
//语言模块变量
int i;
u8 Check = 0;
u8 Play[]={0x7E,0x03,0x01,0x02,0xEF};//播放指令
u8 Call[]={0x7E,0x03,0x0E,0x0D,0xEF};//停止指令
u8 Next[]={0x7E,0x03,0x03,0x00,0xEF};//下一曲指令
u8 Last[]={0x7E,0x03,0x04,0x07,0xEF};//上一曲指令
u8 Add[]={0x7E,0x03,0x05,0x06,0xEF}; //音量+指令
u8 Sub[]={0x7E,0x03,0x06,0x05,0xEF}; //音量减指令
int main(void)
{
BEEP=0;
//初始化区域
delay_init(); //延时函数初始化
LED_Init();//灯的初始化;
BEEP_Init();//蜂鸣器的初始化
KEY_Init();//按键初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//中断优先级分组方式
uart_init(115200);
DHT11_Init();
OLED_Init(); //初始化 OLED
while(1)
{
if(t%10==0) //每 1000ms 读取一次
{
DHT11_Read_Data(&temp,&humi); //读取温值
sprintf(str,"wendu:%3d C",temp);
OLED_ShowString(1,1,str,16);
sprintf(str,"shidu:%3d ",humi);
OLED_ShowString(1,50,str,16);
delay_ms(100);
t++;
}
}
}
六.传感器系统调试:
七.实物图:
根据硬件连接图连接实物,检查无误后进行通电。
实物连接图
让传感器在正常环境下进行测试,OLED屏温度、湿度显示正常。
干燥环境测试
模拟高湿度环境(手握住传感器),温度、湿度增加,OLED屏显示正常。
模拟高湿度环境调试