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


物联网期末大作业—睡眠质量检测系统目录物联网期末大作业—睡眠质量检测系统前言一、项目介绍 项目背景项目构思二、系统设计 系统概述设计思路设计草图三、硬件设计 硬件模块介绍硬件系统的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相关商标  特斯拉首发人形机器人“擎天柱”亮相世界人工智能大会  iPhone两秒出图,目前已知的最快移动端Stable Diffusion模型来了  选对AI智能写作软件,让创作游刃有余!  昆仑万维与全球领先的元宇宙公司Meta达成商务合作,共同认可昆仑万维在XR领域的技术实力  出门问问亮相2025世界人工智能大会,展示AI CoPilot解决方案  从谷歌到亚马逊,科技巨头们的AI痴迷  云南首例达芬奇机器人微创心脏手术成功开展  联想浏览器引入小乐 AI 助手,成功接入百度文心一言大模型,经过实测证实  Vision Pro 太贵,苹果基于 iPhone 的 VR 头显专利曝光  阿里云全面支持Llama2训练部署,助力企业快速构建自有大型模型  微幼科技推出全自动晨检机器人,助力幼儿园校园健康检测  苹果在韩举办首届中小企业智能制造论坛,加速推动工业4.0发展  大模型的“黄金搭档”来了!腾讯云正式发布AI原生向量数据库,提供10亿级向量检索能力  人工智能进入绿植界,智能庭院市场初具规模  网易云音乐内测上线“私人DJ” 打造AI推荐音乐助手  全面拥抱大模型浪潮,ISC 2025打造全球首场AI数字安全峰会  美图设计室2.0新增哪些功能  人工智能时代的科幻译者怎么办?“做好翻译工作的高端10%”|文化观察  13 个提高生产力的 AI 工具  第二届光合组织AI解决方案大赛赛果揭晓  华为即将推出HarmonyOS 4,再度领先行业的AI技术  郭帆:AI发展日新月异,或是弯道超车好莱坞的最好机会  关于开展“与AI共创未来”——2025年全国青少年人工智能创新实践活动的通知  Bing 聊天机器人现支持在桌面端用语音提问  李开复官宣新公司「零一万物」,进军 AI 2.0  泗洪:畅通城市“血管” ,管下机器人来帮忙  人工智能即将进入Windows:企业准备好安全策略设置了吗?  科技有狠活|时光修复师 :用AI让昨日重现  AI与5G的强强联合:唤醒数字时代的无尽潜能  两架海燕号无人机交付中国气象局 助力建设国家级机动气象观测业务  微软在 Bing 和 Edge 浏览器中拓展网购服务,帮用户选购心仪产品  参考封面|人工智能“淘金热”  2025年深圳举办的SUSECON 创新峰会开始接受报名  测试框架-安全和自动驾驶  美图吴欣鸿:希望更多人用上AI时代的影像生产力工具  研究预测HPC支持的人工智能增长迅速  人形机器人概念集体爆发,能买吗?  编程已死,AI 当立?教授公开“唱反调”:AI 还帮不了程序员  家电行业观察:AI加持下,全屋智能将成为智能家电未来?  国网辉南供电:无人机空中巡检 全力护航端午佳节  网友自制 AI 版《流浪地球 3》预告片,登上 CCTV6  大脚攀爬者车主福利!无人机、运动相机大奖等你来挑战  中国最强AI研究院的大模型为何迟到了  大型无人机FH-98国内首次夜航转场成功  鹅厂机器狗抢起真狗「饭碗」!会撒欢儿做游戏,遛人也贼6  AIGC 风潮刮到游戏产业,巨人网络与阿里云达成“游戏 +AI ”合作  清华朱军团队新作:使用4位整数训练Transformer,比FP16快2.2倍,提速35.1%,加速AGI到来!  人工智能行业急缺人 AI人才年薪能达近42万元  OpenOOD更新v1.5:全面、精确的分布外检测代码库及测试平台,支持在线排行榜、一键测试 

 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.