微控制器

欢迎来到微控制器第五小组的智能养老机器人介绍博客


1 引言

1.1 编写目的

本用户手册编写目的为使用户能了解本产品的开发环境和开发背景,并能够快速上手本产品,了解本产品的所有功能并了解如何使用。同时使开发者能够通过本手册了解产品的硬件及软件运作流程。

1.2 设计背景

随着我国年轻人口逐渐减少,老龄化程度逐渐加剧,养老成为了社会中一项重大的问题。就目前来看,我国 60 岁以上和 65 岁以上的老龄人口的数量已经非常接近中度老龄化社会的标准。这意味着社会老龄化问题日益严峻 ,不利于社会经济发展和社会安定。在劳动力日益不足的时代,选择智能化养老解放劳动力是未来养老领域的一大发展方向,本项目团队的作品“智能养老机器人”便是致力于未来养老行业智能化、自动化发展的一款产品,此产品通过 物联网产品、嵌入式开发 等技术帮助老年人健康生活,减少老年人意外发生,具有辅助未来社会“老有所养”的
社会效益和削减照顾老人的人力成本的经济效益

1.2 市场背景

我国人口结构自1999年开始便逐步开始由年轻社会像老龄化社会转变,老龄化人口比例至1999年到未来几十年都会不断上升,养老产品的需求也将会随之不断上升,在这样的市场背景下,经我们团队推断,一款能够减少人力成本,智能化监测老人是否发生意外状态的智能养老机器人具有未来养老方面的市场,具有很大的经济效益

2 产品概述

2.1 产品目标

智能养老机器人目标为服务行动不便的老人,在家中独自生活时能够由一定的安全保障,通过此产品可以有效降低老人在家中出现意外无人营救的风险,达到养老的社会效益,缓解养老的经济压力的目标。

2.2 产品功能

本产品通过指纹识别用户身份,通过语音指导用户使用,通过摄像头和openmv算法监测老人摔倒情况,通过温度传感器和颜色传感器联合监测是否发生火灾,通过L610进行警报向上位机的发送,做到了云端-本地-用户相互连接的服务生态,实现了远程监测老人和环境状况的养老功能。

picture

2.3 功能实现

功能实现软、硬件结合,通过代码数据链将所有硬件集合,通过主控芯片内的主状态机判断所有模块当前状态,传感器将数据传递回主控芯片,并进行数据处理,若外界环境发生异常,则程序进入警报模式,根据主动报警、火灾报警、摔倒报警分别进入不同的警报模式。

picture_1

2.3.1 主控芯片

本产品采用STM32411RET6和nucleo64l476rgt6作为产品主控芯片(如图1),连接摄像头、语音模块LD3320、温度传感器DHT11、颜色传感器TCS37425、显示屏smart4418、L610上位通信模块。

picture_2 picture_15

2.3.2 摔倒检测模块

本产品使用openmv与摄像头,检测使用者的形体姿态,若形体姿态检测为摔倒状态,则触发摔倒报警反应,将报警信息传递至L610,L610再将报警信息传输至上位机(电脑或手机)

2.3.3 语音交互模块

本产品使用LD3320语音模块(如图2)进行语音识别,将识别到的信息通过串口x发送至主控单片机,由单片机进行处理后给扬声器下达播报指令,由扬声器XFS5152进行语音播报,播报内容通过扬声器模块内部录音功能提前记录,根据用户的操作播报不同的指导语音,若模块识别到用户说“报警”并再次“确认”后,或其他硬件满足触发警报的条件时,则进入警报模式,通过扬声器播放警报录音。
当接收到语音模块发来的标识符时,进入中断判定标识符并且向上位机发送接受到的信号。
语音模块核心代码:

void LD3320_Read()
{

HAL_UART_Receive_IT(&huart1,&ReadInf,1);
}

void HAL_UART_RxCpltCallback(UART_HandleTypeDef* huart) 
{
    uint8_t Test[] = "1";
    if(huart->Instance == huart1.Instance) { 
        __LD3320ReadDoneNotify();
        if(ReadInf>=49 && ReadInf<=55) {
        if (mainstate_flags == 1){
            if (ReadInf == 54){
                printf("Received string: que ren");
                HAL_UART_Transmit (&huart1 ,Test ,1,1);
                ReadInf=0;
                mainstate_flags=3;
            }
            else{
                printf("Received string: qu xiao");
                ReadInf=0;
                mainstate_flags=0;
            }
        }
        else{
            if (ReadInf == 50) {
                printf("Received string: kai shi");
                HAL_UART_Transmit (&huart1 ,Test ,1,1);
                ReadInf=0;
            }
            if (ReadInf == 51) {printf("Received string: tiao shi"); HAL_UART_Transmit (&huart1 ,Test ,1,1); ReadInf=0;}
            if (ReadInf == 52) {printf("Received string: yun xing"); HAL_UART_Transmit (&huart1 ,Test ,1,1);ReadInf=0;}
            if (ReadInf == 53) { 
                printf("Received string: bao jing");
                HAL_UART_Transmit (&huart1 ,Test ,1,1);
                ReadInf=0;
                mainstate_flags=1;
            }
        }
    }
    HAL_UART_Receive_IT(&huart1,&ReadInf,1);
    }
    if(huart->Instance == huart4.Instance){
    Tiaoshi_en = 1;
}

picture_3

2.3.4 火灾报警模块

本产品使用温度传感器DHT11 (如图3)颜色传感器TCS37425两个硬件共同监测火灾发生情况,通过串口x向主控芯片发送传感器检测到的实时数据。当温度传感器达到40℃温度,同时颜色传感器检测到火焰颜色时,同时满足上述两个条件则触发火灾报警,进入警报模式。
DHT11温度传感器核心代码:

while(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_8))
{
    //超时处理
    t++;
    delay_us(1);
    if(t>=4000)
    {
        return 1;//报错 错误代码1 等待DHT超时
    }
}
//
//检验低电平响应的合法性
t=0;
while(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_8)==0)
{
    t++;
    delay_us(1);
    if(t>=4000)
    {
        return 2;//低电平过长,不合法,报错
    }
}

t=0;
while(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_8))
{
    t++;
    delay_us(1);
    if(t>=4000)
    {
        return 3;//低电平后高电平太长,不合法,报错
    }
}
for(j=0;j<5;j++)
{
    d=0;
    for(i=7;i>=0;i--)
    {
        t=0;
        while(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_8)==0)
        {
            t++;
            delay_us(1);
            if(t>=4000)
            {
                return 4;//低电平过长
            }
        
        }
        delay_us(40);
        //判断当前引脚电平
        if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_8))
        {
            d|=1<<i;
            
            //等待高电平完毕
            t=0;
            while(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_8))
            {
                t++;
                delay_us(1);
                if(t>=1000)
                {
                    return 5;//过长,不合法
                }
            }
        }
            
    }
    p[j]=d;//数据存入buffer
}
//校验和,DHT数据校验和为前4个8bit数据相加
check_sum = (p[0]+p[1]+p[2]+p[3])&0xFF;

if(p[4]!=check_sum)
{
    return 6;//校验不合法
}
return 0;
}

picture_4

2.3.5 显示屏交互模块

本产品使用smart4418安卓显示屏实现用户与产品的触摸交互。显示屏具有显示与触控功能,具体操作方法见使用说明。

picture_5

2.3.6 上位机通信模块

本产品使用L610进行主控芯片与上位机之间的信息交换,使用户能够实时识别到当前产品状态,并在警报模式触发时能够紧急向上位机发送警报信息,根据语音报警、火灾报警和摔倒报警三种模式不同来发送对应的警报信息。通过串口发送AT指令来进行L610功能的触发,具体AT指令见附录。
AT指令串口发送函数:

{
    printf("AT\r\n");
    HAL_Delay(50);
    printf("ATI\r\n");
    HAL_Delay(50);
    printf("AT+CPIN?\r\n");
    HAL_Delay(50);
    printf("AT+CSQ\r\n");
    HAL_Delay(50);
    printf("AT+CGREG?\r\n");
    HAL_Delay(50);
    printf("AT+GTSET=\"IPRFMT\",5\r\n");`
}

2.3.7 警报模式

当硬件达到触发警报标准时,进入警报模式,根据语音、火灾、摔倒三种警报模式的不同,向上位机发送不同的警报内容,并通过扬声器XFS5152播放警报。

3 机械原型

3.1机械设计

本产品基于环保和安全的理念,结合养老机器人这一产品主题,对产品机械进行了精心的设计,首先材料选用了亚克力板作为产品的外壳及支撑材料,亚克力板又称有机玻璃,具有以下优点:

1.耐候性强:对自然环境适应性很强,即使长时间在日光照射、风吹雨淋也不会使其性能发生改变,抗老化性能好,在室外也能安心使用。

2.环保无毒:即使与人长期接触也无害。

3.质地柔和:即使冬季触碰到时也不会有寒冷刺骨的感觉,非常适合老年人使用

4.韧性好,硬度高:不易破损,即使外部磕碰也不会影响内部元件,具有很高的稳定性和安全性。
其次外观采用了方盒开合盖型的设计,方盒形状简约大气,开合盖方法方便维护人员后续的维护调整,在方盒部分地区打孔,可以使得传感器与外界连通,增加传感器采集数据的准确性。

以下为部分机械设计图
picture_6
picture_7

3.2机械零件

本产品采用铰件搭配螺丝,使得顶壳能够开合开关。同时采用螺丝螺帽进行固定操作,使得六块亚克力板能够形成方盒状。具体零件如图所示:
picture_8picture_9
picture_10

3.3外观展示

整体展示:
picture_11

主视图:
picture_12

侧视图:
picture_13

俯视图:
picture_14

4 使用说明

4.1供电

本产品主控通过miniUSB供电,用户将两根miniUSB数据线一段接入开发板STM32F411和nucleo64l476rgt6供电端中,另一端通过充电头接入家用220V电路或可移动电源中,与此同时给显示屏供电,即可完成供电工作。

4.2身份识别

确保供电成功后,用户需要通过指纹识别验证使用者身份,在指纹识别通过后才可使用本产品功能,用户将录入指纹的手指置于指纹识别器上,若产品播报:“指纹验证成功,正在工作”,则进入工作模式,即可开始产品使用,指纹录入方式详见开发者模式。

4.3功能使用

当用户指纹识别成功后,对产品说“开始”即可进入用户使用模式,此时该产品具有以下功能:

4.3.1开发者模式

对产品说“调试”,进入开发者模式。开发者模式功能详见用户手册第5条“开发者模式”。

4.3.2主动报警

对产品说“报警”,即可进入预警报模式,产品会对用户说“请确认”,若用户说“取消”,则会退出预报警模式,返回正常工作状态。若用户说“确认”,则会进入报警模式,喇叭开始播放警报,同时上位机将会收到产品警报,当用户继续对产品说“取消”,则会退出报警模式,返回正常工作状态。

4.3.3火灾、摔倒警报

产品在“开始”命令下达后,则会进入火灾、摔倒检测状态。当识别到火灾时,产品将进入报警模式,同时喇叭播放“火灾警报”,当用户说“取消”时,则会退出火灾警报模式,返回正常工作状态。当识别到用户摔倒时,产品将进入报警模式,同时喇叭播报“摔倒警报”,当用户说“取消”时,则会退出摔倒警报状态

4.3.4显示屏使用

在安卓显示屏开始供电后,打开屏幕上的APP:MicroControl进入产品使用,如图所示:
start
点击进入,可进入功能选择
start_2
点开硬件介绍时,可查看产品硬件,如图所示:
hardware
在点开语音模块时,可进入语音模块查看状态,如图所示:
voice_start
状态图根据不同的指令,显示不同的状态,调试和警报状态如图所示:
调试模式:
voice_normal
警报模式:
voice_alert
点开摔倒检测模块,可根据当前状态显示检测状态:
检测状态有正常、报警两种:
正常模式:
camera_normal
报警模式:
camera_alert
点开火灾检测,即可查看当前火灾状态,如图所示:
fire

5 开发者模式

经过指纹验证和语音“开始”启动后,用户对产品说“调试”,当产品回复“进入调试模式”即可进入开发者模式。

5.1开发者模式功能

5.1.1指纹录入

进入开发者模式即自动进入指纹录入模式,在进入调试模式后,通过对指纹模块放下手指即可进入录入用户指纹。录入完毕后,用户再次进入普通模式即可通过已录入的指纹进入。
指纹录入仅能录入一次,录入成功后会自动退出开发者模式,再次进入开发者模式可以再次录入指纹。

5.1.2显示实时温度

进入开发者模式可以在显示屏上通过温度传感器DHT11显示实时温度,如若需要查看当前设备检测温度,可通过进入开发者模式查看。

5.2退出开发者模式

若指纹录入需要中断,则再次对产品说“开始”,即可退出开发者模式。