你好,
我想要捕捉ECG信号,然后把它们转换成心率,以bpm为单位,我想要信号通过BLE发送到智能手机。智能手机将使用BLE扫描仪读取读数。我已经修改了SDK文件夹中的ble_app_peripheral示例,以便能够捕获数据(参见附件)。我意识到这个问题很可能是由于ADC的功能。我是否放错了位置?我应该放在哪里?
adc_init(gp_adc_se,gp_adc_sign,gp_adc_attn3x).........
非常感谢。
除此之外,我不知道如何将adc输出连接到自定义profile,基本上adc的输出是ECG信号,我需要将它们转换成心率。我需要使用hrpc。c, hrpc_task。c吗?谢谢
嗨herochua617,
没有BLE实现,您是否从ECG和ADC获取任何值?如果是,则可以转到下一步并通过BLE发送值。存在心率配置文件文件,以便使用SIG标准心率曲线分开发送HRP值,因为Tha个人资料将为您提供何时可以为您做任何难题,可以使用自定义配置文件从传感器发送值。关于您必须放置读取ADC功能的地方,您可以在向堆栈发送通知之前执行此操作。关于如何发送值,您在app_adcval1_timer_cb_handler()中拥有的样本变量是每次定时器经过的时候它将其发送到中央的虚拟值,因此您可以用从ADC读取的值替换该数据。
由于MT_dialog
嗨mt_dialog,
我想问一下。如果我想从SPI运行这个配置文件,我需要在ble_peripheral_app中配置任何东西吗?因为我可以使用智能片段直接燃烧SPI内部的编码,它将自动运行时,我打开开发工具包,当我运行开发工具包的硬币电池供应?我说的对吗?谢谢
我从自定义配置文件得到的不是心率。实际上是ECG信号值,即从ADC输出得到的值。我知道我需要固定ECG信号的QRS复波的间隔,以获得心率值。但是你有关于如何配置的例子吗?谢谢
1.启用ADC值通知ADC_VAL_1_UUID_128(UUID 0x17, 0xB9, 0x67, 0x98, 0x4C, 0x66, 0x4C, 0x01, 0x96, 0x33, 0x31, 0xB1, 0x91, 0x59, 0x00, 0x15)2.将0x01写入ctrl_pointCTRL_POINT_UUID_128 (0x20, 0xEE, 0x8D, 0x0C, 0x1, 0xF0, 0x4A, 0x0C, 0xB3, 0x25, 0xDC, 0x53, 0x6A, 0x68, 0x86, 0x2D)你放的ADC func位置没有错。
嗨chey856,
非常感谢!我能看到价值的变化。我可以问吗?控制点的作用是什么?为什么我需要打开以获得值?谢谢
chey856提到的控制点特性是一个特性,它在编写时可以在fw中启用内核计时器。当内核计时器结束时,它会触发向堆栈发送通知,并最终在您的手机上重置计时器。因此,只要写入该特征,就会触发函数user_custs1_ctrl_wr_ind_handler()并启动计时器,当计时器结束时,就会触发app_adcval1_timer_cb_handler()。
thaks mt_dialog
这是正确的!非常感谢,谢谢顺便问一下,你能告诉DA14580的adc采样率吗
它在数据表中提到,“最大采样率为3.3 msample / s”。
如果我想把数据转换成心率,那么adc值1会给出心率的结果。我是否能够使用我现有的代码?谢谢
心率= (adc_get_sample() * 1.2伏* ADC_ATTN3X)/1023如果未在ADC_INIT()中未设置ADC_ATTN3X,则设置ADC_ATTN3X = 1其他SET ADC_ATTN3X = 31.2伏特为参考电压10bit ADC所以它的决议:2 ^ 10 - 1 = 1023您应该看看“Projects \ target_apps \ peripheral_examples \ adc \ batt_lvl”示例
Static uint16_t heart_rate,采样,采样2;
adc_init(gp_adc_se,0,gp_adc_attn3x);adc_enable_channel (ADC_CHANNEL_P01);sample = adc_get_sample();
adc_init (GP_ADC_SE, GP_ADC_SIGN, GP_ADC_ATTN3X);adc_enable_channel (ADC_CHANNEL_P01);sample2 = adc_get_sample();
heart_rate =(样本+样品2);heart_rate = heart_rate / 2;heart_rate = (heart_rate * 3.6) / 1023;
req-> conhdl = app_env-> conhdl;申请- >处理= CUST1_IDX_ADC_VAL_1_VAL;req-> length = def_cust1_adc_val_1_char_len;memcpy(req->值,&heart_rate,def_cust1_adc_val_1_char_len);
KE_MSG_SEND(REQ);
if(ke_state_get(task_app)== app_connected){//再次设置,直到在控制特征中接收到停止命令Timer_used = app_easy_timer(100, app_adcval1_timer_cb_handler);}}
这是我的代码。我从BLE Scanner App的ADC Val 1特性获得0x01。任何建议吗?
谢谢
抱歉迟到了,你的代码似乎没问题,你能告诉我更多关于你的项目的细节吗?我的邮箱:cheyu856@gmail.com.
我已经回复了你的邮箱。谢谢
嗨,大家好,
我可以使用HRPS配置文件与我的心率设备一起使用吗?这将更容易,因为HRPS将在HRPS中有算法,它会将我的数据转换为可读的心率而不是十六进制值?
HRP只是一个SIG标准,它只是以特定方式格式化传感器的数据,以便由其他客户端设备读取,它没有算法实现或任何额外的东西,它只是表达心率值的标准方法订购其他设备能够解释它们。
谢谢。这就解决了我的问题https://support.dialog-semicondiondiondum/forums/post/dialog-smartbond-bl ....谢谢。但是,我正在尝试自己检测到间隔的方式。我想在两个峰之间获得时间https://support.dialog-semicondiondiondum/forums/post/dialog-smartbond-bl ....非常感谢你!
你好,
除此之外,我不知道如何将adc输出连接到自定义profile,基本上adc的输出是ECG信号,我需要将它们转换成心率。我需要使用hrpc。c, hrpc_task。c吗?谢谢
嗨herochua617,
没有BLE实现,您是否从ECG和ADC获取任何值?如果是,则可以转到下一步并通过BLE发送值。存在心率配置文件文件,以便使用SIG标准心率曲线分开发送HRP值,因为Tha个人资料将为您提供何时可以为您做任何难题,可以使用自定义配置文件从传感器发送值。关于您必须放置读取ADC功能的地方,您可以在向堆栈发送通知之前执行此操作。关于如何发送值,您在app_adcval1_timer_cb_handler()中拥有的样本变量是每次定时器经过的时候它将其发送到中央的虚拟值,因此您可以用从ADC读取的值替换该数据。
由于MT_dialog
嗨mt_dialog,
我想问一下。如果我想从SPI运行这个配置文件,我需要在ble_peripheral_app中配置任何东西吗?因为我可以使用智能片段直接燃烧SPI内部的编码,它将自动运行时,我打开开发工具包,当我运行开发工具包的硬币电池供应?我说的对吗?谢谢
你好,
我从自定义配置文件得到的不是心率。实际上是ECG信号值,即从ADC输出得到的值。我知道我需要固定ECG信号的QRS复波的间隔,以获得心率值。但是你有关于如何配置的例子吗?谢谢
1.启用ADC值通知
ADC_VAL_1_UUID_128(UUID 0x17, 0xB9, 0x67, 0x98, 0x4C, 0x66, 0x4C, 0x01, 0x96, 0x33, 0x31, 0xB1, 0x91, 0x59, 0x00, 0x15)
2.将0x01写入ctrl_point
CTRL_POINT_UUID_128 (0x20, 0xEE, 0x8D, 0x0C, 0x1, 0xF0, 0x4A, 0x0C, 0xB3, 0x25, 0xDC, 0x53, 0x6A, 0x68, 0x86, 0x2D)
你放的ADC func位置没有错。
嗨chey856,
非常感谢!我能看到价值的变化。我可以问吗?控制点的作用是什么?为什么我需要打开以获得值?谢谢
嗨herochua617,
chey856提到的控制点特性是一个特性,它在编写时可以在fw中启用内核计时器。当内核计时器结束时,它会触发向堆栈发送通知,并最终在您的手机上重置计时器。因此,只要写入该特征,就会触发函数user_custs1_ctrl_wr_ind_handler()并启动计时器,当计时器结束时,就会触发app_adcval1_timer_cb_handler()。
thaks mt_dialog
这是正确的!非常感谢,谢谢
顺便问一下,你能告诉DA14580的adc采样率吗
嗨chey856,
它在数据表中提到,“最大采样率为3.3 msample / s”。
由于MT_dialog
你好,
如果我想把数据转换成心率,那么adc值1会给出心率的结果。我是否能够使用我现有的代码?谢谢
心率= (adc_get_sample() * 1.2伏* ADC_ATTN3X)/1023
如果未在ADC_INIT()中未设置ADC_ATTN3X,则设置ADC_ATTN3X = 1其他SET ADC_ATTN3X = 3
1.2伏特为参考电压
10bit ADC所以它的决议:2 ^ 10 - 1 = 1023
您应该看看“Projects \ target_apps \ peripheral_examples \ adc \ batt_lvl”示例
Static uint16_t heart_rate,采样,采样2;
adc_init(gp_adc_se,0,gp_adc_attn3x);
adc_enable_channel (ADC_CHANNEL_P01);
sample = adc_get_sample();
adc_init (GP_ADC_SE, GP_ADC_SIGN, GP_ADC_ATTN3X);
adc_enable_channel (ADC_CHANNEL_P01);
sample2 = adc_get_sample();
heart_rate =(样本+样品2);
heart_rate = heart_rate / 2;
heart_rate = (heart_rate * 3.6) / 1023;
req-> conhdl = app_env-> conhdl;
申请- >处理= CUST1_IDX_ADC_VAL_1_VAL;
req-> length = def_cust1_adc_val_1_char_len;
memcpy(req->值,&heart_rate,def_cust1_adc_val_1_char_len);
KE_MSG_SEND(REQ);
if(ke_state_get(task_app)== app_connected)
{
//再次设置,直到在控制特征中接收到停止命令
Timer_used = app_easy_timer(100, app_adcval1_timer_cb_handler);
}
}
这是我的代码。我从BLE Scanner App的ADC Val 1特性获得0x01。任何建议吗?
谢谢
抱歉迟到了,你的代码似乎没问题,你能告诉我更多关于你的项目的细节吗?
我的邮箱:cheyu856@gmail.com.
我已经回复了你的邮箱。谢谢
嗨,大家好,
我可以使用HRPS配置文件与我的心率设备一起使用吗?这将更容易,因为HRPS将在HRPS中有算法,它会将我的数据转换为可读的心率而不是十六进制值?
嗨herochua617,
HRP只是一个SIG标准,它只是以特定方式格式化传感器的数据,以便由其他客户端设备读取,它没有算法实现或任何额外的东西,它只是表达心率值的标准方法订购其他设备能够解释它们。
由于MT_dialog
嗨mt_dialog,
谢谢。这就解决了我的问题https://support.dialog-semicondiondiondum/forums/post/dialog-smartbond-bl ....谢谢。但是,我正在尝试自己检测到间隔的方式。我想在两个峰之间获得时间https://support.dialog-semicondiondiondum/forums/post/dialog-smartbond-bl ....非常感谢你!