电子发烧友App

硬声App

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

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

3天内不再提示
电子发烧友网>电子资料下载>电子资料>可缓解潮热症状的开源项目

可缓解潮热症状的开源项目

2023-07-03 | zip | 0.12 MB | 次下载 | 免费

资料介绍

描述

该项目旨在缓解更年期常见的潮热症状,它是一个由可穿戴设备制成的物联网系统,可跟踪用户在睡眠期间的皮肤温度和运动。可穿戴设备通过蓝牙 LE (BLE) 将温度和运动数据发送到风扇控制器,当皮肤温度升高时风扇会被激活,并且数据会记录在云服务中。用户还可以使用谷歌助手来改变风扇速度。

请记住,这个项目不会阻止您出现潮热,但可以让您感到放心,请务必咨询您的医生。我们认为该项目不仅对更年期的女性有益,对盗汗患者也有益,从而改善睡眠质量

由于 COVID-19 隔离,我们想用已经在家中的电路板/传感器构建一些东西,这使得获得更多材料变得更加困难。我将尝试描述亚伯拉罕和我如何开发这个正在进行的项目,我们遇到的一些挑战以及我们如何尝试解决它们。

可穿戴设备

该项目围绕 STMicroelectronics STEVAL-BCN002V1B开发套件(又名 BlueTile)构建。

STEVAL-BCN002V1B 支持蓝牙 LE 的传感器节点开发套件具有基于 BlueNRG-2 SoC 蓝牙低功耗应用处理器的 STEVAL-BCN002V1 多传感器板。该传感器板具有加速度计、陀螺仪、磁力计、压力、湿度、飞行时间和麦克风传感器,并由通用 CR2032 纽扣电池[1]供电
pYYBAGOXz5iAOEc-AAGVrFiSdks39.jpeg
传感器板
 

传感器板上的BlueNRG-2 SoC 可以使用默认程序使用适用于 AndroidiOSSTMicro Sensor Demo App连接到您的智能手机

这些是您可以使用传感器演示应用程序执行的一些功能,您甚至可以记录数据,此功能将 CSV 文件发送到您的电子邮件。

 
 
 
pYYBAGOXz5-ANkeMAAB4mgTHEI4963.jpg
 
1 / 7环境
 

BlueTile 测试

为了对传感器板进行编程,我们使用了您获得套件时提供的 STEVAL-BCN002V1D编程板。您可以通过多种方式对传感器板进行编程,是用户手册。

我们使用 BlueNRG-2 Navigator 来熟悉传感器板,您可以使用大量示例。是一个数据简介。

 
 
 
poYBAGOXz6KARYZgAACIz1_Dyq4972.png
 
1 / 2BlueNRG-2 导航器对传感器板进行编程
 

BlueNRG -2 Navigator项目可用于KeilAtollic 在传感器板上运行的程序是Sensor Demo App. 首先我们尝试在 中更改设备本地名称sensors.c,以确保修改源代码和编程板是可行的。

poYBAGOXz7OANawdAAHDg8Bumfs605.png
更改默认名称
 

为此,我们在使用 Keil 生成 hex 文件后使用了 BlueNRG-1_2 flasher实用程序。

值得一提的是,在刷新应用程序之前,必须 Service Manager OTA先使用 flasher 实用程序加载第一个,然后为应用程序生成生成的 hex 文件。

pYYBAGOXz7qACpBTAADNrFwDxoM737.png
BlueNRG-1_2 闪光器
 

实际设备名称是BCN-002,但不确定与本地名称有什么区别。

poYBAGOXz76ACbaLAAA657bULDQ421.jpg
新设备名称
 

在文件中的Sensor_DeviceInit() 函数中sensors.c更改了aci_gap_set_authentication_requirement 删除引脚配对。只需更改USE_FIXED_PIN_FOR_PAIRINGDONOT_USE_FIXED_PIN_FOR_PAIRING

寻找服务和特点

要为传感器板构建 BLE 客户端,您必须在此处获取更多关于 BLE 的 Service UUID 和 Characteristic UUID

ST Micro 有关于如何对 BlueNRG-2 进行编程的文档以及有关服务的详细信息,但我们使用BLE 扫描仪来搜索可用的服务和特性。

BlueNRG-2有 3 项服务,但传感器数据正在服务00000000-0001-11E1-9AB4-0002A5D5C51B中。服务00000000-000E 00000000-000F是调试和配置。更多关于第 3 节的内容

pYYBAGOXz8KANJZDAADCXnrJvwY288.jpg
BlueNRG-2 服务
 

这些是服务下可用的特性00000000-0001-11E1-9AB4-0002A5D5C51B

  • 001c0000-0001-11E1-AC36-0002A5D5C51B - 环境的
  • 00000100-0001-11E1-AC36-0002A5D5C51B- 传感器融合
  • 40000000-0001-11E1-AC36-0002A5D5C51B- ?
  • 00000400-0001-11E1-AC36-0002A5D5C51B- 加速度计事件
  • 00020000-0001-11E1-AC36-0002A5D5C51B- 仪表(用于电池电量)
  • 00000040-0001-11E1-AC36-0002A5D5C51B- 指南针
  • 20000000-0001-11E1-AC36-0002A5D5C51B- 引领
  • 08000000-0001-11E1-AC36-0002A5D5C51B- 声音的
  • 00E00000-0001-11E1-AC36-0002A5D5C51B - 运动传感器
  • 02000000-0001-11E1-AC36-0002A5D5C51B- 接近

创建 BLE 客户端

我们使用DOIT Esp32 DevKit v1尝试连接到传感器板,基于 ESP32 库管理器中的 Arduino BLE 客户端示例。

pYYBAGOXz9OAbqJ0AAIEqqhAupg19.jpeg
ESP32 DevKit 和 BlueTile
 

程序寻找服务00000000-0001-11E1-9AB4-0002A5D5C51B001c0000-0001-11E1-AC36-0002A5D5C51B环境特性。

// The remote service we wish to connect to.
static BLEUUID serviceUUID("00000000-0001-11E1-9AB4-0002A5D5C51B");
// The characteristic of the remote service we are interested in.
static BLEUUID    char1UUID("001c0000-0001-11E1-AC36-0002A5D5C51B"); //Env

在扫描 BLE 设备时,ESP32 能够看到传感器板但无法连接到它。

为确保 ESP32 草图正常工作,我们使用了健身手环(服务器)和 ESP32(客户端),连接成功,但在创建客户端时挂起。

poYBAGOXz9iAIxVJAAE1IQLH9bo824.png
连接到健身手环
 

我们遇到了 Neil Kolban 的ESP32 片段,似乎 Arduino 库在信号量方面存在问题,因此我们构建了新库并重新编程了 ESP32。

但是 ESP32 仍然无法连接到传感器板。我们尝试使用 MAC 地址进行连接,该地址是在 BLE 设备扫描时确定的。

std::string My_BLE_Address = "ec:4d:a6:01:a1:eb";

当找到 MAC 地址而不是服务 UUID 时,将调用 BLE 通告设备函数。

// We have found a device, let us now see if it contains the service we are looking for.
if (advertisedDevice.getAddress().toString()==  My_BLE_Address ) {
Serial.println("Found DEVICE!");
BLEDevice::getScan()->stop();
myDevice = new BLEAdvertisedDevice(advertisedDevice);
doConnect = true;
doScan = true;

然后 ESP32 能够与传感器板建立连接,连接没有挂起。我们需要调查为什么在扫描时在传感器板上看不到服务。

poYBAGOXz-SACv7VAAHVhEedufc833.png
客户端连接到传感器板乱码数据
 

BLE 客户端示例具有通知回调函数,但数据未正确显示。需要更新回调函数(由Andreas Spiess完成)以显示原始数据。

poYBAGOXz_KAPvRFAAIXZOuZT5o335.png
环境原始数据
 

读取特征值

gatt_db.c文件包含更新特征值的函数。

/**
 * @brief  Update Environmental characteristic value
 * @param  int32_t Press Pressure in mbar
 * @param  uint16_t Hum humidity RH (Relative Humidity) in thenths of %
 * @param  int16_t Temp1 Temperature in tenths of degree
 * @retval tBleStatus   Status
 */
tBleStatus Environmental_Update(int32_t Press, uint16_t Hum, int16_t Temp) {
	uint8_t BuffPos = 0;

我们使用 ST 传感器演示应用程序获得了一些日志。

 
 
 
poYBAGOX0AaAe-PzAAI8icXBqmw842.png
 
1 / 3温度记录
 

在温度日志中,0x1B01 MSB 为 0x01 = 283 dec,但以“十分之一度”表示,即为 28.3°C。

我们使用类似的方法来获取湿度和压力值。然后环境数据以易于理解的方式显示在控制台上。

pYYBAGOX0AqARkQ7AAFGBnAWfYA966.png
环境数据
 

仅包括另外两个特征:

运动传感器 (MotionFX)。这个特性在这里更多地使用了四元数。该数据将代表用户在睡眠时间的运动,也许这可以用来估计睡眠质量。

MotionFX 是 X-CUBE-MEMS1 软件的中间件库组件,在 STM32 上运行。它提供实时运动传感器数据融合。它还执行陀螺仪偏置和磁力计硬铁校准[2]

仪表。仪表特性以 mV 为单位发送电池电压。

所有特征都有属性:READ、NOTIFY、WRITE 等。更多信息请参见此处。 Arduino 上的 ESP32 BLE 客户端有一个 notify 和 read 回调,主要区别是当一个特征值改变时服务器会发送一个通知。

 
 
 
pYYBAGOX0BGAMwenAACHNBNC_vg022.jpg
 
1 / 3环境特性可以读取和通知
 

要获取数据,必须启用和禁用通知,肯定有更好的方法可以做到这一点,但似乎发送NULL会禁用通知。

if(p1RemoteCharacteristic->canNotify())
    p1RemoteCharacteristic->registerForNotify(NotifyCallback);
//Serial.println("Unregister for notifying!");
delay(100);
p1RemoteCharacteristic->registerForNotify(NULL);

此时我们已准备好配置 ESP32 以连接到 Adafruit IO。

IFTTT 小程序

由于我们想控制 AC 风扇的速度,我们认为如果可以使用 Google Assistant 进行语音控制会很好。

我们在 IFTTT 上创建了以下小程序:高速、低速、关闭 自动模式控制放置在床头柜上的小风扇。自动模式旨在根据可能指示潮热发作的皮肤温度变化打开/关闭风扇。

pYYBAGOX0BWAOCnkAADgasTtu8M549.png
IFTTT 小程序
 

DOIT Esp32 DevKit v1 开发板只有 4MB 内存,因此不适合合并 BLE 和 MQTT :(

poYBAGOX0CaAL3hUAACasK54PAs144.png
Esp32 DevKit 空间不足
 

电路

亚伯拉罕有备用的 16MB ESP32 WRover 模块,他在另一个项目中使用了这些模块。

pYYBAGOX0FKARbmXAAVM4ugaFsk402.png
ESP32 WRover 模块
 

我们使用 Abraham 的 ODOROID-GO 定制 PCB,他手工焊接了启用 ESP32 WRover 模块所需的最少组件:USB 转串口、USB 连接器、3.3V LDO 等。

 
 
 
pYYBAGOX0GyAMW8BAANKBf7ZSGw61.jpeg
 
1 / 2定制 PCB odroid go
 

仅使用了几个 GPIO,因此左侧的标头(安装 SPI tft 屏幕的位置)有足够的 GPIO 来控制继电器板。

ESP32 GPIO 不能承受 5V 电压,因此 Abraham 为 2 个继电器、电源和复位按钮制作了这个小屏蔽。

pYYBAGOX0ICAfl-EAAJ_YIIqy3I950.png
使用 ESP32 wRover 板、电源、继电器板和复位按钮进行风扇控制
 

(00:43)看到

记录数据

我们正在使用 Adafruit IO 记录传感器的数据,这些是我们的提要:

  • 温度。
  • 湿度。
  • 压力。
  • 用户随时间的运动。
  • 随着时间的推移潮热发作。
  • 电池电量。
poYBAGOX0IOAY9HwAACgSxuem9M806.png
Adafruit IO 仪表板
 

 

 

此功能仍需要改进,可能会在更长的时间内平均温度通知,而不仅仅是在发布之后。我们使用吹风机来提高温度,当电路板通电时,第一个脉冲是假潮热,我们需要解决这个问题,但接下来的 2 个温度峰值代表潮热事件。

pYYBAGOX0IqAR8prAABqGywRHiM317.png
上电时第一事件误触发
 

传感器板放置在 3D 打印外壳内。

 

外壳有一个用于温度传感器和复位按钮的开口

 
 
 
pYYBAGOX0JGAHn7gAAE2WLwB-Y8750.png
 
1 / 2温度传感器开口
 

温度传感器应该与皮肤接触,但我们需要收集更多信息,例如 HTS221 是否是皮肤温度的正确传感器。此外,我们需要确定传感器的正确位置,可能在手腕内或更靠近胸部。

未来的工作

传感器板有许多传感器,可用于收集更多信息,例如:

  • MEMS麦克风可用于监测打鼾。
  • Motion FX 传感器甚至可以推断出您的睡眠位置。
  • BlueNRG-2 还具有自由落体检测功能。

也许热敏电阻红外温度计可能是测量皮肤温度的更好方法。此外,传感器的位置也很重要,但它必须是非侵入性的,以便在睡觉时佩戴。

除了皮肤温度升高外,潮热还可能导致女性心率加快。当身体试图降低温度时,这会导致突然出汗。这种症状还可能伴有心悸和头晕[3]

心率测量可以使这个项目更加稳健,也许可以用来预测潮热。

为简单起见,选择使用小型交流风扇,但生物特征数据可用于触发更复杂的执行器。

我们仍然需要修复 Arduino 草图的错误并对其进行优化。

结论

在炎热的一天随时享受清新的微风是很好的,但在潮热时立即得到缓解就更好了!

通过这个项目,我们打算解决更年期最常见的症状之一。由于自动模式是一种简单的开/关控制,因此不需要复杂的算法和电子设备。

大部分时间都花在弄清楚如何让 BLE 设备按预期工作。我们利用 bluetile 小尺寸和低功耗的优势构建了一个小型应用程序,该应用程序可以扩展到我们目前提供的内容之外。

希望你喜欢它!


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

评论

查看更多

下载排行

本周

  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次下载  |  免费