【单片机毕业设计选题24007】-基于STM32和阿里云的家庭健康数据监测系统

news2025/2/24 13:03:24

系统功能:

本课题设计是基于STM32单片机作为控制主体,通过HX711称重模块,HC-SR04超声波测距模块,红外测温,心率传感器等模块通过I2C或SPI接口与STM32进行通信,并读取传感器输出的身高,体重,心率,体温,血氧,心率,体脂率数据等数据,体脂率采用公式计算,可自行设置阈值超出阈值蜂鸣器发出警告。检测完身体的相关数据后,使用Wi-Fi方式将采集的数据发送到主机设备。而主机设备使用相关软件来接收和显示数据,平台生成历史数据曲线,方便用户直观查看,让用户能够方便地进行数据浏览。

主要功能模块原理图:

电源时钟烧录接口:

单片机和按键输入电路:

传感器采集电路:

资料获取地址

系统主要功能模块代码

初始化代码:

  /* 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 */

    InitVar();


  /* 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_USART1_UART_Init();

  MX_USART2_UART_Init();

  MX_USART3_UART_Init();

  MX_ADC1_Init();

  MX_TIM2_Init();

  /* USER CODE BEGIN 2 */

//TIM2通道1启动上升沿捕获

    __HAL_TIM_SET_CAPTUREPOLARITY(&htim2, TIM_CHANNEL_1, TIM_INPUTCHANNELPOLARITY_RISING);        

    HAL_TIM_IC_Start_IT(&htim2, TIM_CHANNEL_1);

    HAL_Delay(100);

/*

//uart1打开接收中断

    HAL_UART_Receive_IT(&huart1, (uint8_t*)&uart1RecBuff, 1); 

*/

//uart2打开接收中断

    HAL_UART_Receive_IT(&huart2, (uint8_t*)&uart2RecBuff, 1);

//uart3打开接收中断

    HAL_UART_Receive_IT(&huart3, (uint8_t*)&uart3RecBuff, 1);

//初始化显示

    InitOled();

    InitOledDisp();

    InitHX711();

//初始化ESP8266

    ESP8266_Init(); 


  /* USER CODE END 2 */

系统控制代码:

//系统信息更新

void SystemControl(void)

{

    static uint8_t updateCnt = 0;

   

    updateCnt++;   

    if(updateCnt>=SYSTEM_UPDATE_INTER)

    {

        updateCnt = 0;

        Aliyun_SendData();

    }

    getPressVal = GetPressVal();   

    getWeightVal = HX711GetWeight();

    getBMIVal = GetBMIVal();

    Hcsr04Start();   

//    SendToLU90614();

}

阿里云上报数据:

//====================================================================

//      函数名称:     Aliyun_SendData

//      函数功能:     发送数据

//      入口参数:     需要发送的数据

//      返回参数:     无

//      说明:             

//====================================================================

void Aliyun_SendData(void)

{

    char pubTopic[500];


    sprintf(pubTopic,"AT+MQTTPUB=0,\""PUB_TOPIC"\",\""JSON_FORMAT"\",0,0\r\n", getHeightVal, getWeightVal, getPressVal, getRateVal, getOxygenVal, getTempVal, getBMIVal);

         Usart2_SendString((unsigned char *)pubTopic, strlen((const char *)pubTopic));

}

此设计提供的资料包含原理图PCB(包含PDF,AD,立创EDA三个版本),源代码,系统框图,主程序流程图,物料清单(包含使用到的器件手册),功能操作说明等。

各功能模块资料:

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一年前 LLM AGI 碎片化思考与回顾系列④ · 从System2→Post-training的疑虑和思考

阅读提示: 本篇系列内容的是建立于自己过去一年在以LLM为代表的AIGC快速发展浪潮中结合学术界与产业界创新与进展的一些碎片化思考并记录最终沉淀完成,在内容上,与不久前刚刚完稿的那篇10万字文章 「融合RL与LLM思想,探寻世界模型…

B+索引的分裂及选择率和索引基数

1、B树索引的分裂 B树索引页的分裂并不总是从页的中间记录开始,这样可能会导致页空间的浪费。 例子 比如下面这个记录: 1、2、3、4、5、6、7、8、9 由于插入是以自增的顺序进行的,若这时插入第10条记录然后进行页的分裂操作,那…

QChar转换为Unicode,判断数字、字母、符号、标点

实现 QChar转换为Unicode,判断数字、字母、符号、标点等 #include "widget.h" #include "ui_widget.h" #include "QMessageBox"widget::widget(QWidget *parent): QWidget(parent), ui(new Ui::widget) {ui->setupUi(this); }widg…

Java 网站开发入门指南:如何用java写一个网站

Java 网站开发入门指南:如何用java写一个网站 Java 作为一门强大的编程语言,在网站开发领域也占据着重要地位。虽然现在 Python、JavaScript 等语言在网站开发中越来越流行,但 Java 凭借其稳定性、可扩展性和丰富的生态系统,仍然…

TF-IDF算法详细介绍

TF-IDF(Term Frequency-Inverse Document Frequency)是一种用于信息检索和文本挖掘的统计方法,旨在评估一个词在文档集合或语料库中的重要性。它是计算机科学和文本分析中最常用的特征提取技术之一。本文将详细介绍TF-IDF的基本概念、计算方法…

CentOS7.9 安装jdk17

切换到目录 /usr/local/src cd /usr/local/src下载压缩包 wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz解压 tar -zxvf jdk-17_linux-x64_bin.tar.gz添加环境变量 vim /etc/profile重加载环境变量 export JAVA_HOME/usr/local/usr/jdk-1…

AI影像时代来临,联发科天玑以专业无畏精神重新定义手机专业影像

近期,联发科与Discovery探索频道联合举办了一场以“越极境,见芯境”为主题的天玑影像展,活动地点位于我国桂林阳朔。活动现场展示了阳朔壮美山水的画卷,以及救援队员在岩壁上进行训练的极限瞬间。令人意想不到的是,这些…

DockerHub无法访问,国内镜像拉取迂回解决方案

无法访问后,主要存在以下几个问题: 无法进行镜像的搜索无法查看镜像相关的使用说明无法直接拉取镜像 对于第二点,目前没啥解决思路,主要针对第一点和第三点。 解决无法搜索镜像 目前仅可以解决部分问题,在知道镜像名…

基于 Redis 实现分布式缓存

一、单节点 Redis 的问题 1.1 存在的问题 1、数据丢失问题:Redis 是内存存储,服务重启可能会丢失数据。 2、并发能力问题:单节点 Redis 并发能力虽然不错,但也无法满足如 618 这样的高并发场景。 3、故障恢复问题:如果…

小白跟做江科大32单片机之定时器

原理部分 1. 计数器每遇到一个上升沿就会计数值1,。 72MHZ72000000 72000000/65536/655360.0167638063430786132812559.652323555555554 (s) 2. 3. 计数时钟每来一个上升沿,计数值1,自动运行。如果计数值与存储在自动重装载寄存器中的值相等&#…

2024 年最新 Python 基于百度智能云实现短语音识别、语音合成详细教程

百度智能云语音识别 采用国际领先的流式端到端语音语言一体化建模算法,将语音快速准确识别为文字,支持手机应用语音交互、语音内容分析、机器人对话等场景。百度短语音识别可以将 60 秒以下的音频识别为文字。适用于语音对话、语音控制、语音输入等场景…

C++ 32 之 静态成员函数

#include <iostream> #include <string> using namespace std;// 特点: // 1.在编译阶段就分配了内存空间 // 2.类内声明&#xff0c;在类外进行初始化 // 3.所有对象共享一份静态成员数据 class Students02{ public:int s_c;static int s_d;// 静态成员函数&#…

重装了mysql,然后安装为服务时,net start 启动一直报错,MySQL服务无法启动的解决

之前写过一篇关于安装mysql的文章&#xff0c;按上面的处理&#xff0c;基本上是可以的。 今天换了下目录&#xff0c;重新安装&#xff0c;一直报错。 然后我们来看一下问题&#xff1a; mysqld -console 这里的目录是有问题的&#xff0c;设置的是&#xff1a;datadird:\to…

如何完美解决升级 IntelliJ IDEA 最新版之后遇到 Git 记住密码功能失效的问题

&#x1f6e0;️ 如何完美解决升级 IntelliJ IDEA 最新版之后遇到 Git 记住密码功能失效的问题 摘要 在这篇文章中&#xff0c;我们将详细探讨如何解决在升级到 IntelliJ IDEA 最新版&#xff08;2024.1.3 Ultimate Edition&#xff09;后遇到的 Git 记住密码功能失效的问题。…

简单Mesh多线程合并,使用什么库性能更高

1&#xff09;简单Mesh多线程合并&#xff0c;使用什么库性能更高 2&#xff09;Unity Semaphore.WaitForSignal耗时高 3&#xff09;VS编辑的C#代码注释的中文部分乱码 4&#xff09;变量IntPtr m_cachePtr切换线程后变空 这是第389篇UWA技术知识分享的推送&#xff0c;精选了…

【github】项目的代码仓库重命名

问题 有时候&#xff0c;我们先创建了远端项目仓库&#xff0c;然后就把相关code上传到远端项目仓库。 可能需要结合实际情况对远端项目仓库进行重命名。 当前仓库名称v_ttc&#xff0c;如何将他修改成v_datejs 操作步骤 1、在 GitHub.com 上&#xff0c;导航到存储库的主页…

个人关于Leecode 49题见解(保姆级)

题目&#xff1a; 49. 字母异位词分组 中等 相关标签 相关企业 给你一个字符串数组&#xff0c;请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 输入: strs ["eat", "…

边界内聚和耦合

内聚 功能内聚 功能内聚是软件工程中一个重要的概念&#xff0c;它描述了一个模块内部各个元素之间的紧密程度。一个具有高功能内聚的模块意味着其内部的各个组件都共同完成一个具体的、明确的功能&#xff0c;并且这些组件之间的联系不是偶然的&#xff0c;而是因为它们共同服…

QT打包(windows linux)封包 完整图文版

目录 简介: 一. for windows 1.首先下载组件 2.开始构建Release版本. 3.然后点击构建 4.在文件夹内直接点击exe文件,会报下面的错误,因为缺少dll连接; 5.需要把这个exe单独复制到一个文件夹内, 6.先cd到单独exe所在的文件夹; cd 文件路径 7.然后运行 windeployqt 文…

渗透测试和红蓝对抗是什么?二者之间有何区别?

在网络安全这个庞大的体系中&#xff0c;渗透测试、红蓝对抗是比较常见的专业名词&#xff0c;承担着非常重要的作用&#xff0c;那么什么是渗透测试、红蓝对抗?红蓝对抗和渗透测试有什么区别?小编通过这篇文章为大家介绍一下。 渗透测试 渗透测试&#xff0c;是通过模拟黑…