×

健康监视器开源分享

消耗积分:0 | 格式:zip | 大小:0.14 MB | 2022-11-11

分享资料个

描述

在某些情况下,有时需要监测患者的生命体征,例如心率、氧饱和度和体温。有时,了解患者状态或是否有抽搐等其他信息也很有用。在这种情况下,IMU 可用于了解这些因素。

这个项目并不完美,我真的鼓励你修改和改进不同的方面,主要是 nRF5340 DK 和 Arduino Nano 33 BLE 之间的蓝牙连接。

Arduino Nano 33 BLE

这个项目的工作原理非常简单。事实上,Arduino Nano 33 BLE 正在使用 MAX30100 和 10k ohm ntc 热敏电阻等传感器扫描不同的生命体征。Nano 还具有一个集成的 IMU(惯性测量单元),对于了解患者正在进行的不同运动非常有用。我还在 Edge Impulse 中训练了一个模型以识别三个主要运动:步行、睡眠和抽搐注意:在模型中,步行将显示他的法语对应的«marcher»并且睡眠被识别为«dormir»

Edge Impulse 完全支持 Arduino Nano 33 BLE,您可以使用他们的网站非常轻松地创建自己的模型。因为 Nano 33 BLE 配备 nRF52840,它可以运行边缘脉冲模型,这是普通 Arduino Nano 无法做到的。机器学习在分析运动时非常有用,例如本项目中的抽搐。

Arduino Nano 33 BLE 还支持低功耗蓝牙,因此该设备可以在集成电池上运行更长时间。

使用通过 I2C 连接到 Arduino 板的 MAX30100 传感器测量心率和氧饱和度。为了方便使用,我使用了 MAX30100_PulseOximeter.h 库。在我随本文提供的代码中,可以使用计算机的串行端口读取传感器数据。它还将显示板的加速度计的数据。要连接威廉希尔官方网站 板,您可以查看原理图中的图表。Arduino IDE 代码也可以在代码部分找到。

nRF5340 DK

Edge Impulse 也支持 nRF5340 DK。事实上,这个项目的 Nano 部分可以替换为具有 nRF5340 芯片的设备,因为它类似,但功能更强大。

本项目使用 nRF5340 显示 Arduino Nano 发送的信息。它们通过 BLE 连接。使用的显示器是 2.8 英寸 TFT 触摸屏。它可以在屏幕上同时支持最多两个联系人。我一直在使用的屏幕采用 Arduino shield 的外形尺寸,即 R3 外形尺寸。

由于 nRF5340 具有两个核心,即应用程序和网络核心,您必须对网络核心进行编程才能使用蓝牙。使用 Segger Embedded Studio,您应该使用v1.5.0\zephyr\samples\bluetooth 中的hci_rpmsg示例对网络核心进行编程。

应用核心

然后,可以使用 Segger Embedded Studio 对应用程序内核进行编程。在这个项目中,我使用了 ncs-display-bluetooth-master-example,这是 Nordic 的一个项目,我对其进行了修改以满足我的需要。所以,如果你想让它工作,你需要使用 Git 运行补丁。确保使用 nrf5340dk_nrf5340_cpuapp 而不是 nrf5340dk_nrf5340_cpuappns当您选择板时,在创建项目时。要使用显示,该示例使用 lvgl 库。您可以通过修改 Segger 中的 gui.c 文件来修改 GUI。网上有很多资源,图书馆很容易使用。然后,可以对应用核心进行编程。如果您使用的是我提供的文本示例,您可以使用 nRF Blinky 应用程序检查蓝牙连接是否有效。可以修改代码以将 DK 连接到 Arduino Nano 33 BLE,然后显示数据。

结论

事实上,这个项目并不完美,远非如此。但是,我认为它对想要开始使用 nRF5340 DK 的人很有用。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"//m.obk20.com/www/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.obk20.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'健康监视器开源分享',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"https://www.elecfans.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);