0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【XR806开发板试用】语音紧急呼叫系统

冬至子 来源:寒冰1988 作者:寒冰1988 2023-10-19 11:39 次阅读

1.背景介绍

老人和小孩子独自在家的时候如果遇到紧急情况,通过拨打电话或者微信的方式通知家人存在操作不便的问题。例如,如果老人摔倒了手机很可能不在身边,对小孩来说手机的操作又过于复杂。针对这种情况,研发一种主动语音上报的系统,语音实时时别人的求救声,然后通过网络发送信息告知家人。

2.硬件选型

在该语音主动告警系统中,需要语音时别模块和网络告警模块。xr806有丰富的外围接口,能够采集外部多种传感器的数据,功耗低,可以采用移动电源供电,支持wifi和bt,体积小,可以灵活部署于房间的各个角落。语音模块选用天问的ASRPRO模块,该模块集成度高,支持模块化编程,识别率高的特点。

硬件连接框图如下所示,Speech Module支持uart通信和gpio信号,本次实验选用gpio通信,即当识别到特定词汇时拉高gpio向xr806发送信后,xr806接收到信号后发送信息给mqtt client。

硬件连接框图.png

硬件实物链接如下图所示

硬件实物连接图.png

3.软件实现

3.1 软件流程

软件整体的流程如下图所示。xr806完成初始化以后,连接网络,建立mqtt连接等待语音模块的输入,接收到信号后,发送mqtt信息给broken,订阅该topic的所有client都会收到该告警信号。语音试别模块上电完成初始化以后输入语音提示信息并循坏等待语音的输入,匹配到对应语音后拉高gpio发送信号给x806,延迟一秒下拉gpio,并输入提示语音。

程序流程图.png

3.2 语音识别(ASR)的实现

天问的语音试别模块支持类似Scrach的模块化图形编程,程序代码如下。

ASR Code.png

程序编写完成后先生成模型,然后编译下载即可。

3.3 XR806主机编程

3.3.1 工程的建立

3.3.2 代码开发

官方SDK中提供了参考,代码位于xr806_sdk/project/example,本次实现主要参考gpio和mqtt两个文件,基于mqtt的代码完成整体工程的开发。

官方例程是采用的阿里云的mqtt broken服务,使用前需要注册,本次开发采用EMQX提供的免费的公共MQTT服务器,相关信息如下:

MQTT服务器信息.png

按照此信息修改代码的定义:

#define MQTT_DEMO_CLIENT_ID "xr806-mqtt"
#define MQTT_DEMO_HOST_NAME "mqtt://broker.emqx.io"
#define MQTT_DEMO_PORT      "1883"
// #define MQTT_DEMO_USERNAME  "xr806_senor_set0&vo84Hm3xbUj"
// #define MQTT_DEMO_PASSWORD  "4f9ebb2143f01e4489133c1ea55051fbbfc4c44e"
#define MQTT_DEMO_TOPIC     "/topic/xr806-sos"

客户端采用EMQX免费的MQTTX,该工具跨平台且提供网页版。手机端可以搜到MQTT助手等类似工具。

GPIO直接套用实例中的即可,需要完成默认func等配置的初始化:

static void gpio_input_init(void)
{
    GPIO_InitParam param;
    param.driving = GPIO_DRIVING_LEVEL_1;
    param.mode = GPIOx_Pn_F0_INPUT;
    param.pull = GPIO_PULL_NONE;
    HAL_GPIO_Init(GPIO_INPUT_PORT, GPIO_INPUT_PIN, ¶m);
}

static  uint8_t gpio_input_read(void)
{
    return (uint8_t)HAL_GPIO_ReadPin(GPIO_INPUT_PORT, GPIO_INPUT_PIN);
}

修改mqtt_demo_funwhile(1)代码块,先判断采集到的gpio信号,然后再publish信息,相关修改如下:

while (1) {
        if (gpio_input_read()) {
            /* publish message to topic */
            mqtt_demo_publish(MQTT_DEMO_TOPIC, MQTT_DEMO_MSG_TEXT);
            ret = MQTTYield(&mqtt_demo_client, 300);
            if (ret != 0) {
                printf("mqtt yield err, ret:%dn", ret);
reconnect:
                printf("mqtt reconnectn");
                mqtt_demo_disconnect();
                ret = mqtt_demo_connect(MQTT_DEMO_HOST_NAME, MQTT_DEMO_PORT);
                if (ret != 0) {
                    reconnect_times++;
                    if (reconnect_times > 5)
                        goto exit;
                    OS_MSleep(5000); //5s
                    goto reconnect;
                }
            }
        }
        OS_MSleep(10); //10ms
    }

3.3.3 编译执行

编译步骤可以参考工程建立章节提供的链接,官方实例,mqtt的启动依赖于网络的建立,因此系统启动后需要先建立网络,建立网络的命令如下:

# net sta config [ssid] [password]
# net sta enable

系统启动以后,说一句“救命”,XR806就会发送"SOS"信息到broken,同时语音试别模块会发出“我来了”的提示信息。订阅/topic/xr806-sos该topic的Client会收到sos信息,如下:

mqttx client.png

4.总结

首先感谢极术社区和全志科技组织的这次活动,能够有机会试用到功能如此强悍的芯片。通过本次试用一方面对XR806芯片本身的功能和开发流程有了更深入的了解,另一方面也接触到了FreeRtos的开发。相对于鸿蒙liteos SDK,FreeRtos的SDK使用起来方便了很多,这也看出了厂商的用心。因为时间的原因XR806的很多功能还没有来得及挖掘,接下来有时间会利用这颗芯片做一些更有意思的设计。

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

    关注

    2545

    文章

    50439

    浏览量

    750955
  • ASR
    ASR
    +关注

    关注

    2

    文章

    35

    浏览量

    18694
  • FreeRTOS
    +关注

    关注

    12

    文章

    483

    浏览量

    61906
  • GPIO
    +关注

    关注

    16

    文章

    1188

    浏览量

    51827
  • MQTT协议
    +关注

    关注

    0

    文章

    96

    浏览量

    5334
收藏 人收藏

    评论

    相关推荐

    XR806开发板适用】基于多源信息融合的粮食霉变检测系统设计

    XR806开发板具有强大的数据处理和传输能力,广泛应用于物联网和嵌入式系统开发
    的头像 发表于 10-27 17:06 870次阅读
    【<b class='flag-5'>XR806</b><b class='flag-5'>开发板</b>适用】基于多源信息融合的粮食霉变检测<b class='flag-5'>系统</b>设计

    基于全志XR806开发板的家用环境监测传感器设计

    本文来自全志XR806开发板评测活动文章,作者使用XR806开发板制作一个简单的家用环境监测传感器,可以获取当前的温度、湿度、气压、海拔这四个参数,同时能够通过外部的屏幕实时显示刷新。
    的头像 发表于 12-03 10:20 621次阅读
    基于全志<b class='flag-5'>XR806</b><b class='flag-5'>开发板</b>的家用环境监测传感器设计

    如何使用XR806开发板来设计一个粮食霉变检测系统

    XR806开发板具有强大的数据处理和传输能力,广泛应用于物联网和嵌入式系统开发
    的头像 发表于 01-05 17:30 765次阅读
    如何使用<b class='flag-5'>XR806</b><b class='flag-5'>开发板</b>来设计一个粮食霉变检测<b class='flag-5'>系统</b>?

    OpenHarmony南向嵌入式:【XR806开发板指导文档】

    XR806_OpenHarmony开发板是基于XR806芯片设计开发的参考评估,身集成了XR806
    的头像 发表于 04-14 09:25 725次阅读
    OpenHarmony南向嵌入式:【<b class='flag-5'>XR806</b><b class='flag-5'>开发板</b>指导文档】

    用全志XR806开发板实现语音紧急呼叫系统

    的建立工程建立和编译参考【XR806开发板试用】全志XR806开发板FreeRTOS代码包及开发
    发表于 01-15 10:41

    XR806芯片、XR806开源鸿蒙开发板简介

    。可广泛满足 智能家居、智慧楼宇、工业互联、儿童玩具、电子竞赛、极客DIY 等领域的无线连接需求。芯片框图芯片参数XR806开源鸿蒙开发板介绍XR806开发板是基于
    发表于 11-15 17:08

    XR806芯片、XR806开源鸿蒙开发板简介

    。可广泛满足 智能家居、智慧楼宇、工业互联、儿童玩具、电子竞赛、极客DIY 等领域的无线连接需求。芯片框图芯片参数XR806开源鸿蒙开发板介绍XR806开发板是基于
    发表于 11-15 18:32

    有哪位大神可以分享一下XR806开发板/模组的资料呢

    XR806开发板/模组的硬件包含哪几个部分?XR806开发板/模组的硬件该怎样去设计呢?
    发表于 12-28 06:51

    请问大佬XR806鸿蒙开发板怎么样?

    请问大佬XR806鸿蒙开发板怎么样?
    发表于 12-29 07:06

    简述星辰处理器的全志XR806鸿蒙开发板上手体验

    本文转载于极术社区极术专栏:STAR CPU(星辰处理器)作者:PingYang XR806鸿蒙开发板是全志科技新出的一款支持WiFi和BLE的高集成度无线MCU芯片,支持鸿蒙L0系统。CPU采用
    的头像 发表于 11-03 15:00 8431次阅读
    简述星辰处理器的全志<b class='flag-5'>XR806</b>鸿蒙<b class='flag-5'>开发板</b>上手体验

    简述XR806开发板与STAR-MC1处理器

    全志XR806开发板基于XR806芯片设计,搭载了安谋中国的星辰系列STAR-MC1处理器。该开发板体积较小,具备WiFi、低功耗蓝牙技术等功能,技术集成度高,成本低,支持鸿蒙
    的头像 发表于 04-11 18:08 3091次阅读

    XR806开发板试用】留言功能开发

    XR806开源鸿蒙开发板是一款基于XR806芯片设计,高度集成WiFi/BLE/常用外设,可供开发者进行方案评估、DIY或小规模产品研发,可广泛应用于智能家居、智能楼宇、智能城市和工业
    的头像 发表于 10-08 10:58 616次阅读

    XR806开发板试用】FreeRTOS创建任务测试

    这篇来学习下,XR806开发板在FreeRTOS系统下创建两个任务测试,由于没有找到学习的文档,试着参考例程来测试。
    的头像 发表于 10-10 11:47 604次阅读
    【<b class='flag-5'>XR806</b><b class='flag-5'>开发板</b><b class='flag-5'>试用</b>】FreeRTOS创建任务测试

    XR806串口驱动CM32M对小厨宝的控制实验

    非常感谢基于安谋科技STAR-MC1的全志XR806 Wi-Fi+BLE开源鸿蒙开发板试用活动,并获得开发板试用
    的头像 发表于 10-23 11:39 523次阅读
    <b class='flag-5'>XR806</b>串口驱动CM32M对小厨宝的控制实验

    全志XR806开发板原理图

    全志XR806开发板原理图
    发表于 10-19 15:11 11次下载