亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

健康手环——老人智能助手

组件和用品

Infineon DPS310
× 1
Arduino Nano R3
× 1
乐鑫 ESP8266 ESP-01
× 1
跳线(通用)
× 1
3.7 V LiPo 电池
× 1

必要的工具和机器

烙铁(通用)

应用和在线服务

Arduino IDE
Blynk

关于这个项目

您所爱的人是否年老并独自生活?不用担心。使用英飞凌的 DPS310 压力传感器,我们开发了一个虚拟助手,它以带子的形式整齐地贴在您的手臂上,它可以处理这项耗时的工作,让您的亲人放心!

“老年人目前大约代表 14.5% 的美国人口 , 到 2030 年,将有大约 7400 万老年人。随着医疗保健成本不断上升,医疗机构面临着提供足够护理的压力,因此必须采用新的解决方案来管理老年人健康。”

在快速搜索并看到令人震惊的数字后,这是我们帮助老年人的尝试​​!

故事

我祖母已经有几年没有出现阿尔茨海默氏症的早期症状了,不幸的是,她的病情似乎在恶化。这导致了一系列意想不到的问题,例如

1) 去上班(即使她被建议不要)

2)不吃饭或有时吃两顿饭

3)不做她的练习

这一切都是因为她缺乏记忆力,也因为她不知道自己的病情。

这导致我母亲需要几乎一整天,一周 7 天都在她身边。事实证明,这项任务非常累人且耗时。那时我们萌生了制作虚拟助手的想法,该助手可以监控我祖母的行为和活动,并且在需要时还可以在紧急情况下提醒家人。让我妈妈休息一下,同时让病人安全无虞!

系统/概念中的组件

尽管该系统主要关注阿尔茨海默病患者面临的问题,但我们在我们的项目中灌输了许多其他系统,这些系统影响所有老年人的生活,帮助他们独立地克服日常生活中的障碍。

英飞凌压力传感器的主要特点之一是它的尺寸!这使得关键组件便携且超级通用。在我们系统的核心,我们有 Arduino Nano,然后它通过 I2C 总线连接到 DPS310 压力传感器。动作和行为将被编码以模拟患者的实时运动。使用这些图表或值,我们可以确定患者的状态并在紧急情况下向成员发出警报。生成的数据将在一个使用 Blynk 的小应用程序中呈现。

整个系统将集成到一个小巧美观的可穿戴手环中,将这项技术无缝融入患者的生活。

功能和能力

以下是我们的乐队将能够分析/检测的主要功能和动作:

秋天 - 研究表明,老年人最大的问题是失去平衡和摔倒。患者往往是无助的,只有过了一段时间才能得到帮助。通过检测压力突然下降,Health Band 可以轻松避免这种情况。检测到后会自动发送消息给亲属,以帮助防止伤害恶化。

锻炼 - 对于老年人来说,让他们锻炼或散步可能相当困难,尽管这可以保持他们的健康。我们认为一种激励他们的方法可以是向他们展示所走的步数或步行的时间,以便他们有一些东西可以促使他们锻炼。

在我奶奶的情况下,医生告诉她走 1000 步左右,她愿意,但她数不清了。柜台也能帮到她!

一旦 Health Band 检测到“波浪”运动,它就会推断出患者已经开始了他/她的锻炼。波峰到波峰或波谷到波谷标志着一个周期。随着步数的进行,循环数会生成并显示出来,从而制作出您自己的步数计数器。

发烧 - 这个非常简单,传感器还提供温度。与手臂接触的带子提供患者的实时温度。任何尖峰或下降都会通过消息自动再次提醒亲戚。

状态 - 告诉亲属病人的生活状态。例如,如果 Health Band 检测到的压力变化不大,则患者可能正在睡觉。

我们有三种状态:睡眠、清醒和锻炼。 (也就是说我们还没有完善这个功能,因为有时我们会收到错误的“状态”。我们还计划添加更多状态)

电路

英飞凌强大的 DPS310 传感器可以使用蓝牙同步到应用程序。该应用程序生成传感器的实时视觉表示。虽然它很有用,但它对我们的概念有其局限性。

因此,为了利用传感器的数据流,我们通过 I2C 总线连接了 Arduino Nano。这使我们能够计算数据,从而可以推断出患者所处的各种场景。

一旦我们解决了这个问题,我们将 Arduino 连接到 ESP8266 WiFi 模块,使其能够与移动应用程序进行通信。

设置

在设置一切之前,您需要为传感器添加引脚。剪断两根七针的长度并将它们焊接起来。你可以使用面包板让事情变得更容易。

  • DPS310 压力传感器到 Arduino Nano (I2C)

注意 :传感器的方向如图所示

引脚 1 (SDA) 在传感器上 => 模拟引脚 4 在 Arduino 上

引脚 2 (SCL) 在传感器上 => 模拟引脚 5 在 Arduino 上

引脚 8 (GND) 在传感器上 => GND 在 Arduino 上

  • Arduino Nano 到 ESP8266(WiFi 模块)

注意 :模块方向如图所示

引脚 1 在 WiFi 模块上 => 数字引脚 11 在 Arduino 上

引脚 2 在 WiFi 模块上 => 数字引脚 10 在 Arduino 上

引脚 7 (GND) 在 WiFi 模块上 => GND 在 Arduino 上

引脚 8(电源) 在 WiFi 模块上 => 3v3 在 Arduino 上

制作乐队

小巧的所有组件都非常适合您的手腕。为了制作实际乐队,我们使用了Canvas泡沫 嵌入组件。然后魔术贴形成带子。

要制作您的 DIY 健康手环,请先将泡沫切成手的宽度。然后排列好各种传感器,裁剪出最终的尺寸。把边缘弄圆,让它看起来更整洁。将别针压入泡沫(提供保护和抓握),然后将电池嵌入一个小槽中。

现在翻转乐队并焊接连接,引脚应该只是伸出......进行测试运行以查看是否一切正常。

添加魔术贴条以制作肩带。将表带用帆布包起来并用热胶粘住,这给人一种整洁的感觉!

由于我们没有 3D 打印机,我们计划在未来升级这个原型,用 3D 打印的方式为所有组件提供完美的插槽,为我们的健康手环提供符合人体工程学的设计!

***当我们打印最终的 3D 打印模型、图片和打印文件时,我们将更新此项目***

编写各种算法

在我们开始对系统进行编程之前,您需要安装某些库才能使程序正常运行。您需要下载的库是:

  • 线库 (通常是预装的,这个负责Arduino Nano和DPS310压力传感器之间的通信)https://github.com/PaulStoffregen/Wire
  • DPS310 压力传感器库 https://github.com/Infineon/DPS310-压力传感器
  • Blynk 库 (为了使 Arduino Nano 能够与 Blynk 云通信)https://github.com/blynkkk/blynk-library

下载每个库后,每个库的安装都遵循相同的过程:打开 Arduino IDE 并前往草图 (窗口顶部)。然后从下拉列表中点击 include library .接下来点击添加 .ZIP 库 .现在导航到您存储下载的文件的位置,然后单击 打开。 对所有三个库重复此过程。

现在您可以尝试下载试用代码 并检查它是否编译。将其上传到您的 Arduino Nano 并确保通过打开 串行监视器 获取实时数据 (由 IDE 右上角的监视器图标表示)。

如果一切顺利,请继续上传主代码,然后您就可以开始构建您的应用程序了。

构建应用程序

为了连接到互联网,我们使用了一个名为 Blynk 的预建平台,可以从 android play 商店下载,链接如下。有无数关于如何将应用程序与 Arduino 一起使用的示例,这些示例都可以通过前往文件获得 在 Arduino IDE 中,然后是 示例 并在 Blynk 列表下。

链接到 blynk 应用 :https://play.google.com/store/apps/details?id=cc。

我们使用该应用程序以用户友好的方式表示数据。

选择 Arduino Nano 作为您的微控制器和“连接类型”WiFi .然后你会收到一封“auth token”的邮件,你需要在代码中输入它,(在代码中提到)。

我们添加了几个小部件,例如 Gauge 代表实时温度,一个值显示 用于计步器和 LCD 显示屏 显示当前状态。这些是您可以为其他特定情况添加更多功能的基本构建块。

结论,总体上是成功的!

该项目存在一些错误和误读。一是体温。 HealthBand 读数为 36°C(手腕温度),而医疗级温度计读数为 36.8°C(腋下温度)。

我们的步骤算法起初被证明给出了错误的计数,但经过多次修改尝试后,它的工作相当准确。另一个问题是状态函数。我们添加了更多变量和语句,使其进一步了解其他状态。

最后,我们能够通过重新校准解决问题,并且 HealthBand 成功收集了所需的数据。我的祖母在过去的两周里一直没有助手,乐队的表现很棒!

截至目前,尚未测试秋季或发烧消息,因为没有任何此类情况,但理论上它们有效!

这是一个伟大的项目,可以很容易地实施,我们希望这个乐队可以挽救生命,让老人安然无恙!

代码

  • 生成数据测试
  • 带有 Blynk 应用程序的 HealthBand
生成数据测试Arduino
安装了各种库后,运行此程序以查看是否一切正常。您应该在串行监视器上获得实时数据或值流。
#include void setup(){ Serial.begin(9600);而(!串行); //调用开始初始化ifxDps310 //参数0x76为总线地址。默认地址是 0x77,不需要给出。 //ifxDps310.begin(Wire, 0x76); //使用下面的注释行来使用默认的 I2C 地址。 ifxDps310.begin(Wire); // 重要提示 //如果您遇到 DPS310 显示温度在 60 C 左右的问题,尽管它应该在 20 C 左右(室温),那么您可能有一个保险丝位问题的 IC //直接调用以下函数在begin()之后解决这个问题(启动后只需要调用一次) //ifxDps310.correctTemp(); //温度测量速率(值从0到7) //2^temp_mr每秒温度测量结果 int temp_mr =2; //温度过采样率(值从 0 到 7) //2^temp_osr 每个结果的内部温度测量值 //更高的值会增加精度 int temp_osr =2; //压力测量速率(值从0到7)//每秒2^prs_mr压力测量结果 int prs_mr =2; //压力过采样率(值从 0 到 7) //2^prs_osr 每个结果的内部压力测量值 //更高的值会增加精度 int prs_osr =2; //startMeasureBothCont 启用后台模式 //自动测量温度和压力 //不能同时提供高精度和高测量率。 //查阅数据表(或反复试验)以获取更多信息 int ret =ifxDps310.startMeasureBothCont(temp_mr, temp_osr, prs_mr, prs_osr); //使用下面的注释行之一只测量温度或压力 //int ret =ifxDps310.startMeasureTempCont(temp_mr, temp_osr); //int ret =ifxDps310.startMeasurePressureCont(prs_mr, prs_osr); if (ret !=0) { Serial.print("Init FAILED! ret ="); Serial.println(ret); } else { Serial.println("初始化完成!"); }}void loop(){ unsigned char pressureCount =20; long int pressure[pressureCount];无符号字符温度计数 =20;长整数温度[温度计数]; //此函数将连续测量的结果写入作为参数给出的数组中 //参数温度计数和压力计数应保存函数调用时数组温度和压力的大小 //函数结束后,温度计数和压力计数保存写入数组的值的数量 //注意:Dps310 不能保存超过 32 个结果。当它的结果缓冲区已满时,它不会保存任何新的测量结果 int ret =ifxDps310.getContResults(temperature, temperatureCount, pressure, pressureCount); if (ret !=0) { Serial.println(); Serial.println(); Serial.print("失败!ret ="); Serial.println(ret); } else { Serial.println(); Serial.println();串行打印(温度计数); Serial.println(" 找到温度值:"); for (int i =0; i  
带有 Blynk 应用程序的 HealthBandArduino
这是最终的程序,需要手动输入很少的变量和阈值才能使健康手环正常工作,按照评论进行调整。根据您的需要在 Blynk 应用程序上设置小部件,您的助手应该会栩栩如生!
#include #include #include #define BLYNK_PRINT Serialchar auth[ ] ="YourAuthToken";// 你的 WiFi 凭据。// 将密码设置为 "" 以打开网络。char ssid[] ="YourNetworkName";char pass[] ="YourPassword";const unsigned char pressureLength =50;unsigned char pressureCount =0;long int pressure[pressureLength];unsigned char temperatureCount =0;const unsigned char temperatureLength =50;long int temperature[temperatureLength];/*这些阈值会根据你当前所处的位置而变化,这些值在我们沿海地区平均气温为 34 摄氏度 */int pressureFallingThresh =1;int pressureSleepingThresh =4;int tempFeverThresh =39;int pressureJogThresh =5;void setup(){ Serial.begin(9600); Blynk.begin(auth, ssid, pass);而(!串行); ifxDps310.begin(Wire); int ret =ifxDps310.setInterruptPolarity(1); ret =ifxDps310.setInterruptSources(1, 0, 0); //通过读取 ifxDps310.getIntStatusFifoFull() 清除中断标志; int 中断引脚 =3; pinMode(interruptPin, INPUT); attachInterrupt(digitalPinToInterrupt(interruptPin), onFifoFull, RISING); //开始连续测量就像之前一样 int temp_mr =3; int temp_osr =2; int prs_mr =1; int prs_osr =3; ret =ifxDps310.startMeasureBothCont(temp_mr, temp_osr, prs_mr, prs_osr); if (ret !=0) { Serial.print("Init FAILED! ret ="); Serial.println(ret); } else { Serial.println("初始化完成!"); }}void loop(){ Blynk.run(); Serial.println("循环运行");延迟(500); if (pressureCount ==pressureLength &&temperatureCount ==temperatureLength) { //打印结果Serial.println(); Serial.println();串行打印(温度计数); Serial.println(" 找到温度值:"); for (int i =0; i  tempFeverThresh){ 发烧电子邮件(); } Serial.println("摄氏度"); Serial.println(); Serial.print(pressureCount); Serial.println(" 找到压力值:"); for (int i =0; i  

示意图


制造工艺

  1. 了解智能电器的安全标准
  2. 智能百叶窗
  3. IOT - 使用 ESP8266、Arduino 和超声波传感器的智能罐
  4. 钢铁侠
  5. 找到我
  6. 如何使用 Arduino 测量地球质量
  7. Arduino 加湿器控制
  8. Arduino Joystick
  9. 学校的智能温度监测
  10. 寻找智能制造的回报
  11. 智能工厂的软件:独立于硬件的软件的优势
  12. 适用于任何场合的手动带锯