首页 > 其他分享 >基于STM32单片机的OneNet物联网云平台血压心率体温摔倒检测系统

基于STM32单片机的OneNet物联网云平台血压心率体温摔倒检测系统

时间:2024-09-25 16:22:39浏览次数:3  
标签:OneNet ESP8266 STM32 单片机 电路 InitStructure GPIO I2C



基于STM32单片机的OneNet物联网云平台血压心率体温摔倒检测系统

  • 0、毕业设计选题原则说明(重点)
  • 1、项目简介
  • 1.1、系统功能
  • 1.2、演示视频
  • 2、部分电路设计
  • 2.1、STM32单片机核心板电路设计
  • 2.2、ESP8266 WIFI电路设计
  • 2.3、MKB0805血压心率检测电路设计
  • 2.4、ADXL345摔倒检测电路设计
  • 2.5、DS18B20温度采集电路
  • 3、单片机代码展示
  • 3.1、OLED初始化
  • 3.2、ESP8266 WIFI模块初始化
  • 3.3、向OneNET云平台发送数据


0、毕业设计选题原则说明(重点)

  • 选题之前,同学们要弄明白一件事情,做毕业设计是干什么用的!
  • 这里我告诉大家,毕业设计对于你来说,不是让你去搞研究,掌握运用所学知识的,也不是让你去比谁做的毕业设计多么牛逼,多么厉害。
  • 说白点,它的作用就是一个,让你顺利毕业,能够拿到学位证,毕业证而已!!!
  • 当你明白这一点后,作毕业设计的要求就是在满足老师的要求后,越简单越好,这样不但容易去做,而且你自己也容易去理解,掌握,同样也能花最少的钱!!!
  • 满足老师的要求,这个没办法,毕竟他是决定你是否能通过答辩的人。
  • 每年都有很多同学找到我的时候,后悔当初为什么要把功能写的那么复杂,后悔没有提前找我咨询一下!所以在这里提醒同学们,提交开题报告之前一定要多想想,不要自己随便写一堆提交上去!!!

1、项目简介

  • 系统构成:本设计由STM32单片机电路+ADXL345加速度传感器电路+按键电路+蜂鸣器报警电路+ 温度检测电路+oled显示电路+wifi电路+mkb0805心率血压检测电路+电源电路组成。

1.1、系统功能

  • 功能介绍:
  • 1、监护系统一旦倾角传感器检测到角度变化即摔倒,蜂鸣器报警,并且将报警信息通过WIFI模块上传给中国移动物联网云平台。
  • 2、监护系统可以测量人体的温度、血压、心率,并将测量结果显示在OLED液晶显示屏与中国移动物联网云平台上。
  • 3、舒张压正常范围通常是60-90毫米汞柱,收缩压通常在90-140毫米汞柱,心率是在60-100次每分钟左右,当检测结果超出以上范围会进行蜂鸣器报警并将报警信息上传给中国移动物联网云平台。
  • 4、通过按键可以设置温度的报警阈值,当温度超过设置的报警阈值时,使用蜂鸣器进行报警,并将报警结果上传给中国移动物联网云平台。

1.2、演示视频

2、部分电路设计

2.1、STM32单片机核心板电路设计

  • 基于 ARM Cortex-M3内核的STM32F1系列单片机属于主流STM32单片机,其中增强型STM32F103子系列单片机的CPU 主频高达72MHz,片内Flash容量高达1MB,芯片引脚数量多达144个,有 QFN、LQFP、CSP、BGA 等多种芯片封装形式,并具有多种片内外设、USB接口和CAN 接口。根据STM32F103单片机片内Flash容量的不同,ST 公司将其分为小容量(16-32KB)、中等容量(64-128KB)、大容量(256KB-1MB)3种。
  • 电源电路:为单片机提供稳定的工作电压,通常采用3.3V电源供电。电源电路的设计要保证单片机在不同工作条件下都能获得稳定的电压输出,以确保单片机的正常工作。
  • 晶振电路:提供单片机工作所需的时钟信号。晶振电路通过晶振和电容组成,为单片机提供稳定的工作脉冲,确保单片机的定时和同步需求。
  • 复位电路:实现单片机的复位功能,类似于电脑的重启。复位电路通过电容和电阻的配合,实现单片机在上电启动时的自动复位,以及通过手动按键实现复位功能,保证单片机在程序跑飞或异常情况下能够重新开始执行程序。

STM32单片机是一种功能强大、易于使用、灵活且可靠的32位微控制器,基于ARM Cortex™-M内核。其主要功能特点包括:

  • 高性能和低功耗:STM32系列单片机提供多种内核选择,如Cortex-M0、Cortex-M3、Cortex-M4等,满足不同应用场景对性能的需求,同时保持低功耗特性。
  • 多种通信和外设接口:STM32单片机具备广泛的通信和外设接口,如I2C、SPI、USART、USB等,便于开发者实现各种复杂功能。
  • 易于开发和调试:STM32单片机提供了丰富的软件和硬件工具,如HAL库、CubeMX等,帮助开发者快速创建和调试嵌入式系统。
  • 高集成度和设计灵活性:STM32系列单片机全系列产品共用大部分引脚、软件和外设,优异的兼容性为开发人员带来最大的设计灵活性

单片机最小系统原理图如下图所示:

基于STM32单片机的OneNet物联网云平台血压心率体温摔倒检测系统_stm32


实物图:

基于STM32单片机的OneNet物联网云平台血压心率体温摔倒检测系统_物联网_02


2.2、ESP8266 WIFI电路设计

  • ESP8266 是一个非常强大的 WIFI 模块,可以利用串口与单片机进行通讯,从而编程实现控制ESP8266。利用 ESP8266 可以访问一些 API,获取天气信息或者完成网络授时,也可以连接云平台进行开发。不过因为是串口传输,速度较慢,不能用来传输图像、视频这些大容量的数据,但是传些传感器数据还是绰绰有余的。
  • 本系统用到的是 ESP-01S,使用该模块连接中国移动物联网云平台
  • 其具体电路原理图如下图所示:
  • 基于STM32单片机的OneNet物联网云平台血压心率体温摔倒检测系统_单片机_03

  • 实物图如下:
  • 基于STM32单片机的OneNet物联网云平台血压心率体温摔倒检测系统_单片机_04

2.3、MKB0805血压心率检测电路设计

  • 该心率血压监测方案主要由1 颗 YK1801 脉搏传感器芯片、1 颗 HR6707 脉搏芯片 、1 颗 HR6816增益芯片 和 1 颗 SFB9712 算法芯片组成。
  • 脉搏传感器芯片采用光电式容积脉搏波描记( PPG )的方式感应人体的 脉搏信息并加以提取,通过模拟 端芯片 HR607+HR6816 和算法芯片 SFB9712 输出血压、心率等串口信号。
  • 该心率血压监测方案可实现功能:心率血压采集计算、脉搏波和心电波形输出、人体佩戴状态识别、人体体表温度监测(选装)、 HR V PNN50 (选装)、 血压跟踪监测等人体健康指标。
  • 血压方案原理:主要通过PPG 特征认知、跟踪对比监测用户的血压变化趋势。
  • 其具体电路原理图如下图所示:

基于STM32单片机的OneNet物联网云平台血压心率体温摔倒检测系统_stm32_05

2.4、ADXL345摔倒检测电路设计

  • 本设计选择倾角传感器ADXL345模块实时检测相关的状态信息。ADXL345是一款小而薄的超低功耗3轴加速度计,分辨率高(13位),测量范围达± 16g。数字输出数据为16位二进制补码格式,可通过SPI(3线或4线)或I2C数字接口访问。ADXL345非常适合移动设备应用。
  • 它可以在倾斜检测应用中测量静态重力加速度,还可以测量运动或冲击导致的动态加速度。其高分辨率(3.9mg/LSB),能够测量不到1.0°的倾斜角度变化。该器件提供多种特殊检测功能。活动和非活动检测功能通过比较任意轴上的加速度与用户设置的阈值来检测有无运动发生。

其具体电路原理图如下图所示:

基于STM32单片机的OneNet物联网云平台血压心率体温摔倒检测系统_stm32_06


实物图:

基于STM32单片机的OneNet物联网云平台血压心率体温摔倒检测系统_物联网_07


2.5、DS18B20温度采集电路

  • DS18B20是常用的数字温度传感器,其输出的是数字信号,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式,型号多种多样,有LTM8877,LTM8874等等。
  • DS18B20温度传感器可编程的分辨率为9~12位,温度转换为12位数字格式最大值为750毫秒,用户可定义的非易失性温度报警设置,应用范围包括恒温控制、工业系统、消费电子产品温度计、或任何热敏感系统。试验证明DS18B20温度传感器满足本设计要求。
  • DS18B20温度传感器封装一般有2种,使用上都是一样的。可以根据使用环境随意选择。第一种是直接是裸露的芯片,主要用于空气温度检测。第2种是不锈钢钢管封装好的,防水,一般用于水温灯液体温度检测。

实物图如下:


基于STM32单片机的OneNet物联网云平台血压心率体温摔倒检测系统_单片机_08

其具体电路原理图如下图所示:

基于STM32单片机的OneNet物联网云平台血压心率体温摔倒检测系统_单片机_09


3、单片机代码展示

3.1、OLED初始化

static void OLED_I2C_Configuration(void)
{
	I2C_InitTypeDef  I2C_InitStructure;
	GPIO_InitTypeDef  GPIO_InitStructure; 

	RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1,ENABLE);
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);

	/*STM32F103C8T6芯片的硬件I2C: PB6 -- SCL; PB7 -- SDA */
	GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_6 | GPIO_Pin_7;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD;//I2C必须开漏输出
	GPIO_Init(GPIOB, &GPIO_InitStructure);

	I2C_DeInit(I2C1);//使用I2C1
	I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;
	I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2;
	I2C_InitStructure.I2C_OwnAddress1 = 0x30;//主机的I2C地址,随便写的
	I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;
	I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
	I2C_InitStructure.I2C_ClockSpeed = 400000;//400K

	I2C_Cmd(I2C1, ENABLE);
	I2C_Init(I2C1, &I2C_InitStructure);
}

3.2、ESP8266 WIFI模块初始化

void ESP8266_Init(void)
{
	
	GPIO_InitTypeDef GPIO_Initure;
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

	//ESP8266复位引脚
	GPIO_Initure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_Initure.GPIO_Pin = GPIO_Pin_1;					//GPIOC14-复位
	GPIO_Initure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOA, &GPIO_Initure);
	
	GPIO_WriteBit(GPIOA, GPIO_Pin_1, Bit_RESET);
	delay_ms(250);
	GPIO_WriteBit(GPIOA, GPIO_Pin_1, Bit_SET);
	delay_ms(500);
	
	ESP8266_Clear();
	
	UsartPrintf(USART_DEBUG, "1. AT\r\n");
	while(ESP8266_SendCmd("AT\r\n", "OK"))
		delay_ms(500);
	
	UsartPrintf(USART_DEBUG, "2. CWMODE\r\n");
	while(ESP8266_SendCmd("AT+CWMODE=1\r\n", "OK"))
		delay_ms(500);
	
	UsartPrintf(USART_DEBUG, "3. AT+CWDHCP\r\n");
	while(ESP8266_SendCmd("AT+CWDHCP=1,1\r\n", "OK"))
		delay_ms(500);
	
	UsartPrintf(USART_DEBUG, "4. CWJAP\r\n");
	while(ESP8266_SendCmd(ESP8266_WIFI_INFO, "GOT IP"))
		delay_ms(500);
	
	UsartPrintf(USART_DEBUG, "5. ESP8266 Init OK\r\n");
	
}

3.3、向OneNET云平台发送数据

void OneNet_SendData(void)
{
	
	MQTT_PACKET_STRUCTURE mqttPacket = {NULL, 0, 0, 0};												//协议包
	
	char buf[ONENET_SEND_BUF_SIZE];
	
	short body_len = 0, i = 0;
	
	UsartPrintf(USART_DEBUG, "Tips:	OneNet_SendData-MQTT\r\n");
	
	memset(buf, 0, sizeof(buf));
	
	body_len = OneNet_FillBuf(buf);																	//获取当前需要发送的数据流的总长度
	
	if(body_len)
	{
		if(MQTT_PacketSaveData(PROID, DEVICE_NAME, body_len, NULL, &mqttPacket) == 0)				//封包
		{
			for(; i < body_len; i++)
				mqttPacket._data[mqttPacket._len++] = buf[i];
			
			ESP8266_SendData(mqttPacket._data, mqttPacket._len);									//上传数据到平台
			UsartPrintf(USART_DEBUG, "Send %d Bytes\r\n", mqttPacket._len);
			
			MQTT_DeleteBuffer(&mqttPacket);															//删包
		}
		else
			UsartPrintf(USART_DEBUG, "WARN:	EDP_NewBuffer Failed\r\n");
	}
	
}


标签:OneNet,ESP8266,STM32,单片机,电路,InitStructure,GPIO,I2C
From: https://blog.51cto.com/u_14938734/12110575

相关文章

  • 基于STM32单片机的OPENMV颜色识别小球追踪系统设计
    基于STM32单片机的OPENMV颜色识别小球追踪系统设计0、毕业设计选题原则说明(重点)1、项目简介1.1、系统功能1.2、演示视频2、部分电路设计2.1、STM32单片机核心板电路设计2.2、openmv使用说明2.3、stm32与openmv通信电路设计2.4、OLED液晶显示电路设计2.5、二维云台控制电路3、单片......
  • 基于STM32单片机的声音压力红外检测OneNET云平台防盗设计
    基于STM32单片机的声音压力红外检测OneNET云平台防盗设计0、毕业设计选题原则说明(重点)1、项目简介1.1系统功能1.2演示视频2、部分电路设计2.1STM32单片机核心板电路设计2.2HX711压力重力检测电路设计2.3ESP8266WIFI无线通信电路设计2.4、声音检测电路设计3、单片机代码展示3......
  • 嵌入式学习路线——2没有必要从51单片机起步了
    往期文章:1首先搞清嵌入式是什么、学了有什么用嵌入式适合哪些人学本专业的学生主要是电子类的学生,比如电子信息工程、通信工程、自动化、机械电子工程、仪器仪表等专业的学生,本人就是电子信息工程专业。计算机科学、软件工程之类的也可以学,但是这些偏纯软件方向,可能去BAT......
  • 基于单片机设计的自动门控制系统
    一、前言自动门控制系统是一种智能化的应用,能够根据人体接近信号自动完成门的打开和关闭操作。在传统的门控系统中,通常需要人手动进行门的开启和关闭,不仅费时费力,还不够智能高效。本项目采用了STC89C52作为主控芯片,并结合红外热释电模块和28BYJ-48步进电机,实现了门的自动打开和关闭......
  • STM32CubeMX+usart+DMA+Modbus从机
    前言单片机型号STM32f103zet6使用USART1串口来实现DMA收发使用DMA1通道5,来传输USART1接收的数据使用DMA1通道4,来传输USART1发送的数据实现了Modbus从机协议(03和06功能)1.准备工作modbuspoll和modbusslave模拟软件下载链接:https://pan.baidu.com/s/1cX8HC-rm3gsM......
  • H7-TOOL脱机烧录增加国产3PEAK混合信号单片机TPS32和富芮坤FR8008,FR8003和FR2012支持
    支持单路,1拖4和1拖16脱机烧录3PEAKS思瑞浦混合信号单片机TPS32M支持1、在线烧录,脱机烧录均正常。2、注意事项:推荐使用整片擦除。在线烧录:脱机烧录:接线效果:富芮坤FR8008x支持,支持在线烧录和脱机烧录在线烧录:脱机烧录:接线效果:富芮坤FR8003支持,支持在线烧录和脱机烧......
  • 23 基于51单片机的自动清洗系统(自动洗衣机)
    目录一、主要功能二、硬件资源三、程序编程四、实现现象一、主要功能基于AT89C52单片机,采用DS18B20温度传感器检测温度,通过LCD1602显示屏显示,并且按键可以加减温度的上限;点击清洗按键后,倒计时1分钟,电机正转20s,反转20s,直到倒计时结束停止,蜂鸣器报警。点击脱水按键......
  • STM32驱动1.3寸(0.96寸)OLED显示屏 #基于HAL库#软件IIC通讯
    前言  本文用作记录基于HAL库搭建起来的软件IIC驱动OLED显示器。一、软件IIC原理  只需理解两点:1.IIC是一种通信总线,物理层面用于单片机与OLED的通信。2.软件IIC即模拟硬件IIC的引脚时序,可以灵活配置引脚。IC物理接口:IIC串行总线有两根信号线,一根是双向的数据线SDA,另......
  • [STM32]USB转NRF24L01
    分享一个简单的小设计,一个由STM32F103C8T6编写的USB转2.4g无线模块,有趣的是c8t6可以运行lvgl。整板成本只要17块左右(STM32F103C8T6+NRF24L01+ST7735)。整体十分小巧能够运行裁切后的lvgl6.0,但是加上lvgl后内存非常紧张  ......
  • 单片机毕业设计——基于STM32单片机的汽车智能座舱控制系统 要怎么设计与实现呢(全程可
    基于STM32单片机的汽车智能座舱控制系统是一个集成了多种功能以提升驾驶体验和安全性的系统。以下是设计和实现这个系统的步骤:一、系统规划与设计需求分析:确定系统需要实现的功能,如温湿度检测、酒驾检测、语音控制、Wi-Fi通信和信息显示。硬件选择:选择合适的传感器(温湿度传......