当前位置:   article > 正文

基于嵌入式物联网技术的智慧病房方案设计_基于单片机的智能病房管理系统

基于单片机的智能病房管理系统


前言

随着社会经济的发展和城市化的加速发展,物联网技术已经逐步进入各个领域,在许多方面都有着重要的作用。而近些年来,物联网技术也逐渐的进入了医疗领域。其中智慧病房作为智慧医疗的细分领域,以辅助医疗供给为目标,通过打造院内物联网,让患者与医护人员的互动,通过物联医疗设备紧密联系。这同时也是医院信息化程度提升的一个标志。通过病房的实体设施在线化与医疗信息系统数字化联动,医护人员不用守在病患身边,也能提供实时服务。为医护人员减负,利用物联网提升医疗服务质量,改善医患关系。
因此,设计基于嵌入式物联网技术的智慧病房,能很好的为医生和患者提供帮助。


一、系统设计要求

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

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

二、系统硬件设计

智慧病房的设计的硬件主要由以下五部分构成,即单片机控制模块、AHT20模块、心率脉搏采集模块、通信模块和上位机。单片机控制模块负责对整体数据进行处理,并且根据指令对系统消息进行处理;AHT20模块负责接收收集温湿度信息;MOBUS通信模块负责将信息发给PC机;MAX30102模块负责采集病人的信息。
系统框图
在这里插入图片描述

单片机控制电路

系统单片机采用了STM32F103。 STM32F103具有功耗低,性能高的优点。STM32F1系列属于中低端的32位ARM微控制器,该系列芯片是意法半导体(ST)公司出品,其内核是Cortex-M3。芯片集成定时器Timer,CAN,ADC,SPI,I2C,USB,UART等多种外设功能。存储器有从16K到512K字节的闪存程序存储器。而且内部有着睡眠、停机和待机模式。满足了防丟失器对读写速度和功耗的要求。
在这里插入图片描述

AHT20模块

AHT20是国内奥松生成的I2C接口的MEMS温湿度传感器,ADC位数为20Bit,具有体积小、精度高、成本低等优点。AHT20 配有一个全新设计的 ASIC专用芯片、一个经过改进的MEMS半导体电容式湿度传感元件和一个标准的片上温度传感元件,其性能已经大大提升甚至超出了前一代传感器的可靠性水平,新一代温湿度传感器,经过改进使其在恶劣环境下的性能更稳定。

AHT20原理图
在这里插入图片描述

在这里插入图片描述

心率脉搏采集模块

MAX30102是一个集成的脉搏血氧仪和心率监测仪生物传感器的模块(芯片)。它集成了一个660nm红光LED、880nm红外光LED、光电检测器、光器件,以及带环境光抑制的低噪声电子电路。可通过软件关断模块,待机电流为零,实现电源始终维持供电状态,可运用于低功耗产品中。

MAX30102采用一个1.8V电源和一个独立的3.3V用于内部LED的电源,标准的I2C兼容的通信接口。市面很多都将MAX30102芯片集成在一个PCB模块上,内部增加一个1.8V和3.3V LDO稳压电路,可对模块单独供5.0V电源,方便开发者进行开发。

在这里插入图片描述

引脚图
在这里插入图片描述
芯片内部有3.3V-5.0V的LED电源和1.8V的逻辑电源,所以模块带有两路稳压电路,将5V电源分别转化为3.3V和1.8V;由于LED驱动电源的供电范围为3.3V-5.0V,3.3V稳压电路可省去。
由于MAX30102的逻辑电路的IIC通信电平为1.8V,这与我们常用的51单片机和STM32单片机的引脚电平不匹配。
这里有个解决方法,因为MAX30102的SDA、SCL、INT引脚为开漏,可以将模块上的R1、R2、R3电阻去掉,对于51单片机来说,在SDA、SCL、INT引脚上分别加一个4.7-10k电阻上拉至5V;对于STM32单片机,只需要将相应的控制引脚配置为上拉模式即可。

模块只需要接上5V电源,SDA、SCL、INT引脚与单片机连接即可;IRD、RD一般不接,以STM32单片机接线为例(单片机采用模拟IIC的控制方式)

在这里插入图片描述

MOBUS通信模块

max485是美信(maxim)推出的一款常用rs485转换器。其中5脚和8脚是引脚,6脚和7脚就是485通信中的a和b两个引脚,而1脚和4脚分别接到我们单片机的rxd和txd引脚上,直接使用单片机uart进行数据接收和发送。而2脚和3脚就是方向引脚了,其中2脚是低电平使能接收器,3脚是高电平使能输出驱动器。我们把这两个引脚连到一起,平时不发送数据的时候,保持这两个引脚是低电平,让max485处于接收状态,当需要发送数据的时候,把这个引脚拉高,发送数据,发送完毕后再拉低这个引脚就可以了。为了提高rs485的抗干扰性能,需要在靠近max485的a和b引脚之间并接一个电阻,这个电阻阻值从100欧到1k都可以。

在这里插入图片描述

三、系统功能分析与STM32F103基本配置

根据分析我们需要使用如下几种功能:

1.使用 I2C 读取 AHT20 模块

2.TIM 定时器与 PWM 呼吸灯

3.按键信息接收与消抖

4.UART 转 485 接口与 modbus 通信

5.MAX30102 模块心率与血氧测量

基本配置如下

RCC 配置
在这里插入图片描述

SYS 配置
在这里插入图片描述

USART1 与 DMA 配置
在这里插入图片描述在这里插入图片描述

I2C 配置
在这里插入图片描述

TIM3 配置
在这里插入图片描述

DMA 配置
在这里插入图片描述

TIM2 与 PWM 配置
在这里插入图片描述

NVIC 配置
在这里插入图片描述

GPIO 配置
在这里插入图片描述

时钟配置
在这里插入图片描述

引脚配置
在这里插入图片描述

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

外部按钮配置

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

四 主要代码设计

温湿度获取代码设计

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

#include "AHT20.h"
  • 1

然后我们需要在进程中对温湿度传感器进行初始化,这里在初始化之后,不能立即获取温湿度,需要等待 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);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

然后我们需要获取经过 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(".")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/424795
推荐阅读
相关标签
  

闽ICP备14008679号