零基础STM32单片机编程入门(三十八) 多传感器模块之跌倒检测实战源码

文章目录

    • 一.概要
    • 二.实验原理
    • 三.实验控制流程
    • 四.STM32单片机跌倒监测实验(MPU6050+直流有刷电机+蜂鸣器)
    • 五.CubeMX工程源代码下载
    • 六.实验效果视频
    • 七.小结

一.概要

据统计每年约有 300 万老年人因跌倒受伤而在急诊室接受治疗,每五次跌倒就有一次会造成伤害,例如骨折或头部受伤,每年至少有 300,000 名老年人因髋部骨折住院。
所以跌倒检测系统前景非常广阔,‌可以在家庭环境、‌养老院和医疗机构、‌公共场所等多个领域和场景中发挥重要作用。‌在家庭环境中,‌这种系统可以为老年人提供额外的安全保障,‌一旦发生跌倒,‌系统将立即发送警报给家庭成员或医疗人员,‌以便及时采取措施。‌在养老院和医疗机构中,‌这种系统可以帮助工作人员及时发现老年人的跌倒情况,‌并采取适当的救助措施,‌减少因跌倒而引发的紧急情况。

本文就做了一个简单跌倒检测的系统,采用STM32F103C8T6单片机+MPU6050陀螺仪模块+蜂鸣器报警。用一个小电机来演示跌倒监测效果是否可以。

二.实验原理

硬件连接原理框图如下:
在这里插入图片描述
各传感器模块简介:

MPU6050是一款功能强大的六轴运动跟踪传感器,适用于各类物体加速度与角速度的精确测量,MPU6050主要实现倾斜检测。

直流有刷电机(BDC)在允许范围内,供电即可工作,只需要调整电压即可改变转速,具有良好的调速性能。

蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,当I/O口输入高电平时,蜂鸣器发声。

三.实验控制流程

STM32F103C8T6单片机上电后,驱动直流有刷电机旋转,并时刻监测MPU6050陀螺仪模块采集到的倾斜角度,等到MPU6050检测到倾斜角度过大,单片机停止驱动直流有刷电机,并驱动蜂鸣器报警。

四.STM32单片机跌倒监测实验(MPU6050+直流有刷电机+蜂鸣器)

板子与MPU6050陀螺仪模块用杜邦线连接:
板子G-----模块GND
板子3.3---模块VCC
板子B6---模块SCL
板子B7---模块SDA杜邦线接板子跟蜂鸣器
板子3.3---模块VCC
板子B12---模块I/O
板子G-----模块GND用4根杜邦线把电机模块与开发板相连
板子3.3----模块VCC
板子A0-----模块A-1A
板子A1-----模块A-1B
板子G------模块GND
把四叶螺旋桨插到小型直流电机端口,电机的两根线连接到 L9110 两路电机驱动板的绿端子处(MOTOR A)

在这里插入图片描述

打开STM32CubeMX软件,新建工程
在这里插入图片描述
Part Number处输入STM32F103C8,再双击就创建新的工程
在这里插入图片描述
配置下载口引脚
在这里插入图片描述
配置外部晶振引脚
在这里插入图片描述

配置系统主频
在这里插入图片描述
IIC配置
在这里插入图片描述

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

配置工程文件名,保存路径,KEIL5工程输出方式
在这里插入图片描述
生成工程
在这里插入图片描述
用Keil5打开工程
在这里插入图片描述
添加代码

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

主要程序:

unsigned char t,CleanTime;
uint32_t TimeCounter;
extern void i2c_CfgGpio(void);
short Accel[3];short Gyro [3];short Temp;float AccelData[3];//单位mgfloat GyroData[3];//单位mdpsfloat Angle;
/* USER CODE END 0 */
/* USER CODE END PFP *//* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 *//* USER CODE END 0 *//*** @brief  The application entry point.* @retval int*/
int main(void)
{/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_I2C1_Init();/* USER CODE BEGIN 2 */OLED_Init();			       //初始化OLED  		MPU6050_Init();//MPU6050初始化配置if(MPU6050ReadID() == 0)//读取MPU6050 ID{	while(1);}HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_RESET);//启动风扇HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET);/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */HAL_Delay(100);MPU6050ReadAcc(Accel);	for( int i=0;i<3;i++){if(Accel[i]>=0){AccelData[i]=Accel[i]*2000/32768;}else{AccelData[i]=-(-Accel[i]+1)*2000/32768;}		}if(AccelData[1]<0){OLED_ShowString(40,3,"-");OLED_ShowNum(48,3,-AccelData[1],4,16);//加速度y}else{OLED_ShowNum(48,3,AccelData[1],4,16);//加速度y}if(AccelData[2]<0){OLED_ShowString(80,3,"-");OLED_ShowNum(88,3,-AccelData[2],4,16);//加速度z}else{OLED_ShowNum(88,3,AccelData[2],4,16);//加速度z}Angle = atan2(AccelData[2], AccelData[1])*180/3.14f;//计算倾角,正常Z轴垂直水平地面,角度应该在90度左右if(Angle<=80 || Angle>=100)//倾斜明显,报警,风扇停止转动{HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_SET);//启动风扇HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET);HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_12);//PB12引脚翻转输出}else{HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_RESET);//启动风扇HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET);HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12,GPIO_PIN_RESET);//PB12拉低,报警消除}}	  /* USER CODE END 3 */
}

五.CubeMX工程源代码下载

通过百度网盘分享的文件:39.跌倒监测实验(MPU6050+直流有刷电机+蜂鸣器).rar
链接:https://pan.baidu.com/s/10eVXaiJGxt9BxrGVfhdZpw
提取码:51kr

如果链接失效,可以联系博主给最新链接
程序下载下来之后解压就行

CSDN代码链接

六.实验效果视频

STM32F103C8T6+MPU6050陀螺仪跌倒检测实验

七.小结

跌倒检测实验,能更加深对MPU6050传感器的了解,可以应用到其他各种应用环境。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/403202.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络如何发送一个数据包

网络如何发送一个数据包 网络消息发送就是点一点屏幕。 骚瑞&#xff0c;这一点都不好笑。&#xff08;小品就是我的本质惹&#xff09; 之前我就是会被这个问题搞的不安宁。是怎么知道对方的IP地址的呢&#xff1f;怎么知道对方的MAC呢&#xff1f;世界上计算机有那么多&…

阿里Qwen2开源大模型本地部署及调试全攻略

阿里Qwen2开源大模型本地部署及调试全攻略 #Qwen2系列大模型性能卓越&#xff0c;超越业界知名模型。开源后受到AI开发者关注&#xff0c;支持多种语言&#xff0c;提升多语言理解。在预训练和微调上优化&#xff0c;实现智能水平提升。Qwen2系列模型在各项能力上均领先&#…

python 获取pdf文件中的超链接

pip install pymupdf pip install fitzimport fitz # PyMuPDFdef get_pdf_links(pdf_path):# 打开PDF文件document fitz.open(pdf_path)links []for page_num in range(len(document)):page document[page_num]# 获取当前页面的链接for link in page.get_links():links.app…

WPF自定义控件

控件模板 顾名思义就是在原有的控件上进行模版修改成自己需要的样式 把ProgressBar修改为一个水液面的进度条 <Window x:Class"XH.CustomLesson.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://s…

2024年第三届全国大学生数据分析实践赛A 题

↑ ↑ ↑ ↑ ↑​​​​​​​ ↑​​​​​​​ ↑​​​​​​​ ↑​​​​​​​ ↑​​​​​​​ ↑​​​​​​​ ↑​​​​​​​ ↑​​​​​​​ ↑​​​​​​​ ↑​​​​​​​ ↑ ↑ ↑​​​​​​​ ↑​​​​​​​ ↑​​​​​​​ ↑​​​​​​​ …

【Java学习】方法的引用

所属专栏&#xff1a;Java学习 &#x1f341;1. 方法引用 方法的引用&#xff1a;把已经存在的方法拿来使用&#xff0c;当作函数式接口中抽象方法的方法体 " :: "是方法引用符 方法引用时需要注意&#xff1a; 1. 需要有函数式接口 2. 被引用的方法必须存在 3. …

浅谈SIMD、向量化处理及其在StarRocks中的应用

前言 单指令流多数据流(SIMD)及其衍生出来的向量化处理技术已经有了相当的历史&#xff0c;并且也是高性能数据库、计算引擎、多媒体库等组件的标配利器。笔者在两年多前曾经做过一次有关该主题的内部Geek分享&#xff0c;但可能是由于这个topic离实际研发场景比较远&#xff0…

3:html(CSS):基础语法3

3.1网页布局与id 3.1.1网页布局 在这里将使用<div>分成一个一个的块&#xff0c;然后进行CSS的美化。这里要说一下html是一个前端的代码&#xff0c;但是它写出来的东西单调缺少美感&#xff0c;CSS就是进行美化的&#xff0c;这里我们使用类的概念来美化我们的网站。 …

X-Recon:一款针对Web安全的XSS安全扫描检测工具

关于X-Recon X-Recon是一款功能强大的Web安全扫描与检测工具&#xff0c;该工具能够帮助广大研究人员识别网页端输入数据&#xff0c;并执行XSS扫描任务。 功能介绍 1、子域名发现&#xff1a;检索目标网站的相关子域名并将其整合到白名单中。这些子域名可在抓取过程中使用&am…

Vue+ElementUI技巧分享:创建一个带有进度显示的文件下载和打包组件

在现代前端开发中&#xff0c;用户体验至关重要&#xff0c;尤其是在处理文件下载时。为用户提供实时的下载进度显示和打包功能&#xff0c;不仅能提升用户体验&#xff0c;还能使应用更具专业性。在本文中&#xff0c;我们将创建一个 Vue 组件&#xff0c;用于显示文件下载进度…

与人打交道的七个绝招

与人打交道的七个绝招&#xff0c;学会了让你混得风生水起&#xff01; 一、跟强者打交道&#xff0c;别绕圈子。就事论事&#xff0c;直奔主题&#xff1b; 二、跟没钱的人打交道&#xff0c;就直接告诉他能挣多少钱&#xff1b; 三、跟小人打交道&#xff0c;越虚假越好&…

URP平面阴影合批处理 shadow

闲谈 相信大家在日常工作中发现了一个问题 &#xff0c; urp下虽然可以做到3个Pass 去写我们想要的效果&#xff0c;但是&#xff0c;不能合批&#xff08;不能合批&#xff0c;那不是我们CPU要干冒烟~&#xff01;&#xff09; 好家伙&#xff0c;熊猫老师的偏方来了 &#x…

JavaScript基础(33)_鼠标滚轮滚动事件、键盘事件

鼠标滚轮滚动事件&#xff1a;onwheel 获取鼠标滚轮滚动的方向&#xff1a;wheelDelta 比如&#xff1a;向上滚动&#xff1a;109 &#xff08;所有正值都是向上&#xff09; 向下滚动&#xff1a;-109&#xff08;所有负值都是向下&#xff09; 注意&#xff1a;当…

基于华为atlas下的yolov5+BoT-SORT/ByteTrack煤矿箕斗状态识别大探索

写在前面&#xff1a; 本项目的代码原型基于yolov5yolov8。其中检测模型使用的yolov5&#xff0c;跟踪模型使用的yolov8。 这里说明以下&#xff0c;为什么不整体都选择yolov8呢&#xff0c;v8无疑是比v5优秀的&#xff0c;但是atlas这块经过不断尝试没有过去&#xff0c;所以…

AWS boto3 脚本访问 AWS 资源

AWS boto3 脚本访问 AWS 资源 引言boto3主要功能常见用例安装和基本使用 boto3.Client() 低级客户端基本用法关键参数 boto3.resource() 高级客户端常见参数用法 boto3.resource VS boto3.client相似点不同点总结 关于身份验证凭证隐式身份凭证显式身份验证凭证assuem role如何…

出海笔记精华问答 | 第四期

更新出海问答第四期&#xff0c;希望可以继续帮助大家解决问题哈。 Q1:当stripe把资金全退给客户但是货又发了&#xff0c;这是什么情况&#xff1f; A1: 这种情况一般是stripe不跟你合作了或者发生了争议。 Q2:如何知道stripe回复你的邮件是人工回复还是机器人回复&#xff…

Linux基础入门---安装vmware

&#x1f600;前言 本篇博文是关于Linux基础入门和vmwarel5.5下载&#xff0c;希望你能够喜欢。 &#x1f3e0;个人主页&#xff1a;晨犀主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是晨犀&#xff0c;希望我的文章可以帮助到大家&#xff0c;您的满意是我的动…

Merkle树(Merkle Tree):高效地验证某个数据块是否包含在数据集中

目录 Merkle树(Merkle Tree) 一、基本结构 二、构建过程 三、主要作用 四、应用领域 Merkle树(Merkle Tree) Merkle树(Merkle Tree),也被称为默克尔树或Merkle哈希树,是一种基于哈希的数据结构,主要用于验证大规模数据集的完整性和一致性。它的名字来源于其发明…

大数据技术——实战项目:广告数仓(第七部分)数仓工作流调度实操

目录 第12章 广告数仓全流程调度 12.2 新数据生成 12.2.1 广告监测日志 12.2.2 广告管理平台数据 12.3 工作流调度实操 12.3.1 DolphinScheduler集群模式 12.3.2 DolphinScheduler单机模式 第12章 广告数仓全流程调度 12.1 调度工具Dolphinscheduler DolphinScheduler…

VirtualBox上的Oracle Linux虚拟机安装Docker全流程

1.安装docker依赖 yum install -y yum-utils device-mapper-persistent-data lvm2 2.安装docker仓库 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 生成docker的yum源配置到在 /etc/yum.repos.d/docker-ce.repo 3.安装D…