这是Curam Senes ,在拉丁语中的意思是“帮助我们的老人”。
老年人面临的最大问题之一是孤独感,COVID-19 流行病及其导致我们陷入的社会孤立加剧了孤独感。在欧洲,许多老年人拥有远程护理系统,这是一种连接到网络的设备,带有一个带有按钮的挂件,用于通知紧急情况并打开与护理人员的通信线路。他会评估情况,并在紧急情况下打电话给家人或医生。
老年人是认知问题最多的人,同时也是服用药物最多的人。这些设备无法帮助他们。因此,我们的目标是创造一种在非紧急情况下提供帮助的设备。我们想:
让我们看看设备是如何工作的,以及不同的参与者如何与之交互。
第一点是将数据输入到系统中。我们开发了一个Alexa Skill ,它启动了一个 python 函数,将其(名称和频率)存储在数据库中。因此,护理人员可以与 Alexa 交谈并更新有关他的患者的信息,更多详细信息将在后面的部分中介绍。更专业的方式是将健康IT系统与我们的系统连接起来。它是一个标准的 HL7 ,它允许通信健康系统。我们可以将此信息导入为 HL7、OMP ^ O09 消息(治疗顺序)、SIU^S12 用于医生预约,以及 ORU 用于医疗检查结果。与欢笑连接(一个可以管理这些消息的开源程序),我们可以配置一个通道,在数据库中存储药物的名称和服用频率。但我们更喜欢创客方式。
我们使用AWS Event Bridge管理事件,它会触发一些 lambda 函数,csDispensation01和csDispensation002 。它在数据库中查找并为该小时内的每个待处理信息生成一条 JSON 消息,然后我们将其发送到已挂载的 IoT 的MQTT 队列。我们从数据库中获取主题,患者表。
AWS IoT Edukit 读取这些 MQTT 消息。我从Cloud Connected Blinky示例开始。我还添加了一些任务,并且我在 SDCard 中存储了一些消息,因此我可以在需要与人互动时播放它们。我们使用闪烁的 LED来引起必须服药的人的注意。当它花费一段时间而不与患者互动时,它会改变颜色。药物的名称写在屏幕上。我们可以展示十种不同的药物。当患者服用药物时,他触摸屏幕,系统会更新药物状态并清除屏幕。
另一个日常事件(AWS 事件桥)触发另一个 lambda 函数csNotification02 ,该函数在数据库中查找过去 24 小时内未服用的药物,并使用AWS SNS向医疗护理人员的电话发送消息。
这是一个非常简单的数据模型,我们会在添加改进时完成它。
有六张表:
相关的是 dms 表中药物的状态,它们是:
我们将 CuramSenes 会记住服用的药物存储在MariaDB表中。正如我之前告诉你的,专业的(有几个病人,连接到医院)的方式是使用 HL7。但就目前而言,我开发了一种更具创客性的 Alexa Skill。
我们从python中的 hello 单词示例开始。代码的某些部分是原始的。我已经更改了名称和调用短语,新药。目前,它可以,但它不是一个不言自明的名字。
我使用了 2 种新闻插槽类型,一种是当时的亚马逊实施。对于药物,我创建了一个新的,当我在示例中使用的药物名称时。但是我们可以用类似Vademecum 的列表填充这个列表。
我添加了一个新的 Intent,NewMedicine。它具有可以调用的方式。
当有人说出这些短语时,它会启动一个 python 函数,它会连接到数据库并将信息存储在那里。代码在GitHub中:
这是一个示例交互。
桌子还有一个元素......
根据论坛管理员的建议,我们使用了 ESP-IDF 开发环境,带有Platformio和 IDE Visual Studio Code 。
起点是闪烁 LED的例子。我们保留了管理 LED 的任务 blink_task,稍作修改,我们只放置了一个变量来指示它闪烁的颜色,并在第一次警告后经过一段时间后将其更改为红色。增加了五个任务:
在主循环中,我们有一段代码告诉我们这些任务的堆以及在 Core2forAWS 库中启动的 GUI 管理任务的最大内存消耗是多少。它允许我们调试内存消耗并最小化我们分配给每个任务的堆,留下大约 1kb 的安全余量。
ui_task
我遵循了示例的设计。我们保留指示 WIFI 网络是否已连接的文本,更改图标的颜色。另一个文本已添加到左侧,启动时显示为“____”,连接到 AWS IoT 服务器时会显示 MQTT 文本。我们放置这个控件是因为有时它连接到 WIFI 但不连接到消息队列。如果我们重新启动设备,它会重新连接。在上栏的中间部分,我们有蓝牙符号,当它连接并检测到蓝牙监控设备的存在时,它会变成蓝色。如果设备消失,它会变为灰色。
在中央部分,有一个列表,我们在其中写下用户等待服用的药物名称,如果有必要进行医学测试(测量脉搏和血液中的氧饱和度),或者如果您与医生预约。服药后,触摸此文本字段,将启动表明您已服药的事件(我们删除消息,LED 停止闪烁,我们向后端发送 MQTT 消息)
这个任务有很多问题,我认为是由于 lvgl 库中的一个我无法调试的错误,我们稍后会讨论。
aws_iot_task
该任务负责连接到 MQTT 服务器,将其中一个标记为接收到的消息的回调,并将消息发送到服务器(我们为每种类型的消息使用一个控制变量)。我们保留了示例中的大部分代码,对其进行了一些简化,并将其放在另一个任务中。
与服务器的连接部分有点“敏感”,当代码被触摸时,就会出现连接问题。在优化此任务之前,我们已优先考虑程序其他部分的开发。
我们使用的 MQTT 队列是:
cs_task
在这个任务中,我们控制设备的业务逻辑。很简单,我们将消息在屏幕上显示的时间与预定义的变量PAST_DUE_TIME (对于测试是 10 秒,通常是一个小时)进行比较,然后我们执行相关任务:如果它大于第一,我们将 LED 的颜色更改为红色并发出音频消息,我们通过在qSoundQueue队列中发送内部消息来做到这一点。
如果大于三个,我们从列表中删除该药物。将药物长期留在清单上似乎很危险,因为您可以连续服用两剂。将来可以改进,包括在药物的描述中,或者在服用中,如果必须删除或不删除。我们控制是否点击了药物所在的文本小部件,并清理它。
我们还读取了一个内部队列,如果有新的药物到达,我们会被通知(通过 MQTT 回调)。
speakMe_task
队列中有一个任务被阻塞,等待播放带有 wav 文件名称的消息。我们安装 SD 卡,读取文件并将其发送到扬声器。我们已经使用 AWS Polly 服务创建了音频文件。由于SD卡使用SPI总线,就像屏幕一样,我们每次发送消息时都会挂载和卸载设备,以避免干扰。
必须记录音频的比特率存在一个小问题,但它已在库中配置并已修改为 22Kh。我们使用将文本转换为语音的 AWS Polly 服务录制了音频。该系统可以扩展以允许与用户进行更流畅的对话,例如告诉他要服用药物的名称或时间。
bluescan_task
这项任务是给我们带来最多技术问题的任务。
一方面,platformio-ESPIDF中蓝牙ble的实现不完整,执行menuconfig时没有出现蓝牙配置选项。我们已将另一个项目的配置复制到 sdkconfig 文件中。此外,一些头文件 (*.h) 尽管位于组件目录中,但读取效果不佳。我们必须将它们复制回包含目录。我们开发了这个任务,它工作得很好,但是当它与 GUI 集成时,它给我们带来了一个问题,guiTask 任务被钩住,并且看门狗用回溯提醒我们。我们无法解决它,但似乎是 lvgl 库的问题。我在书店的论坛里问过,还是没能解决。
许多老年人都有总机,当他们发生事故时,可以将他们连接到电话助理,然后按下脖子上的按钮。我们希望在老年人智力受损的家庭中补充这个总机。通过在患者的项圈上添加蓝牙设备,如果他不应该离开家,该设备会通知我们。
该功能在代码中被禁用,等待修复错误。
心脏任务
这个任务有不同的生命周期管理。其他的在主函数中启动,当消息到达请求心脏测试时启动。
在任务开始时,传感器被初始化,一个max300100,它读取每分钟心跳和血液中氧饱和度的记录。然后我们有一个循环,我们在其中获得几个测量值并计算平均值。有了这些值,我们就形成了一个 JSON 消息,我们通过 MQTT 任务发送到后端,它就结束了。在后端,我们将数据存储在 bd 中。随后的改进将允许将这些信息传递给护理人员,或者通过 HL7 消息将其合并到患者的电子病历中,或者作为带有图形的门户(例如使用 Grafena)直接从数据库中读取这些数据。
应用程序后端是使用 AWS 服务定义的。
数据使用 AWS RDS 服务存储在 MariaDB 数据库中。我们已经在另一部分看到了数据模型。
后端的主要部分由 lambda 函数组成:
当消息到达 MQTT 主题时,它们由 AWS IoT 触发:
csMQTT001:读取患者服用药物后端 JSON 消息的函数,更新 dbd 中的状态(已接收、已服用、已忘记)
csMQTT002: 在医学测试后端读取 JSON 消息的函数,在本例中是心率和氧饱和度。
由 EventBridge 事件触发
每日活动
csNotification002:检查最后一天的用药数据,如果没有服用任何药物,则会向护理人员的手机发送短信通知他。
csDispense002:查阅表格以查看患者是否与医生预约。如果是,则向设备发送 JSON-MQTT 消息以通知患者。
每小时一个事件
csDispense001:检查表格以查看患者在接下来的一个小时内是否需要服用任何药物或进行检查。如果是,则在测试表中创建一条记录,并向设备发送 JSON-MQTT 消息以通知患者。
启动此功能的事件是:
构建它很容易,我们只需要遵循以下几点:
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !