电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>电子资料>使用nRF5340 DK进行DSP处理的震颤健康分析

使用nRF5340 DK进行DSP处理的震颤健康分析

2023-06-27 | zip | 0.91 MB | 次下载 | 免费

资料介绍

描述

介绍

震颤是某些疾病或失调的症状。难以控制肌肉运动,导致持续颤抖。它包括患有帕金森病 (PD)、多发性硬化症 (MS) 或特发性震颤 (ET)的人。观察这些震颤很重要,因为它将表明病情的严重程度。

在这个项目页面中,我将构建一个可穿戴设备来实时分析身体振动或震颤活动。我将使用 nRF5340 开发套件上的 DSP 支持库监控振动的频率和幅度。通过使用振动传感器,可以检测到这些微小的震动。

这些数据将提供有关疾病随时间进展的关键见解。例如,帕金森氏症的震颤频率一般在 3-8 赫兹之间,如果频率出现偏差,则可能表明病情正在恶化。

pYYBAGNs5NqAcHj2AAGsceVpXCw543.png
?

硬件规划

对于振动感测,将使用Kemet VS-BV203振动传感器单元。它是一种模拟传感器,可根据其感应到的振动幅度输出变化的电压。

poYBAGNs5NyAI9iRAAApibdkctk565.png
?

使用微控制器上的 ADC 连接数据,并通过快速傅里叶变换算法获得信号的基频。在这里,我们了解到振动频率是我们想要为震颤健康分析分析的频率。

pYYBAGNs5OCASKNgAABDJZKWp2o998.png
?

在这里,我还将必要的硬件焊接到原型板屏蔽上。OLED 显示器连接到 I2C 引脚,振动传感器有一个连接到模拟引脚的连接器

pYYBAGNs5OuAbKfBAAPF9Gy7Fb4825.png
?

原理框图

请在下面找到系统的引脚连接

poYBAGNs5QOAfM5fAAbpRVvApKo049.png
?

设置 nRF Connect 桌面工具

首先从这个页面下载并安装nRF Connect for Desktop

pYYBAGNs5QWAFOESAADhYZK4jCc423.png
为您的操作系统选择最新版
?

这是设置的样子

pYYBAGNs5QeAdhuGAAAefEiIuu8664.png
?

安装后,程序应如下所示。在这里,您可以管理与 nRF 系统相关的不同应用程序。

pYYBAGNs5QqAa6u7AADDUY7yevI929.png
?

在我的情况下,首先单击Toolchain Manager应用程序的“安装”,这是对示例代码进行编程以测试板的 IDE。

稍后,也安装Power Profiler应用程序,因为我们将使用 Power Profiler Kit 2 (PPK2) 进行一些测量。

设置工具链和 IDE

打开工具链管理器。在这里,我们安装了SEGGER Embedded Studio IDE附带的最新 SDK

pYYBAGNs5QyAShZ2AAAZN-lDCoI117.png
?

完成后,阅读说明“构建的第一步”并单击“打开 IDE”。

pYYBAGNs5Q6AOo89AABBpF1mwYM469.png
?

编译 Blinky 示例代码

我们将通过将 Blinky 示例代码下载到板上来测试 nRF5340 DK 板。这些示例是 nRF Connect SDK 的一部分。

要导入样本:

文件 → 打开 nRF Connect SDK 项目…

选择“ blinky ”作为项目,选择“ nrf5430dk_nrf5430_cpuapp ”作为板子。

poYBAGNs5RSANM1vAADi7DphPqg738.png
?

构建项目 hex 文件

构建 → 构建 zephyr/zephyr.elf (F7)

将开发板连接到 PC 并将其连接到 IDE:

目标 → 连接 J-Link (Ctrl+T, C)

将十六进制文件下载到板上:

目标 → 下载 zephyr/zephyr.elf (Ctrl+T, L)

检查板右上角的 LED 是否闪烁

poYBAGNs5RiAeLjEAABQND4zlcE365.png
?

您可以使用示例来熟悉环境。

为我们的应用程序修改示例

为了制作我们自己的应用程序,我们将从示例中修改并从那里构建。从此位置复制项目:blinky

  • C:\Users\[用户名]\ncs\v1.5.0\zephyr\samples\basic\

您可以随意命名项目。对我来说,我复制blinkyhackster-wearable.

pYYBAGNs5R2AILJrAABgiyLVnWc687.png
?

现在我们将修改项目以包含我们的应用程序的一些库。

这些项目使用具有非常强大的构建系统的 Zephyr RTOS它有许多配置,您可以在prj.conf.

poYBAGNs5R-AZwdqAABEN4Xpk7c071.png
?

从这里开始,考虑项目需求很重要。在这个项目中,我决定使用GPIO、ADC 和 I2C 设备外设另外,我将使用CMSIS-DSP 库(这个库也需要浮点支持)

有了这个,我编辑我的文件是这样的:

pYYBAGNs5SKAKwpZAABhtBaJd9Y699.png
?
请参阅此页面是配置选项的完整列表:- Zephyr 配置选项(北欧半导体)

再次返回Open nRF Connect SDK Project ,这一次您将看到您的项目文件夹。

poYBAGNs5SWAUdKAAACLwMG1EII130.png
?

选择板名称为nrf5430dk_nrf5430_cpuapp 还将构建目录更改为较短的路径(我将其放在 C:/ 驱动器的根目录中)

pYYBAGNs5SeAEbW3AABtoDbpiJU761.png
?
如果构建目录路径太长,您可能会遇到编译问题这就是我们必须缩短它的原因(我只是删除了中间的文件夹,并且该文件夹位于 C:/ 驱动器的根目录)

有关此错误的信息,请参见此论坛主题:-
https://devzone.nordicsemi。 com/f/nordic-qa/50935/http-application-update-problem-compiling

导入工程后,可以测试是否可以编译下载到板子上。

注意:如果您对prj.conf文件进行进一步修改,则需要再次重新导入项目更新依赖项。

安装 CMSIS-DSP 包

由于 CMSIS-DSP 库由 ARM 提供,默认情况下不捆绑在项目中。

要安装它,请转到工具 > 包管理器

poYBAGNs5SqAEdKCAAAe_Qrv4b8343.png
?

右键单击并安装CMSIS 5 CMSIS-DSP 支持包

poYBAGNs5SyAbVgjAACfVL1e5QE049.png
?

安装后,它看起来像这样

pYYBAGNs5S6Abh6nAAAh2JVUBCk507.png
?

我们现在准备开始我们的应用程序!

GPIO 代码

该板有 4 个 LED,在电路板上标记为LED1LED4 。但是,在代码中,它们被标记为led0led3 请注意这个区别!

poYBAGNs5TCAQVf_AABQlSCAc0k031.png
?
  • LED1 = P0.28 (led0)
  • LED2 = P0.29 (LED1)
  • LED3 = P0.30 (LED2)
  • LED4 = P0.31 (led3)

这是设置 LED 的代码部分

pYYBAGNs5TOAWJhDAAC_j51kEI8988.png
在左侧,LED0 的定义是示例的一部分,我为 LED1 复制了它。右边是我对 led0 和 led1 的初始化函数。
?

ADC 代码

我们将使用 ADC 连接到振动传感器模块。

pYYBAGNs5TWAK4StAAAiBJMNnSM278.png
?

对于 ADC,我将使用开发板上的 A0 输入引脚。

poYBAGNs5TiAMzNKAAA-ZHy-RXw241.png
?

这是设置 ADC 的代码部分。

pYYBAGNs5TqAeiUoAAEHNlI0QiU168.png
?

I2C 代码

I2C OLED 显示屏将用于显示信息

poYBAGNs5TyAKMzrAACaRJU6SUw292.png
?

将 OLED 显示器连接到 I2C 的专用引脚。

poYBAGNs5T-AU2aZAABcYvRceH8244.png
?
  • SDA = D14 (P1.02)
  • SCL = D15 (P1.03)

这是设置 I2C 的代码部分。

pYYBAGNs5UGAGTIZAAET7t7pOkk190.png
?

定时器代码

定时器用于定期触发 ADC,这样我们就可以为 FFT 分析获得一致的读数。此处代码设置为具有 512Hz 的频率。这是因为稍后我将使用 1024 个样本的 FFT 大小,这意味着更新每个结果需要 2 秒。

poYBAGNs5UWAIY7TAADGU6ze6B4837.png
?

为了确认定时器工作正常,我使用了 PPK2 套件中的逻辑分析仪。我将它连接到 LED 引脚,在这里我们确认频率为 512Hz(约 1.95ms)。稍后我将更详细地解释如何设置 PPK2。

pYYBAGNs5UiAGV7zAACOkG5_yKY734.png
?

CMSIS DSP FFT 代码

现在对 FFT 分析过程进行编码...确保安装了 CMSIS DSP 包。

poYBAGNs5UqAXkm3AAD4T1Drcb8660.png
?

UART 代码

这部分代码负责使用printk()函数将数组中的 FFT 结果发送到 PC。

pYYBAGNs5UyADsgKAABupS8iWI4820.png
?

每次在 while 循环中处理 FFT 时都会发送它。

poYBAGNs5U-AdhtbAAD6Sl5aIXk718.png
?

最终构建产品

综上所述,我将最终代码上传到我的 Github 帐户。

这些是最终构建中的关键组件

pYYBAGNs5V2AIAedAAWwWlhNMbI375.jpg
?

我用橡皮筋将振动传感器牢牢地固定在手腕上。

poYBAGNs5aqAGHVNAAtjL6TLAeY485.jpg
?

并且显示会随着震颤频率分析而相应更新。

pYYBAGNs5a6ABX7yAAL-7-SrBlo151.png
?

OLED 显示屏的特写

poYBAGNs5TyAKMzrAACaRJU6SUw292.png
?

绘制数据

可以使用 UART 从 nRF5340 中提取传感器数据。在 nRF5340 上,JLink 处理微控制器和 PC 之间的 UART 通信

我们可以使用TeraTermPuTTY等串行软件接收它在设备管理器下,记下JLink CDC UART Port

poYBAGNs5bSAbRuAAACWbUu0PK4963.png
?

在 TeraTerm 中连接到设备:

  • 文件 > 创建新连接 > 串行 >(选择 COM 端口)。
pYYBAGNs5baAfTMEAAA8he9pyX8731.png
?
pYYBAGNs5biAdlwiAAB2W5BZJFk784.png
?

nRF5340 SDK示例的默认串口设置如下:

  • 速度:115200
  • 数据:8位
  • 奇偶性:无
  • 停止位:1位

在 TeraTerm 中,转到串行端口设置设置并进行相应设置

poYBAGNs5buAa6waAAAz4mEUNfM763.png
?

它应该看起来像这样。

pYYBAGNs5b6AZ5w6AABYlMf1gts956.png
?

数据将开始在终端中流动。你可以从这里复制出来进行分析。

poYBAGNs5cCAeC77AAB_KvtjsfU499.png
?

对我来说,我决定使用 Google Sheets 来绘制图表,我们可以将逗号分隔的数据分成 2 列

  • 数据 > 将文本拆分为列 > 分隔符:逗号。
pYYBAGNs5cOAGCu4AAHiVfIFJtg001.png
?

创建了一个面积图来可视化结果。

  • 插入 > 图表 > 面积图

此处图表的峰值是5 Hz 手颤的结果

pYYBAGNs5ceAORWfAADhuTjQz9s091.png
?

通过将数据范围更改为前 50 个值来放大。我们确认幅度峰值在 5Hz 处

pYYBAGNs5cuACvh-AAEsK9ugjHc192.png
?

这是一个模拟7-10Hz之间震颤的动画

?
未来改进:
由于学习曲线陡峭,我无法在比赛前及时启动 BLE 功能。将来,数据可以通过BLE发送来制作实时数据分析仪表板

设置电源分析器套件 2 (PPK2)

使用 nRF Connect 启动 Power Profiler 工具

poYBAGNs5c-AfLElAABDOlIeRk0176.png
?

将 PPK2 设备连接到 PC,然后单击“选择设备”。

pYYBAGNs5dGACh1gAABE0gI6KY4821.png
?

在这里,您将看到可用的设备,选择您的 PPK2 设备。

pYYBAGNs5daAHCkIAAAam4h3Azc680.png
?

您可以在源表和安培表之间进行选择。这取决于您希望被测设备 (DUT) 的功率如何。

poYBAGNs5diARvXrAADQVb1vX8Q713.png
?

在安培计中,PPK2 将简单地测量电流PPK2 将亮起蓝色。电源由 DUT 本身提供。

在源表中,PPK2 将为 DUT 提供电并从那里测量电流。PPK2 将亮起红色。

您必须选择从 0.8V 到 5.0V 的电源电压。注意不要选择错误的电压而损坏 DUT。

我将提供 3.3V 电源并在两端放置一些电阻以测量电流作为测试用例。这是我在软件中的选择

pYYBAGOIJb2ABWqwAADGAXu7Cm8393.png
?

我只是在 PPK2 的电源电压上连接了一个电阻器和一个电位器(选择的值是任意的)

pYYBAGOIJcCAONcfAAA0BpxLpkM596.png
?
poYBAGOIJcOABMVAAAFsJb-nfrA667.png
?

单击“开始”开始记录数据。当我将电位器从最大电阻扫到最小值并返回到最大值时,图表将更新。带电电流波形会在 PC 上做出相应反应。

?
?
?
pYYBAGOIJcaAC_KFAAFNM2YWlOo045.png
?
1 / 2
?

在这里,我们看到的结果是最大值为 2.88mA,最小值为 2.00mA。我们可以通过一些计算来验证这一点(请注意,电阻器的容差约为 5%)

pYYBAGOIJciAehDtAAAXYP-X1p0821.png
?

如您所见,结果与我们的计算相符(请注意,电阻器的容差约为 5%)。

带 PPK2 的逻辑分析仪

您还可以使用逻辑分析仪功能。在这张照片中,我正在探测 P0.29 以找到 LED2 的频率。

poYBAGOIJcuABWcUAAJnHl_37Jg997.png
?
  • 红线= 逻辑5V
  • 线 = 逻辑GND
  • 线 = 逻辑D0

这是通道 0 上方波(闪烁的 LED)的测量值。

pYYBAGOIJc6AUBQZAABQKjBGKOI563.png
?

如本文前面所述,我将定时器频率设置为 512Hz。并且在每次定时器中断时,都会切换 LED。我们看到两次切换之间的时间约为 1.95ms (512Hz)

准备 nRF5340 DK 与 PPK2 一起使用

参考官方硬件指南准备nRF5340 DK板测量电流-准备DK(Nordic Semiconductor)

我们将不得不剪掉一个跳线 SB40。它位于标有“nRF 电流测量”标签的插头引脚旁边

pYYBAGOIJdKAS_o1AAChAsyhFXQ783.png
?

用小刀小心地划线。花点时间,因为该地区的空间有限!剪完后应该是这个样子。

pYYBAGOIJdWAXUntAAE9J_m64Nc475.png
?

我们将在电流源模式下使用 PPK2,因此像这样连接 PPK2。只有VOUT和GND一起连接到电路板的电源

poYBAGOIJeCAAujkABCD733WZts897.png
?

使用 PPK2 进行测量

测量后,这是电流消耗的结果。

poYBAGOIJeKAcGDmAADtL-zK6yg754.png
?

从结果来看,平均电流消耗为3.83mA 它也是低功耗的,为持久的可穿戴设备应用打开了大门。尤其是在医疗和保健领域,电池寿命对于减少对患者和护理人员的不便非常重要。

?
?
?
pYYBAGOIJeiAeIeqAAalOPMlJRo103.jpg
?
1 / 2
?

?


下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1山景DSP芯片AP8248A2数据手册
  2. 1.06 MB  |  532次下载  |  免费
  3. 2RK3399完整板原理图(支持平板,盒子VR)
  4. 3.28 MB  |  339次下载  |  免费
  5. 3TC358743XBG评估板参考手册
  6. 1.36 MB  |  330次下载  |  免费
  7. 4DFM软件使用教程
  8. 0.84 MB  |  295次下载  |  免费
  9. 5元宇宙深度解析—未来的未来-风口还是泡沫
  10. 6.40 MB  |  227次下载  |  免费
  11. 6迪文DGUS开发指南
  12. 31.67 MB  |  194次下载  |  免费
  13. 7元宇宙底层硬件系列报告
  14. 13.42 MB  |  182次下载  |  免费
  15. 8FP5207XR-G1中文应用手册
  16. 1.09 MB  |  178次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234315次下载  |  免费
  3. 2555集成电路应用800例(新编版)
  4. 0.00 MB  |  33566次下载  |  免费
  5. 3接口电路图大全
  6. 未知  |  30323次下载  |  免费
  7. 4开关电源设计实例指南
  8. 未知  |  21549次下载  |  免费
  9. 5电气工程师手册免费下载(新编第二版pdf电子书)
  10. 0.00 MB  |  15349次下载  |  免费
  11. 6数字电路基础pdf(下载)
  12. 未知  |  13750次下载  |  免费
  13. 7电子制作实例集锦 下载
  14. 未知  |  8113次下载  |  免费
  15. 8《LED驱动电路设计》 温德尔著
  16. 0.00 MB  |  6656次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935054次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537798次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420027次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234315次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233046次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191187次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183279次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138040次下载  |  免费