来这里发现更多有趣案例
HaaS开发框架HaaS积木方案,赋能生态开发者,让您快速找到自己需要的解决方案,硬件主板与外设,以及各种应用组件。
跌倒检测系统
下图是本案例除硬件连线外的 3 步导学,每个步骤中实现的功能请参考图中的说明。
简介
据 Forbes 道,到 2050 年,全球 60 岁以上的人口预计将达到 20 亿。根据美国疾病控制与预防中心的数据,每年有近四分之一的老年人跌倒,而跌倒是老年人因创伤入院的主要原因。跌到检测系统能够第一时间检测到老人跌到的情况并及时 警,配合及时的救治措施能很大程度降低老人收到的伤害。本案例通过 MPU 传感器采集到的惯性数据来检测老人跌倒时的位姿,来实现非接触、非隐私的跌倒检测并及时 警。
背景知识
本系统的核心在于如何确定老年人的跌倒状态,并及时通知给家人或亲戚朋友。
MPU6886(6-Axis IMU Unit)是一款 6 轴姿态传感器,可以获取器件当前的三轴加速度分量和三轴旋转角速度。由于其体积小巧,功能强大,精度较高,适合集成到跌倒检测系统中,用于检测老人行走过程中的位姿。此外,依靠 IoT Studio 的 开发工具,可以及时把跌倒状态通知给家人或亲戚朋友的钉钉账 ,实现对老人跌倒的远程监控。
三轴加速度:加速度计的三轴分量 ACC_X、ACC_Y 和 ACC_Z,均为 16 位有符 浮点数,分别表示器件在三个轴向上的加速度,取负值时加速度沿坐标轴负向,取正值时沿坐标轴正向。
三轴角速度:绕 X、Y 和 Z 三个坐标轴旋转的角速度分量 GYR_X、GYR_Y 和 GYR_Z,均为 16 位有符 浮点数。从原点向旋转轴方向看去,取正值时为顺时针旋转,取负值时为逆时针旋转。
准备
M5StackCore2 开发板一套,已内置 MPU6886 传感器,无需外接传感器。
物联 平台开发
开通公共实例
对于第一次使用物联 平台的读者,需要开通实例以使用物联 平台的功能。这里可以使用免费的公共实例进行开发。
在物联 平台中,左上角选择“华东 2-上海”,点击“公共实例”,即可开通。
开通物联 平台功能之后,需要完成下面的 3 个步骤完成云端设备的创建:
- 创建云端产品
- 创建产品属性(物模型)
- 创建云端设备(获取三元组)
创建云端产品
点击上图中的“公共实例”,即可进入控制台进行产品创建。然后,点击 按钮,如下图所示。
在新建产品设定页面按照下图所示,设定“产品名称”,选择所属的“自定义品类”(自定义品类的物模型为空,需要自己创建,也可以通过导入外部物模型的方式导入),节点类型选择“直连设备”,联 方式选择“Wi-Fi”,数据格式选择“ICA 标准数据格式”,检验类型和认证方式选择默认设定即可。还可以根据开发者自己的需求在“产品描述”页面添加针对此产品的描述。
选择之后,点击“确认”按钮,即可完成产品创建。返回“产品”页面之后可以看到产品类表中会出现刚刚创建的“fall_detection”的产品,如下图所示。
创建产品属性(物模型)
点击上图中的“查看”按钮,即可看到产品信息,Topic 列表,功能定义,数据解析等跟产品相关功能的设定。点开“功能定义”标签页,可以看到设备物模型定义。
标识符是设备端上 设备属性状态的消息中需要使用的标识符,并且只有在设备上 的属性内容符合数据定义中的数据取值范围的时候才会被物联 平台记录,否则会被物联 平台认定为非法属性而过滤掉。
然后按照下图添加“跌倒状态属性”。
物模型添加成功之后可以看到 页出现了我们刚才创建的物模型属性。其中 isFall 代表跌倒状态的属性,数据类型为 int32 整数型。此时点击“发布”按钮,按照系统提示一步一步进行下去就可以将刚刚创建的物模型属性发布到产品中。功能定义完成后点击 按钮完成发布。
产品及其物模型创建完成后就可以创建这个产品的设备了。
创建云端设备(获取三元组)
在产品列表页面中,点击 后的 ,就会进到设备管理页面。
在“设备”页面点击“添加设备”按钮,如下图所示。
在“添加设备”页面中设定“deviceName”,这里开发者可以自己填入自己想设定的设备名称(这里我们填入设备名称 fall_detection),也可以不填任何内容让系统自动生成设备名称,如下图所示。
点击 确认 后弹出下面的“添加完成“提示框,点击 按钮就可以看到此设备端详细信息了。
设备信息中有两个信息需要和设备端开发相匹配:
- 三元组(点击下图中的“查看”及可看到三元组信息)
- 物模型属性信息
获取设备三元组
如上图所示,点击“查看”按钮,就可以看到设备的三元组信息(如下图所示),三元组是物联 设备端和物联 云端设备相关联的唯一标识符,在设备端连接云端的时候会使用三元组信息和云端进行鉴权,鉴权通过之后云端会认为设备已激活并上线。
查看设备属性信息
设备详情信息页中的“物模型数据”标签页中可以看到设备的所有属性信息、设备事件上 情况及设备服务调用情况,如下图所示。待物联 设备按照设备属性对应的标识符上 设备属性的时候,本图片中的“跌倒状态“属性值就会显示设备最新的属性信息。
创建产品和设备的过程是按照面向对象的思想进行设计的,其中创建产品可以看成是新建一个类,其中的物模型则是类的对象,创建设备则是进行类的实例化。
配置业务逻辑
接下来就是配置业务逻辑,以便将设备端发送到物联 平台的数据通过钉钉的方式发送给疫情监控人员。这里我们采用物联 开发工具
物联 应用开发(IoT Studio)提供了物联 业务逻辑的开发工具,支持通过编排服务节点的方式快速完成简单的物联 业务逻辑的设计。具体细节可以参考物联 应用开发中的业务逻辑章节。
1. 创建钉钉机器人
点击钉钉头像,在弹出的对话框中点击按钮
点击 按钮
在机器人管理页面点击 按钮
点击 按钮
输入机器人名称及机器人想要添加的钉钉群组(如果没有可以自行创建),在安全设置一项添加”自定义关键词”。
需要注意的是:自定义关键词用来过滤向钉钉群推送的信息,只有包括了该关键词的推送信息才会在群里显示,不包含该关键词的推送信息会被过滤掉。可以定义多个关键词,只要推送的信息中有一个词跟关键词匹配即可被群接收并显示。这里我们定义”发生跌倒”关键词,也就是说后续的推送信息里面必须包含”发生跌倒”这个词语。
点击 按钮
创建完成后会弹出提示框,点击“复制“按钮复制Webhook地址,使用该地址可以向钉钉群推送消息。点击完成。
配置 IoT Studio 物联
登录IoT Studio平台,在左侧的侧边栏点击,在项目管理页面点击按钮。
在页面点击。
弹出页面,输入项目名称及描述后点击按钮。
项目创建完成后会自动导航到新创建的项目,新项目需要关联产品,设备,并创建,以实现云端上 信息到钉钉的信息推送。
点击左侧的侧边栏,点击,在弹出的窗口中选择之前创建的产品并关联。
点击左侧的侧边栏,点击,在弹出的窗口中选择关联产品下的设备。
点击左侧的侧边栏,在弹出的项目详情页选择,点击按钮,在弹出的下拉框选择。
在新建业务服务窗口输入业务服务名称及描述后点击按钮。
业务服务创建完成后自动导航到业务逻辑开发页面。点击“节点”按钮显示所有原子功能,并以此拖住, 和 到右侧的窗口。按住鼠标左键连接各个模块,注意逻辑输出要连接正确的,以免逻辑混乱。
点击模块,在弹出的对话框中选择产品、设备及触发条件。 选择产品
选择设备
选择属性
点击模块,在弹出的对话框中条件配置。
点击模块,在弹出的对话框中设置Webhook,选择配置方式及消息类型。Webhook 对话框输入之前创建“疫情安全”钉钉机器人时候拷贝的字符串。在“消息类型”的内容配置项里填写内容。(内容需要包括钉钉机器人设置的”自定义关键词”)
业务逻辑开发配置完成后,我们可以先使用软件调试的方式验证相关逻辑链路的正确性。点击 页右上角的按钮后点击按钮。
在弹出的对话框选择按钮:
在弹出的设备模拟器页面点击按钮:
选择选项并在跌倒状态属性栏输入 0(门关闭)或者 1(发生跌倒),点击按钮:
发送命令后,我们便可以在钉钉群接收到相关的通知:
到这里我们已经完成了 IoT 云端的所有配置,接下来就是完成设备端开发并完成设备属性的上 。
设备端开发
开发环境
在进行下一步之前请确保 M5StackCore2 开发环境已经搭建完毕。详情请参考M5StackCore2 开发环境的说明。
开发原理
创建解决方案
如下图所示,打开 VS Code 之后在新建一个基于 hellworld 的 python 工程,设定好工程名称()及工作区路径之后,硬件类型选择 M5StackCore2,点击立即创建,创建一个 Python 轻应用的解决方案。
案例代码
下载本案例代码并解压将所有文件复制后,覆盖刚创建的工程根目录下的文件。main.py代码区如下图所示:
Python 脚本的详细说明请参考脚本内嵌的文字注释
- 修改路由器名称及密码
修改 fall_detection 工程里 main.py中 wifiSsid 和 wifiPassword 的值为读者实际要连接的路由器的名称及密码(请注意名称和密码都需要放在””符 中间)。
修改完成之后 get_wifi_status 函数中的 nm.connect(wifiSsid, wifiPassword) 语句就会连接读者自己设定的路由器。
- 修改设备端三元组
修改本工程里 main.py中 productKey、deviceName 和 deviceSecret 的值为读者创建的物联 设备的三元组信息,如下图所示:
- 修改设备端上 数据所用标识符
main.py中下面的代码实现的是上传跌倒状态到云端的功能。其中 isFall 便是将跌倒状态上 云端所用的标识符。
- 阈值参数说明
在 fall_detection.py 中,可以通过以下阈值参数来调节跌倒检测的灵敏度:
加速度 | 阈值说明 | 角速度 | 阈值说明 |
ACCELERATION_LOW_THREADHOLD | 越大越灵敏,默认值 4 | ANGULAR_VELOCITY_LOW_THREADHOLD | 越小越灵敏,默认值 1 |
ACCELERATION_UP_THREADHOLD | 越小越灵敏,默认值 12 | ANGULAR_VELOCITY_UP_THREADHOLD | 越大越灵敏,默认值 40 |
确保这个标识符和物联 产品的物模型中属性标识符是一样的,如下图所示:
docs/examples/tap_detection/esp32/README.md
推送脚本
- 推送脚本
推送此工程到 M5StackCore2 设备上,如下图所示。
- 推送脚本时的日志
推送过程中的日志输出如下图所示。如果需要选择串口 ,请选择“/dev/cu.wchusbserial53190134851 ‘USB Single Serial’”,直接输入串口 前面的数字即可。
运行结果
本地查看
推送此脚本到 M5StackCore2 之后并运行,将 M5StackCore2 粘在一个物体上,以模拟老人跌倒的状态。
串口一开始会打印连接阿里云 IoT 平台及校准 MPU6886 传感器的日志,如下所示:
当打印“Now you can start fall detection!”后,即可开始进行跌倒检测。打印“FALL DETECTED using MPU sensor”表示检测到一次“跌倒动作”,同时我们也会收到钉钉端机器人的相关通知。
物联 平台端设备信息查看
物联 设备的系统启动成功并连接到物联 平台之后,物联 平台上对应的设备状态会从”未激活状态“变为”上线“,在物模型数据标签页上会显示设备上 到物联 平台的属性值。
到此为止,跌倒检测系统的案例就已经完成了。感谢您的阅读!
文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树首页概览208564 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!