×

关于监测孤独老年人健康状况的开源项目

消耗积分:0 | 格式:zip | 大小:0.14 MB | 2023-02-03

h1654155701.3944

分享资料个

描述

我的GitHub 存储库中有这个项目的完整描述你也可以去那里阅读我的项目。

项目概况

我很好”项目是关于监测特别孤独的老年人的健康状况,他们可能无法与家人或其他人进行日常接触。在这个项目中,我选择将典型用户表示为“奶奶”。

该项目提供了一个简单的解决方案,以帮助以非侵入式方式监控人员。每天按几次简单的按钮,就可以表示我很好 ,不需要帮助。如果常规信号停止,系统会检测到这一点并向家庭成员发送电子邮件警报,然后他们可以做出适当的回应。这确保了在个人问题阻止该人按下按钮的情况下,可以在数小时而不是数天甚至更长时间内提供帮助......

ImFine.png?auto=compress%2Cformat&w=740&h=555&fit=max
系统概念图
 

未来的选择

Arduino/Genuino MKR1000设备端的实现 有意保持简单,功能很少,但系统可以轻松扩展其他类型的传感器。传感器,如使用 PIR 传感器的移动检测、用于检测火灾的烟雾探测器、用于检测房屋内异常温度的温度传感器等。

该项目实际上已经实现了一个 DHT22 传感器来测量温度和湿度,主要作为概念验证和测试MKR1000 设备 与Microsoft Azure IoTHub之间的通信 (数据目前未在主应用程序中监控)。

“奶奶”一个人住

本节讲述一个关于奶奶的故事。

奶奶 一个人住在家里,每天不和家人说话。

她的孩子住得离她很远,所以她每周或每两周才会去看望她一次。她的孩子们经常忙于自己的事情,所以他们不会像他们希望的那样经常给她打电话。

奶奶对此没有意见,因为她仍然能够照顾自己,但随着年龄的增长,她希望有人每天检查她的安全,确保她没事。她听说过有关老年人生病却得不到及时帮助的可怕故事——她不喜欢这种想法!

外婆是一个独立的人,不想每天打扰孩子给她打电话,尽管她知道他们会很乐意。

解决的问题:“我很好”系统

下周,奶奶将获得名为“我很好”的新安全系统,以帮助可能面临突然生病且无法寻求帮助的老年人。

有了这个系统,当大按钮开始闪烁并发出哔哔声时,她每天只需按几次大按钮。当她按下按钮时,指示灯停止闪烁,蜂鸣声消失。几秒钟后,她听到设备发出新的声音信号。这是安全系统告诉她的方式,她已经发送了一条消息让她的孩子知道她没事。

系统监控来自奶奶的所有按钮推送消息,如果她没有及时按下按钮,系统将检测到这一点并向她的孩子和邻居发送短信和/或电子邮件消息。然后他们就会知道奶奶可能出了点问题,如果她没事的话,他们必须打电话给她。如果她不接电话,他们可能还需要拜访她以提供帮助。

只要奶奶在可配置的设定时间内按下按钮,报告她没事,系统不会通知她的孩子。

当孩子们在手机上收到来自“我很好”系统的警报消息时,他们知道他们必须打电话给奶奶来检查她的情况——也许她只是忘了按按钮!

有了新系统,奶奶知道如果她不经常按“我很好”按钮,她的帮助就会很快到来。

系统描述

I'm Fine项目是一个物联网系统, 基于廉价但先进的设备硬件,通过互联网向基于云的后端系统发送和接收消息。后端系统负责所有业务逻辑,包括设备消息的存储和处理以及以电子邮件形式发送警报。

ImFine.png?auto=compress%2Cformat&w=740&h=555&fit=max
 

该项目由4部分组成。

  • “我很好”按钮装置
  • 基于云的后端监控和通信系统。
  • 用于 IoT 中心设备工具的 Azure 设备资源管理器
  • 用于系统配置的 Windows 10 通用 Windows 平台 (UWP) 应用程序

“我很好”按钮装置

这部分是使用Arduino MKR1000设备构建的,该设备具有内置的 wifi 通信和安全功能,可以与云建立安全的 SSL 连接。提供一个简单的按钮、一个用于视觉指示的 LED 和一个用于声音指示的蜂鸣器,所需的额外硬件再简单不过了。

MKR1000 设备可由 3.7V 锂聚合物电池供电,该电池可通过设备 USB 连接器充电。

 

基于云的后端监控和通信系统。

Microsoft Azure 云服务 是系统业务逻辑的核心,利用了IoTHub WebJob 和SQL Server 数据库等功能

业务逻辑应用程序使用C#编程,并作为传统的控制台应用程序实现。然后将此控制台应用程序配置为在 Azure 云系统中作为 WebJob 运行。这使得开发、测试和部署变得容易。

Azure%20IoTHub%20backend%20console.PNG?auto=compress%2Cformat&w=740&h=555&fit=max
后端控制台应用程序
 

将控制台应用程序作为Azure WebJob运行,几乎与在后台运行传统 Windows 服务应用程序一样。为此,您必须至少有一个“基本应用服务计划” 并激活 Azure 中的“始终开启” 选项。

Visual Studio 2015 使您可以非常轻松地将控制台应用程序部署到 Azure 并将其设置为作为 WebJob 运行。如果您愿意,也可以从 Azure 手动执行此操作 - 您只需制作一个包含所有应用程序文件的 ZIP 压缩文件。

使用Google Gmail的标准电子邮件帐户,可以轻松发送电子邮件。

用于 IoT 中心设备工具的 Azure 设备资源管理器

这是 Microsoft 提供的一个应用程序,是一个很棒的演示和测试工具,用于配置您的设备并测试您的设备是否可以实际向 IoTHub 发送消息和从 IoTHub 接收消息。

可以在此处找到 Microsoft Device Explorer 工具 本文详细介绍了如何使用该工具以及如何配置您的设备。您还可以使用此工具获取特定于设备的授权令牌,以在您的 Arduino 代码中使用。这是系统的一项非常重要的功能,用于将数据发布到您的 IoTHub 并防止未经授权的设备将数据发送到您的系统。

该工具可从 GitHub 获得,您可以下载源代码和编译版本。

在比该竞赛项目更完善的产品中,您自己的配置应用程序应包含与此工具中类似的功能,因为您需要某种方法来配置和维护 Azure IoTHub 中的设备。此外,此工具仅包含定义设备的最少属性集。

使用这个工具而不是自己制作,不会对“ImFine”概念产生任何影响,因为我可以使用这个工具来启动和运行(感谢微软)。

用于系统配置的 Windows 10 通用 Windows 平台 (UWP) 应用程序

此应用程序已重新安排,现在计划用于版本 2!

评论:当我开始制作这个项目时,我以为我也有时间制作我自己的 UWP 应用程序来定义和配置设备,但是我没时间了!

我还应该在此 UWP 应用程序中实现的其他功能是为“ImFine 设备”的用户设置/配置名称和地址数据。数据库应包含有关用户应多久按下一次设备按钮以向后端报告的信息,以防止向其他人发送警报电子邮件。

缺少一组功能使它看起来像一个成品,它灵活且易于使用,用于设置新设备和定义系统必须如何处理消息(现有的和缺失的)的业务规则。

Arduino MKR1000 设备

转到 Arduino 网站以获得Arduino/Genuino MKR1000设备的最佳和权威描述。在撰写本文时,官方文档还不存在,因为该板尚未向公众发布。

MKR1000 设备似乎是一些其他现有文档化 Arduino 硬件的组合,例如Arduino 零板 + WiFi101 屏蔽要在撰写本文时更好地了解 MKR1000 设备,最好查看这两块板。

MKR1000%20picture1.png?auto=compress%2Cformat&w=740&h=555&fit=max
Arduino/Genuino MKR1000 开发板
 

Arduino编程

转到Arduino 网站上的 Arduino入门页面,阅读有关 Arduino 编程的信息并下载Arduino 开发软件

在 Arduino 中安装 MKR1000 开发板

在您可以从 Arduino IDE 使用 MKR1000 开发板之前,您必须先使用“开发板管理器”菜单项安装它。

Arduino%20Boardmanager%20samd.PNG?auto=compress%2Cformat&w=740&h=555&fit=max
Arduino 开发板经理
 

虽然 Boards Manager 显示有比我使用的 1.6.3 更新的版本可用,但我没有成功使用 1.6.4 版本。如果我选择它,我不会在我的板列表中看到 MKR1000 板。使用版本 1.6.3 一直工作正常。

安装 Arduino WiFi101 库

为了使用 MKR1000 板连接到 WiFi 网络,Arduino 提供了一个 wifi 库供使用。这个库被命名为“WiFi101”。它也用于 WiFi101 屏蔽。转到Arduino WiFi101 库页面阅读所有相关信息。

安装对 DHT22 传感器的支持

使用DHT22温湿度传感器需要安装使用配套库。Adafruit 制作了这个名为“DHT Sensor Library”的库。

dht22%20library.PNG?auto=compress%2Cformat&w=740&h=555&fit=max
DHT22 库
 

MKR1000 SSL 配置

为了以安全的方式将你的设备连接到 Azure IoTHub,你需要使用 HTTPS 协议。这需要 SSL 证书,该证书必须安装在设备中。您将使用 WiFi101 库,其中包含一个用于安全 SSL 连接的类。在此处阅读有关 WiFiSSLClient 的信息

当您配置并运行 SSL 证书时,您可以从 Azure IoTHub 获取该证书。要获取 SSL 证书并将您的设备配置为使用 SSL 证书,您需要使用 Arduino 在 GitHub 上提供的工具,此处为 WiFi 101 和 MKR1000 的固件/证书更新程序您应该在那里阅读有关如何使用它的说明。

使用的工具叫做“WiFi101 FirmwareUpdater”,使用起来是这样的:

SSL%20certificate%20updater.PNG?auto=compress%2Cformat&w=740&h=555&fit=max
固件更新工具
 

我已经删除了我的 Azure IotHub 名称的一部分。当您配置并运行 IoTHub 时,您当然必须提供您自己的 IoTHub 的名称。

Arduino代码结构

要详细查看代码,请查看我的Github 源代码库中的这个

代码说明

与所有其他 Arduino 程序一样,这个程序从定义和初始化开始。

setup()函数初始化所有使用I/O 引脚,连接到 wifi 网络和 Azure。它还通过声音和灯光向用户指示设备已启动并已连接。它向云后端发送“WakeUp”消息。

loop()函数基本上做了三件事:

  • 检查按钮是否被按下。如果是,则向云后端发送消息。
  • 检查命令是否已从云端后端发送到设备。如果是,则处理命令
  • 定时向云端发送温湿度数据。

Azure 和物联网中心

对于这个项目,我使用了整个 Azure 生态系统提供的许多可能性中的一些。

  • 物联网中心
  • 网页作业
  • SQL服务器数据库

Azure 物联网中心

要运行此项目,您需要先配置自己的 Azure IoTHub。您可以免费开始使用,但要能够持续运行 WebJob,您至少需要付费计划,从基本应用计划开始对于测试,您可以完全免费开始,但您的 WebJob 将在 20 分钟后自动终止。然后您必须从 Azure 门户手动重新启动它。

Microsoft 有很多关于所有 Azure 内容的在线文档,您可以在此处阅读有关 IoTHub 的更多信息

您需要了解很多东西,这需要时间。你将无法在几个小时内完成它。

我只能鼓励您阅读文档,最终会节省您的时间。去喝杯咖啡,然后开始……

Azure IotHub REST API

为了与 Azure IoTHub 通信,Microsoft 提供了一组编程 API。您可以在此处获取 REST api 的概述

与大多数其他 Azure IotHub 文档一样,这确实是必不可少的阅读材料 - 有很多内容需要阅读和消化!

对于与 IoTHub 通信的设备,您必须了解设备消息传递 REST API 。

除了 REST,还有其他选项可供使用,但我使用了 REST api。

我很好 C# 应用程序

IoTHub 后端控制台应用程序。

主应用程序基本上配置了 IoTHub,然后开始监视传入的消息。当收到一条新消息时,它会被记录在数据库中,并且根据收到的消息内容,可能会将回复发送回设备。这目前用于激活设备上的压电蜂鸣器,作为对用户按下设备按钮的响应,以通知用户消息已确认。

向设备发送数据时,应用程序会监控消息是否已发送到设备。来自 IoTHub 反馈系统的响应更新了数据库中消息数据的状态。

Azure%20IoTHub%20backend%20console.PNG?auto=compress%2Cformat&w=740&h=555&fit=max
后端控制台
 

控制台应用程序根据来源以颜色打印所有消息。浅蓝色/青色线条是从 Arduino 设备收到的传入消息。白色线是从后端应用程序发送到设备的传出消息。绿线是来自 IoTHub 反馈系统的状态响应,用于监控发送到设备的传出消息。

Visual Studio 2015 解决方案

连接到 IoTHub 服务端的后端解决方案在 3 个项目中实现:

VS%20backend%20solution%20structure.PNG?auto=compress%2Cformat&w=740&h=555&fit=max
VS 2015 解决方案
 
  • ImFineBackendConsole
  • ImFineData模型
  • IoTHub服务后端

ImFineBackendConsole

主应用程序作为 C# 控制台应用程序实现。

ImFineData模型

使用 Entity Framework 6 的数据模型建立在 SQL Server 数据库之上。我使用了“数据库优先”的方法并从数据库构建了模型。

数据库表

SQL%20database%20table.PNG?auto=compress%2Cformat&w=740&h=555&fit=max
SQL服务器数据库
 

实体框架模型

EF%20model.PNG?auto=compress%2Cformat&w=740&h=555&fit=max
实体框架模型
 

目前数据库只包含一个表来保存通过 IoTHub 的所有传入和传出消息。

SQL%20database%20data.PNG?auto=compress%2Cformat&w=740&h=555&fit=max
具有物联网事务的数据库
 

IoTHub服务后端

该项目包含 3 个类,它们实现从设备接收数据、将数据发送到设备并监视反馈状态的功能,最后一个类用于处理发送电子邮件。

图表和材料

图表

Diagram.jpg?auto=compress%2Cformat&w=740&h=555&fit=max
 

名为“R”的电阻器的值为 220Ohm。

蜂鸣器是压电式蜂鸣器。

该按钮是大型街机游戏机类型的按钮,带有内置 LED 灯。

我使用的锂聚合物电池是 3.7V - 1100mAh 类型。

原型

Prototype.jpg?auto=compress%2Cformat&w=740&h=555&fit=max
我很好原型
 

材料

Arduino MKR1000 这还没有发布销售,所以获得一个的唯一方法是参加这个比赛。

带内置 LED 的按钮

Ebay 上提供许多不同的有用类型。试试这个搜索 ,看看会弹出什么。

压电蜂鸣器

任何压电蜂鸣器都可以。我只是随便选了一个。

DHT22温湿度传感器

也可以在易趣上买到。试试这个搜索

锂聚合物电池

阅读有关电池的 MKR1000 文档。然后选择任何一个。

源代码

该项目的所有源代码都在我的GitHub ImFine 存储库中的 GitHub 上

该项目包含一个名为 src 的子文件夹,其中有 3 个子文件夹 - 一个用于 Arduino 代码,一个用于 Windows C# 代码,一个用于 SQL 脚本文件。

虽然有几个文件包含用户名和密码或 SAS 令牌,但您将无法在我的 Azure 后端上使用该代码。所有信息都已更改。

在设置您自己的系统之前,您必须更改这些以匹配您自己的设置。

Arduino代码

MKR1000 代码可以在此处的 Arduino 代码中找到

Windows C# 代码

Visual Studio 2015 的 Windows 应用程序代码可以在此处的 C# 代码中找到

SQL Server 数据库脚本

可以使用此处找到的 SQL Server 脚本在您自己的服务器中重新创建 SQL Server 数据库


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !