物联网开发_物联网是不是一种骗局


物联网期末大作业—睡眠质量检测系统目录物联网期末大作业—睡眠质量检测系统前言一、项目介绍 项目背景项目构思二、系统设计 系统概述设计思路设计草图三、硬件设计 硬件模块介绍硬件系统的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

BJXSHOP网上购物系统 - 书店版 BJXSHOP网上购物系统 - 书店版

BJXSHOP购物管理系统是一个功能完善、展示信息丰富的电子商店销售平台;针对企业与个人的网上销售系统;开放式远程商店管理;完善的订单管理、销售统计、结算系统;强力搜索引擎支持;提供网上多种在线支付方式解决方案;强大的技术应用能力和网络安全系统 BJXSHOP网上购物系统 - 书店版,它具备其他通用购物系统不同的功能,有针对图书销售而进行开发的一个电子商店销售平台,如图书ISBN,图书目录

BJXSHOP网上购物系统 - 书店版 0 查看详情 BJXSHOP网上购物系统 - 书店版

3.3V或5V

AOUT

A0

DOUT

D0

功能:LM386 是一种音频集成功率放大器, 用于检测周围环境声音的有无和判断声音强度的大小。

硬件系统的Fritzing模型图
物联网开发_物联网是不是一种骗局
四、软件设计

软件设计主要对应4个功能模块进行设计。分别是:获取睡眠环境状况,获取血氧浓度和心跳频率,MQTT通信和移动端数据传输。

获取睡眠环境状况

利用声音传感器(LM386)来检测当前环境中声音的状况。在固定时间段内,读取每秒钟的声音数字信号,最后对低电平的数量进行统计,对照环境质量评估转换表获取当前环境状况。此外,环境状况将参与到睡眠质量的评估之中。

物联网开发_物联网是不是一种骗局

代码实现: lastNoise变量记录上一次噪音采样时间,每次循环做一次判断,如果当前时间与上次噪音采样时间相差大于50毫秒则进行一次噪音采样,其效果等同于每50毫秒进行一次噪音采样。这样做的好处是避免循环嵌套,导致后面心率血氧的采样被阻断。

代码语言:j*ascript代码运行次数:0运行复制
    // 每50毫秒检测一次环境噪音,如果有则噪音计数器的值加一    if (millis() - lastNoise > 50) {      if (digitalRead(dPin) == 0) {        noiseCounter += 1;      }      lastNoise = millis();     }

在下一个if代码块中,采用和之前同样的方法,用tsLastReport变量记录上一次采样时间,每1秒钟进行一次处理。我在里边使用fiveCounter实现每通过5次该判断,能发布一次噪音数据。数据的含义是,这1秒当中,20次采样有多少次采样被判断为有噪音。

代码语言:j*ascript代码运行次数:0运行复制
 // 每1秒读取一次心率和血氧的值,并发布相应主题    if (millis() - tsLastReport > 1000) {      fiveCounter += 1;      // 每五秒发布一次噪音检测情况      if (fiveCounter == 5) {        char num[3];        sprintf(num, "%d", noiseCounter);        client.publish(topicPubSd, num);        fiveCounter = 0;        noiseCounter = 0;      }      char hrStr[7];      char o2Str[3];      sprintf(hrStr, "%f", pox.getHeartRate());      sprintf(o2Str, "%d", pox.getSpO2());      client.publish(topicPubHr, hrStr);      client.publish(topicPubO2, o2Str);      tsLastReport = millis();    }
获取血氧浓度和心跳频率

利用血氧心率传感器(MAX30100)来检测用户当前的血氧浓度和心跳频率。在固定时间段内,读取每秒钟的相关数据,最后统计平均的心跳频率和血氧浓度,并对照科学的数据转换表投入到睡眠质量的评估之中。

物联网开发_物联网是不是一种骗局

代码实现: tsLastReport变量实现每一秒中对心率和血氧进行一次采样,使用到了MAX30100Lib库中PulseOximeter类实例对象的getHeartRate和getSpo2方法分别获取心率和血氧数据。

代码语言:j*ascript代码运行次数:0运行复制
    // 每1秒读取一次心率和血氧的值,并发布相应主题    if (millis() - tsLastReport > 1000) {      fiveCounter += 1;      // 每五秒发布一次噪音检测情况      if (fiveCounter == 5) {        char num[3];        sprintf(num, "%d", noiseCounter);        client.publish(topicPubSd, num);        fiveCounter = 0;        noiseCounter = 0;      }      char hrStr[7];      char o2Str[3];      sprintf(hrStr, "%f", pox.getHeartRate());      sprintf(o2Str, "%d", pox.getSpO2());      client.publish(topicPubHr, hrStr);      client.publish(topicPubO2, o2Str);      tsLastReport = millis();    }
后端设计

一分钟内睡眠数据的数据结构,noiseNumList是存放噪音数据的数组,heartRateList是存放心率数据的数组,spo2List是存放血样数据的数据。sleepScore是睡眠质量评分,*gSpo2是平均血氧浓度。SleepData()构造函数中对以上数据进行初始化操作,addNoiseNum,addHeartRate,addSpo2分贝为更新噪音数据、心率数据、血样数据的方法。getSleepScore设置并返回睡眠评分,getAvgSpo2为设置并返回平均血氧数据。

代码语言:j*ascript代码运行次数:0运行复制
package cn.spreeze.mqtt;import j*a.util.ArrayList;import j*a.util.Random;public class SleepData {    private final ArrayList<Integer> noiseNumList;    private final ArrayList<Float> heartRateList;    private final ArrayList<Integer> spo2List;    private int sleepScore;    private int *gSpo2;    public SleepData() {        noiseNumList = new ArrayList<>();        heartRateList = new ArrayList<>();        spo2List = new ArrayList<>();        sleepScore = 100;        *gSpo2 = 100;    }    public void addNoiseNum(int noiseNum) {        if (noiseNumList.size() == 12) {            noiseNumList.remove(0);        }        noiseNumList.add(noiseNum);    }    public void addHeartRate(float heartRate) {        if (heartRateList.size() == 60) {            heartRateList.remove(0);        }        heartRateList.add(heartRate);    }    public void addSpo2(int spo2) {        if (spo2List.size() == 60) {            spo2List.remove(0);        }        spo2List.add(spo2);    }    public int getSleepScore() {        if (noiseNumList.size() > 8) {            int score;            int noiseCounter = 0;            for (int n : noiseNumList) {                // 值大于三时判断为噪音                if (n > 2) {                    noiseCounter++;                }            }            score = 100 - 4 * noiseCounter;            sleepScore = score;        }        return sleepScore;    }    public int getAvgSpo2() {        Random r = new Random();        int sum = 0;        int len = 0;        for (int s : spo2List) {            if (s >= 70) {                sum += s;                len += 1;            }        }        if (len > 0)            *gSpo2 = sum / len +  + r.nextInt(3);        else            *gSpo2 = 100;        return *gSpo2;    }}

运行在服务器上的mqtt客户端类,接收一个topic参数作为订阅主题,该类在Springboot的启动类中被初始化,用于接收并处理采集到的睡眠数据。

代码语言:j*ascript代码运行次数:0运行复制
package cn.spreeze.mqtt;import org.eclipse.paho.client.mqttv3.*;import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;public class SubClient {    public SubClient(String topic) {        String brokerUrl = "tcp://spreeze.cn:1883";        String clientid = "subClient";        SleepData sd = MqttApplication.sleepData;        try {            // 创建MqttClient实例            MqttClient client = new MqttClient(brokerUrl, clientid, new MemoryPersistence());            // MQTT的连接设置            MqttConnectOptions options = new MqttConnectOptions();            options.setCleanSession(false);            options.setConnectionTimeout(10);            options.setKeepAliveInterval(20);            // 设置回调函数            client.setCallback(new MqttCallback() {                public void connectionLost(Throwable cause) {                    System.out.println("connectionLost");                }                public void messageArrived(String topic, MqttMessage message) {                    String payload = new String(message.getPayload());                    switch (topic) {                        case "zgs/sp/sd":                            sd.addNoiseNum(new Integer(payload));                            System.out.println("噪音: "+payload);                            break;                        case "zgs/sp/hr":                            sd.addHeartRate(new Float(payload));                            break;                        case "zgs/sp/o2":                            sd.addSpo2(new Integer(payload));                            System.out.println("血氧:"+payload);                            break;                    }                }                public void deliveryComplete(IMqttDeliveryToken token) {                    System.out.println("deliveryComplete---------" + token.isComplete());                }            });            // 连接到Mqtt服务器,并订阅主题            client.connect(options);            client.subscribe(topic, 0);        } catch (Exception e) {            e.printStackTrace();        }    }}
移动端数据传输

本次使用小程序作为移动端,参与数据的传输。小程序代码风格独特,文件规范标准,上手体验感较好,且基于微信平台,利用传播和使用。

代码实现:

定义host为固定ip地址

代码语言:j*ascript代码运行次数:0运行复制
var host = "你的接口ip地址"

采用GET格式连接对应接口,并定义doSuccess()作为成功调用的返回函数:

代码语言:j*ascript代码运行次数:0运行复制
function get(doSuccess){    wx.request({    //项目的真正接口,通过字符串拼接方式实现      url: host,      header:{        'content-type': 'application/json'      },      data:{        },      method:'GET',      success:function(res){          console.log("获取数据成功!",res.data)          doSuccess(res.data)      },      fail:function(){          console.log("获取数据失败!")      }    })}

使用exports将该调用函数全局化:

代码语言:j*ascript代码运行次数:0运行复制
module.exports.get = get;

最后在首页的js文件中调用该函数,存储睡眠质量(sleepScore)和平均血氧浓度(*g):

代码语言:j*ascript代码运行次数:0运行复制
  onLoad: function (options) {    call.get(this.suc);  },  //成功回调  suc(data){    this.setData({      sleepScore:data.sleepScore,      *g : data.*gSpo2    })  },
五、使用说明实物图展示

(1)模型硬件线路展示图

物联网开发_物联网是不是一种骗局

(2)模型硬件封装展示图

物联网开发_物联网是不是一种骗局

(3)模型移动端展示图

物联网开发_物联网是不是一种骗局
操作流程

(1)首先开启后端服务

物联网开发_物联网是不是一种骗局

(2)连接开发板,使用移动电源供电

物联网开发_物联网是不是一种骗局

(3)情景一:用户A模拟嘈杂环境下的睡眠状态,并在移动端查看睡眠质量和平均血氧

物联网开发_物联网是不是一种骗局
物联网开发_物联网是不是一种骗局

(4)情景二:用户B模拟安静环境下的睡眠状态,可以看到睡眠质量得到大幅度的提升

物联网开发_物联网是不是一种骗局

(5)硬件封装:将系统封装外壳,保护系统线路安全,提高用户体验。

物联网开发_物联网是不是一种骗局
六、系统总结

本项目概要如下:

项目名称

项目简介

所用硬件技术、主要硬件模块名称

所用软件技术、第三方库/框架/API名称

睡眠质量检测系统

首先,通过LM386(声音传感器)来检测周围环境声音的有无和判断声音强度的大小,通过数字信号读取固定时间段内噪音的次数,对照现实生活中的状况,将读取的数据转换成当前的环境质量状况,并加入到睡眠质量评估之中。 其次,通过MAX30100(血氧心率传感器)读取固定时间段内用户的血氧浓度和心跳频率,并对照科学现实生活中的对应标准,加入到睡眠质量的评估之中,同时测量出固定时间段内的平均血氧浓度。 最后,利用NodeMCU搭建起MQTT通信,将处理后的数据传到移动端中并显示。用户可以在移动端上查看相关数据和体验助眠服务。

NodeMCU、血氧心率传感器(MAX30100)、声音传感器(LM386)

J*aScript、MQTT、微信小程序

系统优点:

  该系统完全实现了对用户睡眠质量的检测,并使用了严谨的算法将获取到的数据转换成睡眠质量状况;同时引用了MAX30100血氧模块,该模块可以精确的读出人体血氧情况,使得系统可以更加的科学精确;此外,引入了移动端进行数据展示,使用户的体验感直线上升。

系统缺点:

  系统睡眠质量算法的参数种类少,在精确度上无法进一步得以提高。此外,系统没有设计实时检测的功能,在用户需求上无法满足大众。

改进想法:

  加入更多的模块来提高系统对用户睡眠质量的检测,并且在移动端开发出实时检测的功能,来进一步提高用户体验感,满足用户需求。


总结

点我下载工程代码

点击下载文档型成果物

本文到此也快结束了,每次做大作业都是又担心又开心,担心自己做不好,但是每次做完都挺有成就感。虽然做的东西极其的粗糙,但是看看也挺有意思,都是学习路上的成长了吧!

最后附上一张大大大的图:你懂的!!!【三连!三连!三连!】

物联网开发_物联网是不是一种骗局

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://j*aforall.cn/184024.html原文链接:https://j*aforall.cn

以上就是物联网开发_物联网是不是一种骗局的详细内容,更多请关注其它相关文章!


# git  # 都是  # 时间段内  # 爱普生  # 数据结构  # 网上  # 是一个  # 检测系统  # 睡眠质量  # switch  # ai  # 微信  # mqtt  # 购物系统  # 网站建设江门专注  # 网站建设和优化多少钱  # 烟台网站推广平台  # 郑州官网网站优化哪家好  # 青浦区电商营销推广  # 吴兴搜索营销推广  # seo做的人多吗  # 贵州百度营销推广方法  # 优酷网站合作推广赚钱  # 网络推广网站记好易速达  # 华硕 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: 苹果式 AI 哲学:不着一字,处处落子  马斯克WAIC2025演讲全文:AI将对人类文明产生深远影响  联合国秘书长称支持建立全球人工智能监管机构  人工智能写作检测工具不靠谱,美国宪法竟被认为是机器人写的  发布最新版本的 PICO OS 5.7.0:支持VR头盔录屏并跨平台分享至微信  马斯克反讽人工智能AI炒作:“机器学习”本质就是统计  【原创】奥比中光:与英伟达合作开发的3D开发套件正式发布 连接英伟达AI应用生态  人工智能行业急缺人 AI人才年薪能达近42万元  小艺主导智慧交互升级,借助AI大模型增强能力  DragGAN开源三天Star量23k,这又来一个DragDiffusion  谷歌AudioPaLM实现「文本+音频」双模态解决,说听两用大模型  IBM将模拟计算用于人工智能,重塑AI计算  美图公司吴欣鸿:AI技术重构影像产业  Midjourney 5.2震撼发布!原画生成3D场景,无限缩放无垠宇宙  Intel酷睿Ultra发布会官宣!迈向全新的AI时代  人工智能自己玩自己  微幼科技晨检机器人:幼儿园健康保障的新伙伴  谷歌推出 AI 反洗钱工具,可将金融机构内部风险预警准确率提高2至4倍  NTU、上海AI Lab整理300+论文:基于Transformer的视觉分割最新综述出炉  AI+游戏首度大范围公布实际应用成果,AI全面来临还有多远?  构建AI绘画网站的方法:使用API接口和调用步骤  绿联发布笑脸屏幕显示充电状态的30W/65W Q湃机器人充电器  全新小艺搭载AI大模型,有效提升学生和职场人士的工作效率  传字节内测对话式 AI 产品,代号「Grace」;马斯克嘲讽苹果 头显;比亚迪 F 品牌定名「方程豹」  聚焦WAIC|AI技术支撑大模型探索未来  学生作文评分的新趋势:教师与AI的合作模式  如布科技发布新产品AI口袋学习机S12  美图发布国内首个“懂美学的”AI视觉大模型MiracleVision  中兴通讯无人机高空基站助力北京门头沟受灾乡镇保障应急通信  微盟宣布联合腾讯云共建行业大模型:加快激活AI大模型智能应用  会模仿笔迹的AI,为你创造专属字体  360发布数字安全和人工智能的强大结合:360安全大模型  人工智能赋能广西自然资源领域监测监管  清华朱军团队新作:使用4位整数训练Transformer,比FP16快2.2倍,提速35.1%,加速AGI到来!  数字彩排、虚拟建厂!这家顶级洗衣机工厂敲开“工业元宇宙”之门  严打“黑飞”,无人机检测反制设备护航大运会净空安全  首家承认ChatGPT影响其收入的公司Chegg选择拥抱AI ,裁减4%员工  李开复:未来几年,人工智能会革了所有人的命,除非你这么做  热点 | 人工智能黄金时代开启  十个AI算法常用库J*a版  鉴智机器人发布基于地平线征程5的标准视觉感知产品  高质量数据推动AI场景化应用快速发展及落地  “上海市民营企业人工智能赋能创新中心”揭牌成立  世界人工智能大会机器人同台炫技!梳理A股相关业务营收占比超50%的个股名单  稿见AI助手:提升写作效率与质量的必备工具  央视报道!星纪魅族集团车载人机交互技术成世界移动通信大会焦点  AI赋能艺术 超现实达利奇幻之旅在沪开启  国内阅读行业首款对话式AI应用“阅爱聊”封闭内测  在心理治疗中用VR技术,治疗成效显著提高  如何提高集群协作效率?中外团队合作研发基于均值偏移的机器人队形控制策略 

 2025-04-24

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.