物联网开发_物联网是不是一种骗局
物联网期末大作业—睡眠质量检测系统目录物联网期末大作业—睡眠质量检测系统前言一、项目介绍 项目背景项目构思二、系统设计 系统概述设计思路设计草图三、硬件设计 硬件模块介绍硬件系统的Fritzing模型图四、软件设计 获取睡眠环境状况获取血氧浓度和心跳频率后端设计移动端数据传输五、使用说明 实物图展示操作流程六、系统总结总结前言
本学期的物联网课程进入了尾声,又到了紧张刺激的熬夜努力创造奇迹时刻(咳咳那是上学期) 这次我和我的组员没有熬夜,从构思到实现花费了一个星期,如果要换算的话,两个通宵之夜应该绰绰有余了嘿嘿 上学期的嵌入式大作业没有将它变成博客的形式记录下来,属实比较遗憾(打算寒假看看有没有时间整理一下) 这次的物联网大作业是一个睡眠质量检测系统,由于老师给的模块实在是少到可怜【老师限制我发挥了嘿嘿开玩笑】 闲谈就到这吧,文档型成果物和代码什么的我放文末了【自取吧】 【文档型成果物:项目实验报告+项目概述ppt+项目演示视频】
随着社会的不断发展,人民生活水平不断提高,同时现代人生活压力也逐渐变大,众多的琐事使人们一整天都投入到工作之中,从而导致常常有人受到熬夜、失眠以及易醒等睡眠问题的困扰。而一个人的睡眠质量不仅关乎第二天的工作学习情况,同时也会对生理和心理健康产生极大的影响。因此睡眠问题值得每一个人重视。
要做到有针对性的预防和控制睡眠问题,到医疗机构做一次全面专业的睡眠检测当然是效果最佳的做法。但是受限于费用和时间成本,大多数人所需要的还是能够提供一些日常睡眠数据监测和提供睡眠建议的服务。
项目构思通过将多种传感器嵌入枕头或置于床头,实现对使用者夜间睡眠过程中的体态、鼾声进行监测。经过后台处理分析后,用户可通过手机查看分析报告。可用于受睡眠问题困扰人士的日常使用或者养老中心照料老人等场景。
硬件需求

注:图片是之前的构思,由于老师没给我惯性和压力传感器,在本次实验中仅仅用了声音传感器和血氧心率传感器
二、系统设计系统概述本项目旨在基于Arduino和NodeMcu,模拟开发一个简易的睡眠质量检测系统。用户在晚上睡眠时,将其放置在枕边,便可以测出昨夜自身的睡眠质量。用户可以在系统的移动端查看昨夜的睡眠质量的相关数据。
该系统主要功能如下:
人体心率检测人体血氧检测睡眠环境检测设计思路(1)睡眠质量检测系统硬件设计:

功能
硬件模块
实现思路
睡眠环境检测
SoundSensor (LM386)
声音检测模块(LM386)检测出当前环境中的声音信号,根据声音的振幅来判断当前环境是处于安静还是吵闹的状态。
人体心率检测、 人体血氧检测
血氧心率检测模块 (MAX30100)
血氧心率检测模块(MAX30100)通过红外光LED扫描人体组织来获取透光率,将透光率转换为电信号,加入计算后得出当前状态下人的血氧浓度和心跳频率。
(2)睡眠质量检测系统软件设计:

功能
实现思路
睡眠质量评估
根据睡眠质量检测系统的硬件设计,我们可以获取到对应时间段内用户睡眠的环境状态,血氧浓度和心跳频率。将三类数据与科学状态下正常的数据进行对比评估,最后按照我们自己编写的睡眠质量评估算法来进行分数的计算。
血氧浓度状况
血氧心率检测模块(MAX30100)通过红外光LED扫描人体组织来获取透光率,将透光率转换为电信号,加入计算后得出当前状态下人的血氧浓度和心跳频率。
助眠模块
移动端附加的助眠模块。设立助眠音乐和助眠教程,来提高用户的睡眠质量。
(3)睡眠质量检测系统流程图:

硬件设计图

移动端设计图

(1)MAX30100 心率血氧传感器

端口连接:
引脚号
连接Arduino开发板
GND
GND
VIN
3.3V或5V
SLC
D1
SDA
D2
功能:MAX30100 是一个集成脉搏血氧仪和心率检测仪生物传感器的模块,用于检测人体血氧浓度和心跳频率。
(2)LM386 声音传感器

端口连接:
引脚号
连接Arduino开发板
GND
GND
VCC
3.3V或5V
AOUT
A0
DOUT
D0
功能:LM386 是一种音频集成功率放大器, 用于检测周围环境声音的有无和判断声音强度的大小。
硬件系统的Fritzing模型图
软件设计主要对应4个功能模块进行设计。分别是:获取睡眠环境状况,获取血氧浓度和心跳频率,MQTT通信和移动端数据传输。
获取睡眠环境状况利用声音传感器(LM386)来检测当前环境中声音的状况。在固定时间段内,读取每秒钟的声音数字信号,最后对低电平的数量进行统计,对照环境质量评估转换表获取当前环境状况。此外,环境状况将参与到睡眠质量的评估之中。

代码实现: lastNoise变量记录上一次噪音采样时间,每次循环做一次判断,如果当前时间与上次噪音采样时间相差大于50毫秒则进行一次噪音采样,其效果等同于每50毫秒进行一次噪音采样。这样做的好处是避免循环嵌套,导致后面心率血氧的采样被阻断。
代码语言:javascript代码运行次数:0运行复制 // 每50毫秒检测一次环境噪音,如果有则噪音计数器的值加一 if (millis() - lastNoise > 50) { if (digitalRead(dPin) == 0) { noiseCounter += 1; } lastNoise = millis(); }登录后复制