本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页
最热资讯


亲,“电路城”已合并升级到更全、更大、更强的「新与非网」。点击查看「新与非网」
该项目所设计的震颤分析仪,可用于患有帕金森病 (PD)、多发性硬化症 (MS) 或特发性震颤 (ET) 的人。该设备可观察他们的症状,来表明病情的严重程度。
在这个项目页面中,将构建一个可穿戴设备来实时分析身体振动或颤抖活动。使用 nRF5340 开发套件上的 DSP 支持库监控振动的频率和幅度。通过使用振动传感器,可以检测到这些微小的震动。
这些数据将提供有关疾病随时间进展的关键见解。例如,帕金森病患者的震颤频率一般在 3-8 赫兹之间,如果频率出现偏差,则可能表明病情正在恶化。
硬件:
振动感应:将使用Kemet VS-BV203振动传感器单元。它是一种模拟传感器,可根据其感测到的振动幅度输出变化的电压。
使用微控制器上的 ADC,连接数据并通过快速傅立叶变换算法获得信号的基频。
将硬件焊接到原型板屏蔽上,OLED 显示器连接到 I2C 引脚,振动传感器有一个连接到模拟引脚的连接器。
原理图:
设置nRF Connect 桌面工具
首先从此页面下载并安装nRF Connect for Desktop
设置工具链和 IDE
打开工具链管理器,这里安装了SEGGER Embedded Studio IDE附带的最新 SDK
完成后,通读“构建的第一步”说明,然后单击“打开 IDE”
编译 Blinky 示例代码
将通过将 Blinky 示例代码下载到板上来测试 nRF5340 DK 板。这些示例是 nRF Connect SDK 的一部分。
导入样本:文件 → 打开 nRF Connect SDK 项目
选择“Blinky ”作为项目和“ nrf5430dk_nrf5430_cpuapp ”为板。
构建项目 hex 文件
将开发板连接到 PC 并将其连接到 IDE:
将十六进制文件下载到板上:
检查电路板右上角的 LED 是否闪烁
为应用程序修改示例
为了制作自己的应用程序,将从示例中修改并从那里构建。从此位置复制blinky项目:
C:\Users\[用户名]\ncs\v1.5.0\zephyr\samples\basic\
可以随意命名项目。在该项目中,复制blinky到hackster-wearable.
将修改项目以包含该应用程序的一些库
这些项目使用 Zephyr RTOS,它具有非常强大的构建系统,它有许多配置,您可以在prj.conf.
在该项目中,使用GPIO、ADC 和 I2C 设备外设。此外,使用CMSIS-DSP 库(该库也需要浮点支持)( Zephyr 配置选项(北欧半导体))
(编译的文件)
再次回到Open nRF Connect SDK Project ,会看到一下项目文件夹:
选择板名称为nrf5430dk_nrf5430_cpuapp 。也将构建目录更改为较短的路径(将其放在 C:/ 驱动器的根目录中)
如果构建目录路径太长,可能会遇到编译问题
安装 CMSIS-DSP 包:
由于 CMSIS-DSP 库由 ARM 提供,因此默认情况下未将其捆绑在项目中。
要安装它,需转到工具 > 包管理器
右键单击并安装CMSIS 5 CMSIS-DSP 支持包
安装后
GPIO 代码:
该板有 4 个 LED,在电路板上标记为LED1至LED4 。然而,在代码中,它们标记LED0至LED3
这是设置 LED 的代码部分
(在左侧,LED0的定义是示例的一部分,为LED1复制了该段代码,右边是对LED0\LED1的初始函数)
ADC 代码:
将使用 ADC 连接到振动传感器模块
对于 ADC,将使用开发板上的 A0 输入引脚
设置 ADC 的代码部分
I2C 代码:
I2C OLED 显示器将用于显示信息
将 OLED 显示器连接到 I2C 的专用引脚
这是设置 I2C 的代码部分
定时器代码:
定时器用于定期触发 ADC,这样就可以获得一致的 FFT 分析读数。这里的代码设置为具有 512Hz 的频率。这是因为稍后将使用 1024 个样本的 FFT 大小,这意味着更新每个结果需要 2 秒。
为了确认定时器工作正常,使用了 PPK2 套件中的逻辑分析仪,将它连接到 LED 引脚,在这里确认频率为 512Hz(约 1.95ms)
CMSIS DSP FFT 代码:
现在对 FFT 分析过程进行编码,确保安装了 CMSIS DSP 包
UART 代码:
这部分代码负责使用printk()函数将数组中的 FFT 结果发送到 PC
每次在 while 循环中处理 FFT 时都会发送它
产品构建:
代码(点击查看)
关键组件:
用橡皮筋将振动传感器牢牢地固定在手腕上
随着震颤频率分析相应地更新
数据绘制:
传感器数据可以使用 UART 从 nRF5340 中提取。在 nRF5340 上,JLink 处理微控制器和 PC 之间的 UART 通信。
可以使用TeraTerm或PuTTY等串行软件接收它。在设备管理器下,记下JLink CDC UART Port。
在 TeraTerm 中连接到设备:
nRF5340 SDK 示例的默认串口设置如下:
在 TeraTerm 中,进入串口设置设置并进行相应设置
数据将开始在终端中流动
使用 Google Sheets 来绘制图表,可以将逗号分隔的数据分成 2 列
创建了一个面积图来可视化结果
此处图形的峰值是5 Hz 手颤的结果
通过将数据范围更改为前 50 个值来放大,确认振幅峰值在 5Hz 处。
模拟 7-10Hz 之间颤动的动画
设置 Power Profiler Kit 2 (PPK2)
使用 nRF Connect 启动 Power Profiler 工具
将 PPK2 设备连接到 PC,然后单击“选择设备”
选择您的 PPK2 设备
在源表和安培表之间进行选择,这取决于您希望被测设备 (DUT) 的功率如何。
在安培计中,PPK2 将简单地测量电流。PPK2 将亮起蓝色。电源由 DUT 本身提供。
在源表中,PPK2 将为 DUT 提供电压并从那里测量电流,PPK2 将亮起红色。
必须选择 0.8V 至 5.0V 的电源电压,注意不要选择错误的电压并损坏 DUT。
将提供 3.3V 并放置一些电阻来测量电流作为测试用例。
在 PPK2 的电源电压上连接了一个电阻器和一个电位器。(选择的值是任意的)
单击“开始”开始记录数据。当我将电位计从最大电阻扫描到最小值,再返回到最大值时,图表将更新。实时电流波形会在 PC 上做出相应的反应。
看到的结果为最大值 2.88mA 和最小值 2.00mA。我们可以通过一些计算来验证这一点(注意电阻器有大约 5% 的容差)
结果与我们的计算相符(电阻的容差约为 5%)
带有 PPK2 的逻辑分析仪:
还可以使用逻辑分析仪功能
(探测P0.29,找到LED2的频率)
这是通道 0 上方波(LED 闪烁)的测量值
将定时器频率设置为 512Hz。并且在每次定时器中断时,LED 都会切换。我们看到 2 次切换之间的时间约为 1.95ms (512Hz)
nRF5340 DK 与 PPK2 一起使用:
剪一个跳线SB40,它位于标有“nRF 电流测量”的插头引脚旁边
将在电流源模式下使用 PPK2,只有VOUT与GND一起进入电路板的电源
使用 PPK2 进行测量:
电流消耗的结果:
从结果来看,平均电流消耗为3.83mA 。大部分电流来自 OLED 显示器。
每次计算 FFT 结果时都会看到4.69mA的电流尖峰,由于 nRF5430 中 DSP 硬件功能的效率,这是一个非常短的过程。
项目演示:
DIY非接触式红外测温仪
2021-06-01
讨论