基于物联网技术的智慧病房管理系统

文章描述了一个基于STM32F103的物联网智慧病房管理系统的设计,包括温湿度监测、自动灯光控制、RTC时间管理、按键处理以及Modbus通信。系统使用RTOS进行任务调度,通过AHT20获取温湿度数据,利用RTC实现定时开关灯,并通过UART和485接口与护士站通信。此外,还涉及了GPIO、I2C、DMA等硬件配置和RTOS进程设计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

设计一个基于物联网技术的智慧病房管理系统。假设医院住院部的一层病房(走廊两边病房平行分布),病房数量最多60间,每间病房3个床位,编号从1~180号。每间病房可采用的设备如下:STM32F103开发板1块,房间温湿度采集模块1套(I2C接口,AHT20模块),房间自动灯光开关控制器(以PWM方式控制,每天早上7点渐亮,晚上22点渐灭),病人脉搏&血氧检测仪3套(UART接口输出脉搏+血氧的数字值),床头紧急呼叫按键开关3个(按下呼叫)。

每间病房的STM32F103开发板通过UART转485接口,以mobus组网方式,连接到护士监控室的PC电脑上(上位机)。PC电脑上可接收每间病房的温湿度数据(周期为5分钟)、床头紧急呼叫信号、病人脉搏血氧数据(正常状态下30分钟一次采集;当脉搏超过120或血氧值低于90时切换到危重状态下,实时采集),显示在屏幕上并且保存到MySQL数据库里。

一、功能设计

1.使用 I2C 读取 AHT20 模块
2.TIM 定时器与 PWM 呼吸灯
3.按键信息接收与消抖
4.UART 转 485 接口与 modbus 通信
5.MAX30102 模块心率与血氧测量

二、基本配置

1.选择芯片型号

在这里插入图片描述

2.RCC配置

在这里插入图片描述

3.SYS配置

在这里插入图片描述

4.USART1 与 DMA 配置

在这里插入图片描述
在这里插入图片描述

5.I2C配置

在这里插入图片描述

6.TIME3配置

在这里插入图片描述

7.DMA配置

在这里插入图片描述

8.TIM2 与 PWM 配置

在这里插入图片描述

9.NVIC配置

在这里插入图片描述

10.GPIO配置

在这里插入图片描述

11.时钟配置

在这里插入图片描述

12.引脚配置

在这里插入图片描述

三、RTOS 与模块驱动、代码配置

RTOS 配置

选择引入 RT-Thread 轻量便捷 :
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
外部按钮配置
在这里插入图片描述
在这里插入图片描述

四、RTOS、AHT20 与 按钮功能实现

1.温湿度获取代码设计

首先我们需要引入温湿度驱动头文件:

#include "AHT20.h"

然后我们需要在进程中对温湿度传感器进行初始化,这里在初始化之后,不能立即获取温湿度,需要等待 2 秒或以上,确保数据正确性:

MX_GPIO_Init();
MX_I2C1_Init();
MX_USART1_UART_Init();
uint32_t CT_data[2]={
   0,0};	// 用于获取温湿度数据
volatile int  c1,t1;
rt_thread_delay(50);
AHT20_Init();
rt_thread_delay(2500);

然后我们需要获取经过 CRC 验证的温湿度数据,这里直接调用驱动函数即可:

while(1)
	{
   
		AHT20_Read_CTdata_crc(CT_data);       //经过CRC校验,读取AHT20的温度和湿度数据    推荐每隔大于1S读一次
		c1 = CT_data[0]*1000/1024/1024;  //计算得到湿度值c1(放大了10倍)
		t1 = CT_data[1]*2000/1024/1024-500;//计算得到温度值t1(放大了10倍)
		printf("正在检测");
		rt_thread_delay(100);
		printf(".");
		rt_thread_delay(100);
		printf(".");
		rt_thread_delay(100);
		printf(".");
		rt_thread_delay(100);
		printf(".");
		rt_thread_delay(100);
		printf(".");
		rt_thread_delay(100);
		printf(".");
		rt_thread_delay(100);
		printf(".");
		rt_thread_delay(100);
		printf(".");
		rt_thread_delay(100);
		printf(".");
		rt_thread_delay(100);
		printf(".");
		printf("\r\n");
		printf("温度:%d%d.%d",t1/100,(t1/10)%10,t1%10);	// 这里需要对温度进行计算后才能得到我们需要的温度值
		printf("湿度:%d%d.%d",c1/100,(c1/10)%10,c1%10); // 这里同样需要对适度进行计算
		printf("\r\n");
		printf("等待");
		rt_thread_delay(100);
		printf(".");
		rt_thread_delay(100);
		printf(".");
		rt_thread_delay(100);
		printf(".");
		rt_thread_delay(100);
		printf(".");
		rt_thread_delay(100);
		printf(".");
		rt_thread_delay(100);
		printf(".");
		rt_thread_delay(100);
		printf(".");
		rt_thread_delay(100);
		printf(".");
		rt_thread_delay(100
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值