资料介绍
描述
该项目旨在缓解更年期常见的潮热症状,它是一个由可穿戴设备制成的物联网系统,可跟踪用户在睡眠期间的皮肤温度和运动。可穿戴设备通过蓝牙 LE (BLE) 将温度和运动数据发送到风扇控制器,当皮肤温度升高时风扇会被激活,并且数据会记录在云服务中。用户还可以使用谷歌助手来改变风扇速度。
请记住,这个项目不会阻止您出现潮热,但可以让您感到放心,请务必咨询您的医生。我们认为该项目不仅对更年期的女性有益,对盗汗患者也有益,从而改善睡眠质量。
由于 COVID-19 隔离,我们想用已经在家中的电路板/传感器构建一些东西,这使得获得更多材料变得更加困难。我将尝试描述亚伯拉罕和我如何开发这个正在进行的项目,我们遇到的一些挑战以及我们如何尝试解决它们。
可穿戴设备
该项目围绕 STMicroelectronics STEVAL-BCN002V1B开发套件(又名 BlueTile)构建。
STEVAL-BCN002V1B 支持蓝牙 LE 的传感器节点开发套件具有基于 BlueNRG-2 SoC 蓝牙低功耗应用处理器的 STEVAL-BCN002V1 多传感器板。该传感器板具有加速度计、陀螺仪、磁力计、压力、湿度、飞行时间和麦克风传感器,并由通用 CR2032 纽扣电池[1]供电。
传感器板上的BlueNRG-2 SoC 可以使用默认程序使用适用于 Android 和 iOS 的STMicro Sensor Demo App连接到您的智能手机。
这些是您可以使用传感器演示应用程序执行的一些功能,您甚至可以记录数据,此功能将 CSV 文件发送到您的电子邮件。
BlueTile 测试
为了对传感器板进行编程,我们使用了您获得套件时提供的 STEVAL-BCN002V1D编程板。您可以通过多种方式对传感器板进行编程,这是用户手册。
我们使用 BlueNRG-2 Navigator 来熟悉传感器板,您可以使用大量示例。这是一个数据简介。
BlueNRG -2 Navigator项目可用于Keil和Atollic 。在传感器板上运行的程序是Sensor Demo App
. 首先我们尝试在 中更改设备本地名称sensors.c
,以确保修改源代码和编程板是可行的。
为此,我们在使用 Keil 生成 hex 文件后使用了 BlueNRG-1_2 flasher实用程序。
值得一提的是,在刷新应用程序之前,必须 Service Manager OTA
先使用 flasher 实用程序加载第一个,然后为应用程序生成生成的 hex 文件。
实际设备名称是BCN-002,但不确定与本地名称有什么区别。
在文件中的Sensor_DeviceInit()
函数中sensors.c
更改了aci_gap_set_authentication_requirement
删除引脚配对。只需更改USE_FIXED_PIN_FOR_PAIRING
为DONOT_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 节的内容。
这些是服务下可用的特性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 客户端示例。
程序寻找服务00000000-0001-11E1-9AB4-0002A5D5C51B
和001c0000-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(客户端),连接成功,但在创建客户端时挂起。
我们遇到了 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 能够与传感器板建立连接,连接没有挂起。我们需要调查为什么在扫描时在传感器板上看不到服务。
BLE 客户端示例具有通知回调函数,但数据未正确显示。需要更新回调函数(由Andreas Spiess完成)以显示原始数据。
读取特征值
该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 传感器演示应用程序获得了一些日志。
在温度日志中,0x1B01
MSB 为 0x01 = 283 dec
,但以“十分之一度”表示,即为 28.3°C。
我们使用类似的方法来获取湿度和压力值。然后环境数据以易于理解的方式显示在控制台上。
仅包括另外两个特征:
运动传感器 (MotionFX)。这个特性在这里更多地使用了四元数。该数据将代表用户在睡眠时间的运动,也许这可以用来估计睡眠质量。
MotionFX 是 X-CUBE-MEMS1 软件的中间件库组件,在 STM32 上运行。它提供实时运动传感器数据融合。它还执行陀螺仪偏置和磁力计硬铁校准[2] 。
仪表。仪表特性以 mV 为单位发送电池电压。
所有特征都有属性:READ、NOTIFY、WRITE 等。更多信息请参见此处。 Arduino 上的 ESP32 BLE 客户端有一个 notify 和 read 回调,主要区别是当一个特征值改变时服务器会发送一个通知。
要获取数据,必须启用和禁用通知,肯定有更好的方法可以做到这一点,但似乎发送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 上创建了以下小程序:高速、低速、关闭和 自动模式来控制放置在床头柜上的小风扇。自动模式旨在根据可能指示潮热发作的皮肤温度变化打开/关闭风扇。
DOIT Esp32 DevKit v1 开发板只有 4MB 内存,因此不适合合并 BLE 和 MQTT :(
电路
亚伯拉罕有备用的 16MB ESP32 WRover 模块,他在另一个项目中使用了这些模块。
我们使用 Abraham 的 ODOROID-GO 定制 PCB,他手工焊接了启用 ESP32 WRover 模块所需的最少组件:USB 转串口、USB 连接器、3.3V LDO 等。
仅使用了几个 GPIO,因此左侧的标头(安装 SPI tft 屏幕的位置)有足够的 GPIO 来控制继电器板。
ESP32 GPIO 不能承受 5V 电压,因此 Abraham 为 2 个继电器、电源和复位按钮制作了这个小屏蔽。
记录数据
我们正在使用 Adafruit IO 记录传感器的数据,这些是我们的提要:
- 温度。
- 湿度。
- 压力。
- 用户随时间的运动。
- 随着时间的推移潮热发作。
- 电池电量。
。
此功能仍需要改进,可能会在更长的时间内平均温度通知,而不仅仅是在发布之后。我们使用吹风机来提高温度,当电路板通电时,第一个脉冲是假潮热,我们需要解决这个问题,但接下来的 2 个温度峰值代表潮热事件。
传感器板放置在 3D 打印外壳内。
外壳有一个用于温度传感器和复位按钮的开口
温度传感器应该与皮肤接触,但我们需要收集更多信息,例如 HTS221 是否是皮肤温度的正确传感器。此外,我们需要确定传感器的正确位置,可能在手腕内或更靠近胸部。
未来的工作
传感器板有许多传感器,可用于收集更多信息,例如:
- MEMS麦克风可用于监测打鼾。
- Motion FX 传感器甚至可以推断出您的睡眠位置。
- BlueNRG-2 还具有自由落体检测功能。
也许热敏电阻或红外温度计可能是测量皮肤温度的更好方法。此外,传感器的位置也很重要,但它必须是非侵入性的,以便在睡觉时佩戴。
除了皮肤温度升高外,潮热还可能导致女性心率加快。当身体试图降低温度时,这会导致突然出汗。这种症状还可能伴有心悸和头晕[3] 。
心率测量可以使这个项目更加稳健,也许可以用来预测潮热。
为简单起见,选择使用小型交流风扇,但生物特征数据可用于触发更复杂的执行器。
我们仍然需要修复 Arduino 草图的错误并对其进行优化。
结论
在炎热的一天随时享受清新的微风是很好的,但在潮热时立即得到缓解就更好了!
通过这个项目,我们打算解决更年期最常见的症状之一。由于自动模式是一种简单的开/关控制,因此不需要复杂的算法和电子设备。
大部分时间都花在弄清楚如何让 BLE 设备按预期工作。我们利用 bluetile 小尺寸和低功耗的优势构建了一个小型应用程序,该应用程序可以扩展到我们目前提供的内容之外。
希望你喜欢它!
- 构建可以检测潮热并触发动作来缓解人的设备
- 智能设备开源项目
- 时钟开源项目
- 致命事故风险缓解(FARM)开源分享
- 可检查您打开门冰箱次数和时间的开源项目
- 可远程监控蜂巢的开源项目
- 开源项目
- 开源项目,毕业设计
- 嵌入式开源项目
- 自动售货机项目教程及文件下载 0次下载
- 浑源软件项目中的代码结构和开源组件综述 5次下载
- 收藏!姿态估计开源项目汇总资料下载
- 基于症状构成成分的上下位关系自动抽取方法 0次下载
- VR模拟病和症状介绍以及缓解方法 2次下载
- Java最著名的开源项目 0次下载
- 关于FPGA的开源项目介绍 1161次阅读
- 优秀的IC/FPGA开源项目:伪红外图像处理 1949次阅读
- 怎么上手 PR 流程?如何开始参与开源项目? 1470次阅读
- 选择开源项目的重要因素 2122次阅读
- 全年开源项目的盘点和总结 3231次阅读
- 一个名为“LeetCodeAnimation”的开源项目 4481次阅读
- NASA的开源软件是什么?NASA的开源软件的详细分析 7188次阅读
- 基于Altium Designer的OSHw开源项目 3609次阅读
- 利用以下八个开源AI威廉希尔官方网站 ,你的机器学习项目可提升到新水平 1908次阅读
- 2018 年 2 月份 GitHub 上最热门的开源项目 4554次阅读
- 开发者不可错过的开源项目—人工智能篇 6184次阅读
- 展示Python机器学习开源项目以及在分析过程中发现的非常有趣的见解和趋势 4080次阅读
- Python机器学习开源项目分析过程中的见解和趋势 703次阅读
- FAST:基于FPGA的SDN交换机开源项目(一) 4531次阅读
- 11个机器学习开源项目 2767次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多