更年期是女性一生中不可避免的现象。它会导致强烈的荷尔蒙剧变,这可能会产生或多或少的后果,具体取决于个人。
这些症状可以是多种多样的,可以在此处找到 35 种主要症状的列表。
Hygie 项目旨在帮助女性在这个复杂的时期倾听并跟随自己的身体。为此,它提供了一个简单且不断发展的界面,允许随着时间的推移追踪不同的症状。这款小巧的设备可以轻松放入外套口袋或手提包中,随身携带。
Hygieia(法语中的Hygie)是希腊神话中药神阿斯克勒庇俄斯的女儿之一。她是健康的女神/化身。
顶部的 4 个按钮可让您随时间追踪症状。根据需要,它们中的每一个都必须与一个(单击)或两个(双击)症状相关联,并因此对其用户重复出现。
这是一个配置示例:
在症状出现时按下这些按钮将使您能够随着时间的推移追踪事件并更好地了解它们的复发。因此,使用 Hygie 一段时间会在移动应用程序上生成图表。
这些数据还以表格形式与简单的解释相关联,例如“疲劳现象在饭后特别存在”或“牙龈问题”通常与“乳房疼痛”相关联。
但 Hygie 不仅仅是一个简单的计数器,它还提供更高级的功能来与您的身体保持一致。在某些症状出现时,用户可以将拇指放在圆圈中间的位置,并实时测量她的心跳。
该信息可以与所讨论的症状相关联。
用户可以远程测量她的体温
用户还可以将设备放在她的腹部以测量她的呼吸速度。
现在我们可以跟踪和追踪这些症状的演变,是时候努力减少它们了。
您可以添加应用程序推荐的可能对您的症状产生积极影响的活动。
随着时间的推移,您可以通过查看图表轻松检查其有效性!
为了解决某些症状,例如睡眠和注意力问题,有时建议进行冥想或尝试将注意力集中在舒缓的事情上。
在这种情况下,模块会发出蓝色光晕,以平静呼吸的速度脉动。尝试深呼吸,尽可能集中注意力在光线上。
下一节将介绍图中所示的每个组件。这些组件中的大多数都不是唯一的,可以由提供相同功能的等效组件替换。例如,如果您想添加一个 3 轴磁力计,您可以将 MPU6050 替换为 MPU9250。代码已被分离成可以让您轻松替换组件的功能。
在市场上所有的 Arduino 电路中,这可能是最小和最便宜的微控制器板之一。只有绝对最小值才能运行板载 Atmega328p(甚至没有 USB 连接器!)。
要对其进行编程,我们必须使用另一个 Arduino UNO 板(示例)或 FTDI 适配器。它有一个 Atmega328p(与 Arduino UNO 相同),可以购买 3.3V (8Mhz) 或 5V (16MHz) 配置。在这里,我们选择 3.3V 以最大限度地节省能源。
那些小板可以检测几个轴上的运动。现在,我们通过在智能手机上玩游戏非常了解它们。这个有 6 个轴(无磁电机),但这对于我们的应用来说应该足够了。
这是我基于 FreeIMU 软件制作的一个小演示应用程序。它链接到一个处理接口(也可以在 GIT repo 上找到)。
HC-06 模块是一个易于使用的原型蓝牙模块接口。它使用串行通信和 AT 命令与主模块通信。
这个看起来像赛博电子的传感器在它闪闪发光的眼睛后面隐藏着一个秘密。与大多数温度传感器不同,该传感器测量从远程物体反射回来的红外光,因此无需物理接触即可感应温度。
MAX30100 是一个集成的粒子传感模块。它包括内部 LED、光电探测器、光学元件和具有环境光抑制功能的低噪声电子设备。新版本的 MAX30102 使用相同的代码也能正常工作。我也试过 MAX30105,但它似乎不太稳定。
我们的系统可能并不总是通过蓝牙连接。当它关闭时,它无法确切知道现在是什么时间。RTC 或实时时钟可确保系统始终知道按下按钮时的日期和时间。
该设备有两个功能:它管理电流以允许系统由电池供电并通过 USB 充电。但它也将 3.7V Lipo 电压提升至 5V。
要使用远程温度读取功能,建议将红灯投射到要读取的对象上。我没有添加一个简单的红色 LED,而是使用了一个 RGB LED,因为微控制器上仍有几个未使用的 PIN。绿色 LED 将允许我向用户指示信息,例如按钮按下的验证。蓝色 LED 用于放松 LED 呼吸。
这里我选择 12mm 按钮,因为如果您将设备放在包中,它们会更容易找到。不要忘记使用上拉电阻!
这个按钮只是用来切断系统的电源。但是,它不会阻止电池充电。
该板用于将程序加载到 ATmega328p 中。通过让它插入它还允许创建与计算机的串行链接以进行调试。
在本节中,您将找到电路原理图:
这里要记住的最重要的事情是,几乎整个系统都在 3.3V 下工作。这迫使我仔细选择组件(起初我想使用 WS2812 RGB LED,但它们在 3.3V 中相当不稳定,所以我不得不将它们移除......对于显色性来说太糟糕了!)。
起初,我以为 3.6V 蓝牙可以在 3.7V 电池上工作,但它似乎不稳定......所以我不得不在最后添加一个 BOOST 以仅用 5V 为这部分供电,并使用嵌入式稳压器降压其他所有部分在 Arduino Pro Mini 上。我可能会在下一个版本中更改蓝牙板以移除 BOOST 并使所有系统在 3.3V 下工作。这也将是迁移到 BLE 的好时机。
另一个有趣的部分是开发带有 MOSFET 的小板,以切断未使用模块的电源。事实上,这个系统只是偶尔使用一些功能。所以遗憾的是像MPU6050这样的模块一直在耗电。
现在您可以使用Ctrl+R
. 如果一切正常,应该会出现消息完成编译。之后,用于Ctrl+U
在 Arduino Pro Mini Board 上加载程序。
然后,您可以打开串行监视器以验证系统的不同功能
现在您已在微控制器中准备好整个程序。由于系统上有许多不同的外围设备,因此单独测试每个模块和连接可能会很有趣。这就是为什么您可以在 Arduino 主板上找到专用于每个通信外围设备的 Arduino 程序的原因。
所有这些程序都使用串行功能。这是获取精确信息以查看一切是否正常的简单方法。
为了测试 MPU6050,我实际上添加了一个来自 FreeIMU 的处理程序。该程序允许您在计算机上检查您的棋盘位置。要使用这个程序,你必须下载 Processing并用它打开.pde 文件。不要忘记在处理程序中更改端口号!
所有设计均使用 Sketchup 2017 制作。因此,您可以作为个人免费打开和修改 3D。
Sketchup 无法以原生方式导出 STL 文件以进行 3D 打印。您必须进入扩展管理器并添加一个 STL 模块。
使用此模块,您将生成可由 3D 打印软件(如 Cura for Ultimaker)读取的 STL 文件。选择专用于您的打印机的软件。
现在我们准备打印 Hygie 设备
蓝牙应用程序开发是一个我不太了解的世界。从 Android Studio 从头开始让我有点害怕。所以我尝试了App Inventor MIT以获得更图形化的方法。它是一款免费且易于使用的软件来创建 Android 应用程序。
快速设置基本功能的创建,例如与 Arduino 的简单串行对话。你可以在网上找到很多例子,比如这里。
另一方面,设置更复杂的窗口管理,尤其是通信协议可能需要大量工作。
对于 Hygie,我创建了一个基于 2 个窗口的应用程序,允许在一个窗口上连接/更改模式,并在另一个窗口上检索可用数据。在这部分,应用程序向模块发送请求消息。如果这个有数据,它会按顺序发送它们,直到出现一条消息以防止缓冲区为空。然后使用图标和显示每个请求的小下拉菜单对每个症状进行分类。
要使用该应用程序,您需要在 MIT App Inventor 上创建一个帐户。然后,您只需导入 Git 存储库中可用的 .aia 项目。
然后你可以点击构建(提供二维码)
然后,在您的智能手机上下载 MIT Inventor 应用程序并点击扫描二维码。这将下载应用程序,只需安装它并在您的参数上配对蓝牙 HC-05。
现在你准备好了!
3.1。纸模型 + 按钮 + 调光 LED (WS2812)
我喜欢从 3D 纸模型开始设计。它并不多,但它让您有机会查看是否所有东西都可以放入其中并将物品拿在手中。这里我也想验证一下纸里面WS2812的亮度(最后我没用那些LED)。
3.2 测试开发板上所有可用的功能
此时,仍然缺少几个组件:MLX90614、电池、BOOST 和 MAX30100(此处替换为 MAX30105)
3.3 第一次 3D 打印,不确定一切都适合...
3.4 第二版印刷、油漆和组装
一切都合适!但组装并不容易......所以最后一个版本内部的高度为 16 毫米(0.63 英寸),而不是 14 毫米(0.55 英寸)。
3.5 等待lasts组件到达
在这个阶段,我还没有收到所有组件来完成所有功能的测试。最令人担忧的可能是 MLX90614 温度传感器缺货(或到处价格过高)。电池/升压管理器也不见了。所以我现在使用了一个简单的 TP4056 管理器(没有 5V……没有蓝牙……)。
我猜很多医疗设备都在使用温度传感器,而当前的危机导致它们缺货……由于大多数软件砖已经存在,这不应该阻止我完成开发。
3.6 伪实时 Arduino 代码
大多数 Arduino 代码示例都不能实时工作。与 NXP 或 ST 的其他微控制器相比,Atmega328p 实际上是一个相当慢的微控制器,因此在其上并行执行大量任务并不常见。
所以我尝试了一个“自制”(而且非常简单!)实时系统。按钮是从不同模式切换的主要控制器(长按按钮)。
主循环正在计算一个 2 字节的变量
int cpt=0; // counting the loop from 0 to 0xFFFF
当它达到 0xFFFF 时,它会回到 0 并重新开始。
我的主要任务是用进程频率定义的(“cpt”从 0 到 0xFFFF 期间它将被调用的次数)。
#define MPU6050_FREQUENCY 128
#define MPU6050_FREQUENCY_READ_PER_CYCLE cpt%((MAX_COUNTER/MPU6050_FREQUENCY)+1)
在主循环中,还根据它们的模式(使用按钮定义)调用函数。这里只有当我们处于 device_MODE 4 时才会调用,这意味着长按按钮 4。
if (MPU6050_FREQUENCY_READ_PER_CYCLE == 0 && device_MODE==4){
3.7 在 I2C 总线上工作
我们有 5 个与 I2C 通信的组件。Arduino Micro 作为主机和 4 个从机(MLX90614、MPU6050、MAX30100 和 DS1307)。由于这些组件永远不会一起运行,我认为它应该可以正常工作......
但是 MPU6050 和 DS1307 都使用标识地址 0x68 !所以你们俩都会回答 I2C 请求。
在两个设备不能一起工作的情况下运行了大量测试后......我检查了 MPU6050 数据表。PIN AD0 存在于芯片上,如果您将其拉起,则可将您的地址更改为 0x69。这是为您想在同一总线上使用 2 个 MPU6050 而设计的。所以只需一个引体向上,一切似乎都正常。
3.8 内存和存储
由于我们希望设备在没有任何蓝牙连接的情况下也能正常工作,因此我们需要存储所有记录的值。
Atmega328p 有 1024 字节的 EEPROM 存储器可用。我选择 8 个字节的“集群”,所有这些信息都编码在 1 个字节上:
症状编号/值(如果按钮为 0)/小时/分钟/秒/日/月/年
我们可以在 EEPROM 中存储 128 个集群。在我们需要在应用程序上加载数据之后。
3.9 管理电池
我花了一些时间为我的系统选择主控板。事实上,我想保持 Arduino 标准以加速我的库的开发。然而,大多数 Arduino 板工作在 5V,因为这是 Atmega328p 微控制器在全功率下工作所需的电压,即 16MHz。
我还想用锂电池供电。缺点是这些电池的标称电压为 3.7V。要将电压提高到 5V,在这种情况下需要使用 BOOST 模块,不幸的是非常耗能...
为了开发这个项目,我选择将 Atmega328p 的速度降低到 8Mhz。在这个速度下,我可以在 3.3V 下使用我的 Atmega328,这非常适合电池和兼容性。因此,我不需要使用升压模块或 5V/3.3V 电压转换器。另一方面,我只能在 8Mhz 下使用我的 Atmega328p,并确保所有选定的组件都在 3.3V 范围内工作。
在 8Mhz 下使用 ATmega328p 的功率水平确实受到限制。在这里,我打赌,由于我不将所有组件一起使用,8MHz 可能就足够了......目前一切都很好!:)
起初,我不想使用任何 BOOST。HC-05 蓝牙规格最低为 3.6V。所以我想我可以直接从 Lipo 以 4.2V 为蓝牙供电。有了这个解决方案,一个简单的 TP4056 就足以管理我的电池。但是这个解决方案蓝牙不稳定......所以我不得不更换我的电源板并有一个 5V BOOST 输出......再次调节到 3.3V :-(
拥有良好的能量表现是一项复杂的工作。大多数情况下,不可能像我使用的那样使用架子上的组件来做到这一点……在这里,我只能通过将未使用的组件设置为睡眠状态并更改板上的某些组件来避免重大的能量泄漏。
作为能量优化的一个例子,在大多数电路中,人们使用 10kohm 拉电阻作为按钮。但这是损失的能量:
I=U/R >> I=3.3V / 10000ohm >> I=0.33mA 每小时!
每小时 0.33mA 的电流不断从这些电阻器中泄漏,这对于嵌入式系统来说是一个巨大的损失。像这样的一个电阻器将在 125 天内耗尽我们的 1000mA 电阻器......
如果您使用简单的 100kohm,则需要 0.033mA,因此需要 1250 天!
这个项目的构建非常有趣。它在不同的技术部分教会了我很多东西。整个东西是功能性的,但在许多方面仍然需要改进:
我希望它能帮助很多人开发医疗连接对象。我会找时间继续快速改进它:)
如果您有任何问题,请不要犹豫与我联系!
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !