电子发烧友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次下载  |  免费