【IoT毕业设计】STM32开发板+机智云IoT+智能家居养老机器人-Arduino中文社区 - Powered by Discuz! Archiver

机智小子 发表于 2022-5-9 15:17

【IoT毕业设计】STM32开发板+机智云IoT+智能家居养老机器人

引言
通过对第七次人口普查数据的研究发现,我国60周岁及以上老龄人口截至2021年5月已达到全国总人口的18.7%,其中65周岁及以上人口占比13.5%,仅差0.5%我国就将步入老龄社会,人口老龄化所带来的关于养老的众多问题是我国亟待解决的。目前人工智能技术已比较成熟,将其应用到智能家居养老服务上是一种当下被多方面认可的解决养老问题的方法。
本系统开发者设计的机器人结合了嵌入式人工智能技术,能够实时监测老人的身体健康状态与居家环境数据,同时可以将数据上传到云端平台进行分析,老人及其监护人可以使用移动设备访问平台查看数据分析曲线。此外,机器人还可以自主规划环境数据监测路线,确保对居家环境全方位监测。因此该系统能满足老人和特殊群体的刚性需求,缓解人口老龄化所带来的问题,实现智能化的居家养老。
1系统架构小型智能家居养老机器人的总体系统以STM32为主控单元,主要功能模块包括身体健康监测模块、环境数据监测模块、自主定位导航模块、数据分析与人机交互模块。STM32与各功能模块的传感器进行通信,控制机器人自主移动监测老人身体健康参数与家庭环境数据,并将数据上传到物联网云平台进行分析,同时在交互屏幕上显示,若监测数据异常,机器人会使用交互模块进行报警。机器人系统功能架构图如图1所示。

2系统硬件设计机器人系统硬件分为身体健康监测手环和机器人主体两部分,机器人主体包含环境监测模块、自主定位导航模块与人机交互模块。
https://club.gizwits.com/data/attachment/forum/202205/09/122701eha9o0740ddg9d7i.jpg.thumb.jpg图1机器人系统功能架构图
2.1智能身体健康监测手环如图2所示,手环由MKB0908身体健康检测模块与2.4G无线通信模块组成。MKB0908模块集成了光学心率传感器芯片、自动增益控制芯片、温度传感器芯片与心率血压算法芯片。
https://club.gizwits.com/data/attachment/forum/202205/09/122741fj9gledl8eezdjz4.jpg.thumb.jpg图2智能身体健康监测手环
光学心率传感器基于光电容积脉搏波描记算法,使用两光发射二极管向皮肤照射,然后通过光敏传感器接收经过血管和组织反射、吸收后的衰减光,并将其转换为数字信号,再由心率血压算法芯片处理输出血压、心率等数据。温度传感器芯片则是通过铂热电阻的阻值变化来反映外部温度的变化,以此来感知人体温度,并将其转换为数字信号输出。最后通过2.4G无线模块将MKB0908模块采集到的心率、血压、HRV与体温数据透传到机器人主控。
https://club.gizwits.com/data/attachment/forum/202205/09/122752xjg8qgtr8ig8rtjh.jpg.thumb.jpg图3自主定位导航模块功能框图
此外,智能监测手环还能够识别老人是否佩戴手环,如果没有佩戴则从监测模式切换到休眠模式,减少电能的消耗。
2.2机器人主体2.2.1环境监测模块环境监测模块安装在机器人主体上,主要由DHT11温湿度模块、CO浓度检测模块、MQ135环境空气质量检测模块与光敏电阻组成,可以实时监测居家环境的温湿度、光照强度、PM2.5浓度及CO浓度等环境数据。当室内CO浓度超过50ppm时表示老人可能会中毒,此时机器人会利用GSM无线通信模块将报警短信发送到老人及其指定监护人的手机上,给予老人舒适、安全的生活环境。
2.2.2自主定位导航模块自主定位导航模块功能框图如图3所示,机器人可用蓝牙定位模块进行三点定位获取当前坐标,STM32对九轴传感器输出的数据进行姿态解算得到机器人相对于地面坐标系各轴的姿态角,然后使用A-Star算法规划出机器人到环境监测目标点的最短路径,最后利用光电编码器闭环控制电机输出到两驱动轮的转速来控制机器人的位移与换向。由于室内环境复杂多变,机器人移动过程中需使用避障模块来检测移动路径上是否会突然出现障碍物,以避免发生碰撞。
2.2.3人机交互模块人机交互模块由电阻式串口触摸显示屏、MP3功放模块与GSM无线通信模块组成。老人可以通过触摸屏查看监测数据,同时可以触摸屏幕设置环境监测点与监测模式。MP3功放模块可以播报老人身体健康状况、配网状态及周围环境安全状态,如果监测到CO等有毒易燃气体浓度超标,会通过功放模块进行语音报警以及使用GSM模块发送报警短信。
3系统软件设计3.1总体软件设计机器人的总体软件设计流程如图4所示。首先初始化STM32主控与各模块间的控制和通信引脚,然后通过触摸屏设置环境监测模式,默认初始化为自动模式,机器人会自动规划监测点,若设置为手动模式,则需设置指定的监测点。同时若智能手环打开且处于非休眠模式,其会自动采集老人的身体健康数据并传输到机器人主控。
主控对老人身体健康与居家环境数据进行处理,并将其显示在屏幕上,如果数据异常则会进行语音报警和发送警示短信。此外,如果WIFI模块联网失败,机器人也会进行语音提示,若成功联网则将数据上传到云平台进行可视化显示与分析。
https://club.gizwits.com/data/attachment/forum/202205/09/122815stflxn9rfl0zh85h.jpg.thumb.jpg图4系统总体软件设计流程图
3.2数据读取与滤波算法设计3.2.1身体健康监测模块软件设计在正常佩戴手环的条件下,身体监测模块会收集老人体温、心率和血压等多项数据,然后通过2.4G无线模块透传到机器人主控。主控与2.4G模块采用SPI协议进行通信,根据指定帧头55AA判断是否为数据传输起始帧,并且采用顺序循环队列接收数据包,然后按指定协议解析得到实际身体健康监测数据。此外,MKB0908模块自带硬件滤波算法,因此无需对数据进行软件滤波处理。
3.2.2居家环境监测模块软件设计主控芯片采用onewire协议与DHT11温湿度模块交互,完成对室内环境温度与湿度数据的采样。利用芯片的ADC模块将光敏电阻、CO检测模块、MQ135模块输出的模拟电压转换为数字信号,然后将其换算成光照强度、CO浓度与PM2.5浓度等数据。
实际测量环境中存在随机噪声,测得的数据会有不准确的脉冲跳变,对数据分析与预测造成了一定的影响,因此采用单字节滑动中位值平均滤波算法滤除毛刺。使用顺序队列作为数据缓冲,各项环境监测数据依次从队头进入,然后从队头滑走,最后去掉最大值和最小值再对其余数据求平均值,即为滤波后的结果。下面将滤波前后的温度与湿度数据分别进行比较,对比结果如表1所示。
表1室内温度与湿度采样数据滤波前后对比结果https://club.gizwits.com/data/attachment/forum/202205/09/122832d4ijiv4zbsg3vzro.png.thumb.jpg
根据表1对比结果可知,滤波后的温度与湿度数据脉冲噪声明显减少,数据上下浮动变化值几乎可忽略不计。由此可知环境监测模块的准确性与稳定性得到了提高,为后续云端数据分析提供了保障。
3.3机器人路径规划算法3.3.1蓝牙三点定位算法在室内以1m为一个单位建立平面笛卡尔坐标系,将蓝牙信标分别放置在三个坐标已知的地面上,蓝牙信标会自动广播各自的UUID号与接收信号强度(RSSI)。根据公式(1)可以通过RSSI信号衰减程度来计算机器人主体上的蓝牙模块与各蓝牙信标之间的距离:
https://club.gizwits.com/data/attachment/forum/202205/09/123134x2g4fdfy6f4fym2m.png.thumb.jpg
其中,A为蓝牙发射端与接收端相距1m时的信号强度,n为环境衰减因子。n的取值由室内环境决定,主要受室内墙体厚度、温湿度等参数影响,根据工程经验及后期调试,衰减因子n取3.1时与公式拟合度良好。通过蓝牙信标广播的UUID号可知它们各自对应的坐
通过蓝牙信标广播的UUID号可知它们各自对应的坐标,再根据RSSI信号强度得出机器人与蓝牙信标的直线距离,最后利用毕达哥拉斯定理建立机器人待定位点与蓝牙信标所在点的坐标参数和相互距离的方程组:
https://club.gizwits.com/data/attachment/forum/202205/09/123120sm8998kkwmmh0x4i.jpg.thumb.jpg
其中,(xn,yn)为机器人待定位点坐标参数,(xbn,ybn)为蓝牙信标的坐标参数,根据方程求解出(xn,yn)的值,然后使用加权质心算法即可得出机器人当前位置的坐标为((x1+x2+x3)/3,(y1+y2+y3)/3)。
3.3.2A-Star最短路径搜索算法
机器人每次移动时通过九轴传感器判断当前相对方位,同时使用避障模块检测附近坐标位置是否存在障碍物,若有则将该坐标记为1,反之记为0,然后使用二维数组将地图数据存到主控芯片Flash中,二维数组的行、列索引即为地图的纵、横坐标。
https://club.gizwits.com/data/attachment/forum/202205/09/123054g5szryx9kxgr8j9k.jpg.thumb.jpg图5A-Star算法搜索流程图
家庭室内地图属于典型的静态环境,因此使用A-Star算法进行路径规划的效率最高,并将其计算代价的启发函数设成曼哈顿距离,以减少使用欧式距离开方运算时的工作量。A-Star算法搜索过程中需要使用开放线性表与封闭线性表进行记录,开放线性表用于存储算完代价但未扩展的节点,封闭线性表则存储障碍物节点或已扩展的节点。由于当前节点每次都可向周围相邻的节点扩展,所以至多有8个节点满足扩展条件(不在封闭线性表中),因此采用八叉树存储每次扩展的节点。算法流程图如图5所示。
首先,将机器人当前坐标设为起点,待监测环境点设为终点,并把它们放到开放线性表中,同时将起点设为八叉树的根节点。然后从树的当前节点开始向周围相邻节点扩展并计算它们的代价,将满足扩展条件的节点入树,并将它们的父指针指向当前节点,同时把它们加入到开放线性表中,不满足的则放到封闭线性表中。
而后从开放线性表中取出代价最小的节点作为树的当前节点加以扩展,并将其从开放线性表移到封闭线性表中,以此循环往复。若开放线性表已为空,则说明未找到终点,结束循环;若当前节点即为终点,则说明找到终点,结束循环,然后通过当前节点的父指针回溯到根节点,即可找到机器人移至待监测点的最短路径。此外,若机器人寻路途中突然检测到前方存在障碍物,则将其所在的坐标记为障碍物节点,再使用A-Star算法重新规划路径,以确保机器人在外界干扰下也能准确到达待监测环境点。
3.4机智云物联网开发平台主控芯片将监测数据通过串口协议发送到WIFI模块上,在WIFI模块成功联网的前提下,它会将数据按JSON格式打包,然后通过MQTT协议将数据包作为控制报文的有效载荷进行发布,机智云平台作为客户端成功订阅相应的主题后会收到WIFI模块推送的数据。
如图6所示,老人可以通过机智云APP查看实时监测数据,并且APP可以将数据以不同颜色的曲线显示出来,同时还能对数据进行统计分析,便于老人远程查看,实时了解自己的身体健康和居家环境状况。
https://club.gizwits.com/data/attachment/forum/202205/09/123035rwu3shissgfr33z3.jpg.thumb.jpg图6机智云开发平台数据分析
3.5人机交互界面设计人机交互屏幕采用T5L电阻式串口触摸屏,其UI界面使用DWINDGUS软件设计。在软件上开发好界面背景图片、占位字符等静态数据并将其存到显示器的TF卡中,显示器主控读取TF卡中的数据并将其显示在液晶屏上。机器人主控可将监测数据、页面控件回调指令等信息通过UART协议发送给显示屏,显示屏即可动态显示参数和执行相应操作。屏幕最终显示效果如图7所示。https://club.gizwits.com/data/attachment/forum/202205/09/123013clsxl0n1qt7xsnk7.jpg.thumb.jpg图7人机交互界面
图7(a)为身体健康数据的显示界面,屏幕左上方的文字显示手环的佩戴状况,右上方显示WIFI模块网络的配置状态,其余部分显示老人当前的体温、心率、血压及HRV曲线。图7(b)为环境数据的显示界面,展现了当前室内的温湿度和光照强度,同时表明CO浓度达标。
4结语本文针对人口老龄化所带来的养老问题,设计了一款小型智能家居养老机器人系统。它具有身体健康数据监测与居家环境数据监测两大功能,并且可以将数据发送到显示屏或机智云平台供老人查看。在设计软件时对环境数据的读取做了滤波处理,可以很好地克服因偶然因素引起的扰动,同时将A-Star算法应用到机器人移至目标环境监测点的最优路径求解中,提高了机器人的灵活性。该系统可以较好地帮助老人进行身体健康和居家安全管理,有助于实现智能化居家养老,继而缓解老龄化带来的诸多问题。
页: [1]
查看完整版本: 【IoT毕业设计】STM32开发板+机智云IoT+智能家居养老机器人