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

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

3天内不再提示

如何用XR806实现语音紧急呼叫系统的设计呢?

全志在线 来源:全志在线 2024-01-12 17:34 次阅读

在该语音主动告警系统中,需要语音时别模块和网络告警模块。

XR806有丰富的外围接口,能够采集外部多种传感器的数据,功耗低,可以采用移动电源供电,支持wifi和bt,体积小,可以灵活部署于房间的各个角落。语音模块选用天问的ASRPRO模块,该模块集成度高,支持模块化编程,识别率高的特点,故非常适合本项目的功能需求。

硬件连接

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

781fee28-b12d-11ee-8b88-92fbcf53809c.png

硬件配置

软件实现

语音试别模块上电完成初始化以后输入语音提示信息并循坏等待语音的输入,匹配到对应语音后拉高gpio发送信号给x806,延迟一秒下拉gpio,并输入提示语音,软件整体的流程如下图所示。

783f5d1c-b12d-11ee-8b88-92fbcf53809c.png

xr806完成初始化以后,连接网络,建立mqtt连接等待语音模块的输入,接收到信号后,发送mqtt信息给broken,订阅该topic的所有client都会收到该告警信号。

天问的语音试别模块支持类似Scratch的模块化图形编程,程序编写完成后先生成模型,然后编译下载即可,程序代码如下:

784f05aa-b12d-11ee-8b88-92fbcf53809c.png

XR806主机编程

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

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

78749d1a-b12d-11ee-8b88-92fbcf53809c.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_fun的while(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:%d
", ret);
reconnect:
    printf("mqtt reconnect
");
    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
 }

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

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

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

788fe908-b12d-11ee-8b88-92fbcf53809c.png

本文转载自https://aijishu.com/a/1060000000433840







审核编辑:刘清

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

    关注

    2552

    文章

    51383

    浏览量

    756118
  • GPIO
    +关注

    关注

    16

    文章

    1216

    浏览量

    52310
  • 语音模块
    +关注

    关注

    1

    文章

    223

    浏览量

    17421
  • uart通信
    +关注

    关注

    0

    文章

    19

    浏览量

    7017

原文标题:用XR806实现语音紧急呼叫系统,可以离线识别语音

文章出处:【微信号:gh_79acfa3aa3e3,微信公众号:全志在线】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

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

    ,研发一种主动语音上报的系统语音实时识别人的求救声,然后通过网络发送信息告知家人。2.硬件选型在该语音主动告警系统中,需要
    发表于 01-15 10:41

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

    XR806芯片介绍XR806是全志科技旗下子公司广州芯之联研发设计的一款支持WiFi和BLE的高集成度无线MCU芯片,支持鸿蒙L0系统。具有集成度高、硬件设计简单、BOM成本低、安全可靠等优点
    发表于 11-15 17:08

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

    XR806芯片介绍XR806是全志科技旗下子公司广州芯之联研发设计的一款支持WiFi和BLE的高集成度无线MCU芯片,支持鸿蒙L0系统。具有集成度高、硬件设计简单、BOM成本低、安全可靠等优点
    发表于 11-15 18:32

    XR806芯片的mac地址要如何存放以及如何获取

    XR806芯片系统异常重启如何解决?XR806芯片如何更换打印log口?XR806芯片的mac地址要如何存放以及如何获取?求解答
    发表于 12-28 06:42

    如何对XR806开发板的环境进行配置

    如何对XR806开发板的环境进行配置?有哪些配置步骤?
    发表于 12-28 07:51

    XR806板子编译时会出现哪些问题

    XR806板子编译时会出现哪些问题?怎样去解决
    发表于 12-28 06:25

    xr806板子上如何实现用ncnn跑神经网络mnis

    xr806板子上如何实现用ncnn跑神经网络mnis
    发表于 12-28 06:51

    如何利用XR806开发板去实现一种UDP通信

    如何利用XR806开发板去实现一种UDP通信?其结果怎样?
    发表于 12-28 06:12

    为什么XR806适配新的RTOS原启动代码就出现了系统奔溃

    XR806(M33内核)适配新的RTOS时,沿用M4F的启动代码后出现了系统奔溃,但是expection显示的PC地址和LR地址都被修改,无法准确判断哪条语句导致的错误。为什么XR806适配新的RTOS原启动代码就出现了
    发表于 12-29 06:19

    如何保证休眠时XR806芯片GPIO的电平状态

    如何保证休眠时XR806芯片GPIO的电平状态XR808/XR809/XR871/XR872
    发表于 12-29 06:16

    【直播预告】全志XR806芯片应用实战分享

    /joinXR806优秀开发例程《基于OpenHarmony的棋子分拣机》《用全志XR806开源鸿蒙开发板做一个四足行走机器狗》《【XR806开发板实战】轻松连上华为云实现物联网》《在
    发表于 02-28 17:39

    【直播预告】全志XR806芯片应用实战分享会!

    /joinXR806优秀开发例程《基于OpenHarmony的棋子分拣机》《用全志XR806开源鸿蒙开发板做一个四足行走机器狗》《【XR806开发板实战】轻松连上华为云实现物联网》《在
    发表于 03-01 09:27

    全志XR806底板位号图

    全志XR806底板位号图
    发表于 10-19 15:11 0次下载

    全志XR806鸿蒙无线模组原理图

    全志XR806鸿蒙无线模组原理图
    发表于 10-19 15:11 7次下载

    全志XR806开发板原理图

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