stm32项目(22)——基于stm32的智能病房监护系统
1.实现功能
检测病房的温度、湿度、光照强度、烟雾浓度;检测病人的体温、心率、血氧;所有数据在OLED显示屏上进行显示,同时各数据也通过WIFI模块发送到机智云APP上进行显示。使用按键对屏幕进行翻页、对各数据的阈值进行加减操作;将实时数据与数据阈值进行对比,超过阈值进行LED闪烁报警(机智云APP上也对应有报警标志)。
2.原理图与PCB
3.功能演示视频
STM32病房检测系统
4.模块介绍
4.1DHT11
1. 基本特性
-
测量范围:
-
温度:0~50℃(±2℃精度)。
-
湿度:20%~90%RH(±5%精度)。
-
-
分辨率:1℃(温度)、1%RH(湿度)。
-
采样率:1Hz(每秒更新一次数据)。
-
供电电压:3.3V~5V(兼容3.3V和5V单片机)。
-
输出方式:单总线数字信号(节省IO口)。
2. 模块接口(3引脚)
引脚 | 功能 | 连接说明 |
---|---|---|
VCC | 电源正极 | 接3.3V或5V |
GND | 电源负极 | 接地 |
DATA | 数据信号线 | 接单片机GPIO(需上拉电阻4.7kΩ~10kΩ) |
📌 注意:DATA 线需要上拉电阻(部分模块已内置)。
3. 通信协议(单总线时序)
DHT11 采用 单总线(1-Wire) 协议,通信过程分为 3 个阶段:
(1) 单片机发起通信(Start Signal)
-
单片机拉低 DATA 线 ≥18ms(启动信号)。
-
然后拉高 20~40μs,等待 DHT11 响应。
(2) DHT11 响应(Response Signal)
-
DHT11 拉低 80μs(应答信号)。
-
再拉高 80μs,表示准备发送数据。
(3) 数据传输(40bit 数据包)
-
40bit = 16bit湿度 + 16bit温度 + 8bit校验和(高位先发)。
-
每个 bit 的表示方式:
-
0:低电平 50μs,然后高电平 26~28μs。
-
1:低电平 50μs,然后高电平 70μs。
-
数据格式示例:
湿度整数(8bit) + 湿度小数(8bit) + 温度整数(8bit) + 温度小数(8bit) + 校验和(8bit)
校验和 = 湿度高8位 + 湿度低8位 + 温度高8位 + 温度低8位(取最后8位)。
4.2光敏传感器
该模块将光照信号转换位模拟电压并输出,直接用单片机的AD转换功能对其进行读取即可。
4.3 DS18B20
4.4心率血氧模块
1. 基本特性
-
检测参数:
-
血氧饱和度(SpO₂):70%~100% 精度(±2%)。
-
心率(HR):30~250 BPM(Beat Per Minute)。
-
-
光学检测:
-
红光(660nm):用于血氧检测(HbO₂/Hb吸收率差异)。
-
红外光(880nm):用于心率检测(血液脉动变化)。
-
-
供电电压:1.8V~3.3V(需逻辑电平匹配,部分模块内置稳压)。
-
通信接口:I²C(地址 0x57,可调)。
-
采样率:可编程(最高 1kHz)。
2. 模块接口(4/5引脚)
引脚 | 功能 | 连接说明 |
---|---|---|
VCC | 电源(1.8V~3.3V) | 接3.3V(注意电平兼容) |
GND | 接地 | 接单片机GND |
SCL | I²C时钟线 | 接单片机SCL(需上拉电阻4.7kΩ) |
SDA | I²C数据线 | 接单片机SDA(需上拉电阻4.7kΩ) |
INT(可选) | 中断输出 | 接单片机外部中断引脚(用于数据就绪触发) |
📌 注意:
若单片机为5V逻辑,需加电平转换电路(如TXB0108)。
部分模块自带稳压,可直接接5V,但I²C信号仍需3.3V。
3. 通信协议(I²C)
-
I²C地址:默认 0x57(可通过ADDR引脚修改)。
-
关键寄存器:
-
0x00(STATUS):状态标志(数据是否就绪)。
-
0x07(SPO2_CONFIG):配置血氧模式、采样率等。
-
0x09(LED_CONFIG):设置红光/红外光电流强度。
-
0x16(FIFO_DATA):存储ADC采样值(血氧+心率)。
-
数据读取流程
-
初始化:配置采样率、LED电流、工作模式(血氧+心率)。
-
轮询/中断:检查STATUS寄存器或INT引脚,判断数据是否就绪。
-
读取FIFO:从 0x16 读取3字节数据(红光+红外光ADC值)。
4.5烟雾模块
该模块也是直接将烟雾信号转换位模拟电压并输出,直接用单片机的AD转换功能对其进行读取即可
4.6 OLED屏幕
本次使用7针的SPI协议的屏幕。