尽一份孝心,为家人做一个老人防摔报警系统
本文分享自华为云社区《基于STM32+华为云IOT设计的老人防摔倒报警系统【玩转华为云】》,作者: DS 小龙哥 。
1. 前言
我国独生子女,以及人口老龄化等问题,正逐渐成为一个重大的社会问题,老年人机体能力的下降,摔倒引起的安全和危害愈来愈突出,国家和社会越来越关注老年人的健康和安全,开发一个能够实时检测出老年人是否摔倒,并且能及时告知监护人的摔倒检测以及报警系统具有重要的现实意义。本系统包括检测摔倒模块、GPS 定位模块和通信模块三部分,通过检测老年人日常状态,可以得知老年人的状态,如果监测到老年人摔倒了,此时会通过网络把检测结果上传到物联网云平台,获得老年人摔倒地点的 GPS 定位,并且通过 GPRS 通讯发短信给预设的监护人。
2. 设计需求
(1)采用 STM32 单片机作为主控芯片,配合其他模块完成功能设计
(2)通信模块采用 SIM800C,支持上传采集的 GPS 经纬度数据到云端服务器,云端采用华为云物联网平台。
(3)老人摔倒检测采用 MPU6050 陀螺仪检测,当检测到老人摔倒之后,会通过 SIM800C 发送短信到紧急联系人,设备上的蜂鸣器会发出警报声,周围行人听到也可以进行帮助;并且会将 GPS 数据上传到云端,通过地图显示老人的位置,家人通过短信知道老人摔倒后,通过云端地图显示的位置,可以快速赶到老人身边,或者报警求助,报告位置。
(4)老人摔倒后,如果自己能行动,没有大问题,可以自己按下设备上的按键取消蜂鸣器报警,并且通过 SIM800C 向家人发送一条短信,报平安。
3. 设计的实物效果
为了快速验证方案的可行性,这里采用现成的模块采用杜邦线连接完成整个预想的功能设计。
下面就是硬件连接好之后的效果图,选用的硬件型号在第 4 章节已经全部贴出来了;为了方便户外测试,这里的供电电源采用了充电宝,也可以采用电池盒供电。
可以设置电子围栏,坐标超出之后进行提示。
4. 硬件选型
主控芯片采用 STM32RCT6,通信模块采用 SIM800C,GPS 采集使用 ATGM336 北斗 BDS+GPS 双模模块,老人摔倒检测模块采用 MPU6050 陀螺仪。
这些都是采用现成的成品模块,都是在淘宝上买的,下面都贴出了模块的型号,模块的实物截图,如果自己想做一个,可以在淘宝上找到一样的模块型号购买。
4.1 SIM800C
SIM800C 模块是一款高性能高性价比工业级的 GSM/GPRS 模块。本模块采用 SIMCOM 公司的工业级四频 850/900/ 1800/1900MHz SM800 芯片,可以低功耗实现语音、SMS、数据和传真信息的传输。
模块特点:
支持极限 DC5V-18V 宽电压输入
有电源使能开关引脚 EN
支持锂电池供电接口 VBAT3.5-4.5V
输入支持移动和联通手机卡 Micro SIM 卡
送 51/STM32/ARDUINO 驱动例程
DC 5V-18V 电源输入,推荐使用 DC 9V
电源开始使能引脚默认使能
电源地
GSM 模块的 TXD 引脚接其它模块的 RXD
GSM 模块的 RXD 引脚接其它模块的 TXD
数据终端准备
内核音频输出引脚
内核音频输出引脚
锂电池输入引脚,DC 3.5 - 4.5V
电源地
启动引脚和 GND 短路可实现开机自启动
电源地
RTC 外置电池引脚
内核振铃提示引脚
内合音频输入引脚
内核音频输入引脚
加粗的引脚一般都用到。
建议使用 V_IN 单独供电 DC5-18V 输入(推荐使用 9V),或者 VBAT 供电锂电池两种供电方式这两种供电方式最稳定。如果只是简单调试,也可使用 USB-TTL 或者开发板的 5V 直接给模块供电。不过一般电脑或者开发板的功率有限,可能会不稳定。请根据具体情况自己取舍选择合适电源。
总结:
模块本身支持自适应波特率,可以自动根据发送过去的指令计算对应的波特率,一般使用 115200 即可。
模块调试总结:
(1)供电电压 5V 也可以,采用电脑 USB 供电(直接插电脑 USB 口)。正常供电之后,模块上有电源指示灯。
(2)SIM800C 的 TX 脚接单片机的 RX 脚
(3)SIM800C 的 RX 脚接单片机的 TX 脚
(4)SIM800C 的第 11 个引脚(PWK)和 12 个引脚(GND)短接接在一起,才可以开机。
电源正常后,右上角有一个黄色的电源灯。
通过串口发送 AT 指令过去测试模块效果。
4.2 STM32F103C8T6 开发板
4.3 GPS 模块
GPS 模块正常定位后,模块上的 LED 灯会按照 1 秒钟闪烁一次。
返回的字段里 GNRMC 表示当前定位的 GPS 经纬度,解析代码只需要解析 GNRMC 表示当前定位的 GPS 经纬度,解析代码只需要解析 GNRMC 字段。
第一次启动 GPS 模块,定位差不多要几分钟时间,定位成功后,第二次启动定位就很快,最好是在室外,室内信号差,定位时间更久。
4.4 MPU6050 陀螺仪
陀螺仪选择的是正点原子的模块,比较稳定,质量较好。
4.5 蜂鸣器
蜂鸣器选择的高电平触发。
5. 创建云端物联网服务器
为了方便查看老人摔倒之后的位置,需要通过 SIM800C 将设备采集的 GPS 数据上传到云平台服务器保存,就算老人没有跌倒,也可以实时关注老人的位置,在地图上绘制出轨迹线路,方便家人随时联系,了解老人的情况。
这里物联网的平台选择是华为云物联网平台,目前是免费使用的,在云端创建产品等信息后,设备再通过 MQTT 协议连接云平台上传 GPS 数据。目前华为云的拖拽试网页开发页面已经下架,目前要开发对应的上位机,可以采用最近主推的低代码开发平台或者自己通过云平台的应用侧开发接口自己开发上位机,我这里是自己开发的上位机,通过 QT 编写的上位机 APP,支持 windows、Android、Linux 等多个平台运行,跨平台使用还是比较方便。
下面接着就介绍如何登陆官网创建产品、设备、完成云端的产品部署。
5.1 创建产品
官网地址: https://www.huaweicloud.com/product/iothub.html打开官网后没有华为云账号需要先注册账号,这些步骤就不多说了,接下来就直接介绍如何创建产品、设备、配置属性、完成数据上传交互的流程。
点击免费使用进去页面。
点击左边产品选项,点击右上角创建产品按钮,弹出参数填充对话框。
根据自己的设备情况填入信息之后保存。
产品创建成功,点击查看详细信息。
5.2 创建模型文件
在现在的详情页面往下翻,可以看到模型创建的选项。点击自定义模型选项,创建模型。这里的模型就是设备上传的数据属性。
添加服务 ID。
点击创建属性,这里选择 JSON 类型的数据,上传的 GPS 有经纬度两个数据,方便保存。
创建成功。
版权声明: 本文为 InfoQ 作者【华为云开发者联盟】的原创文章。
原文链接:【http://xie.infoq.cn/article/ff24633b25163b85e2d95c26f】。文章转载请联系作者。
评论