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

1.背景介绍

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

2.硬件选型

在该语音主动告警系统中,需要语音时别模块和网络告警模块。xr806有丰富的外围接口,能够采集外部多种传感器的数据,功耗低,可以采用移动电源供电,支持wifi和bt,体积小,可以灵活部署于房间的各个角落。语音模块选用天问的ASRPRO模块,该模块集成度高,支持模块化编程,识别率高的特点。
硬件连接框图如下所示,Speech Module支持uart通信和gpio信号,本次实验选用gpio通信,即当识别到特定词汇时拉高gpio向xr806发送信后,xr806接收到信号后发送信息给mqtt client。
在这里插入图片描述

硬件实物链接如下图所示
在这里插入图片描述

3.软件实现

3.1 软件流程

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

3.2 语音识别(ASR)的实现

天问的语音试别模块支持类似Scrach的模块化图形编程,程序代码如下。
在这里插入图片描述

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

3.3 XR806主机编程

3.3.1 工程的建立

工程建立和编译参考【XR806开发板试用】全志XR806开发板FreeRTOS代码包及开发环境搭建教程

3.3.2 代码开发

官方SDK中提供了参考,代码位于xr806_sdk/project/example,本次实现主要参考gpio和mqtt两个文件,基于mqtt的代码完成整体工程的开发。
官方例程是采用的阿里云的mqtt broken服务,使用前需要注册,本次开发采用EMQX提供的免费的公共MQTT服务器,相关信息如下:
在这里插入图片描述

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

#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, &param);
}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:%d\n", ret);
reconnect:printf("mqtt reconnect\n");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); //5sgoto 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信息,如下:
在这里插入图片描述

4.总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2661548.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

GitHub教程-自定义个人页制作

GitHub是全球最大的代码托管平台,除了存放代码,它还允许用户个性化定制自己的主页,展示个人特色、技能和项目。本教程旨在向GitHub用户展示如何制作个性化主页,同时,介绍了GitHub Actions的应用,可以自动化…

如何在无公网IP环境下远程访问Serv-U FTP服务器共享文件

文章目录 1. 前言2. 本地FTP搭建2.1 Serv-U下载和安装2.2 Serv-U共享网页测试2.3 Cpolar下载和安装 3. 本地FTP发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1. 前言 科技日益发展的今天,移动电子设备似乎成了我们生活的主角,智能…

2023年,我46岁,进入关机模式,稳了

关键词:持续关机、稳住基本盘、力量训练、新开端。 持续关机 对于性格内向的我,过上安静的生活才是美好岁月的真正开端。我尽量减少不必要的活动,能不出门就不出门。 在10月份,我停止了日更栏目“大志聊赚钱”,该栏目…

【Docker】添加指定用户到指定用户组

运行Docker ps命令,报错:/v1.24/containers/json": dial unix /var/run/docker.sock: connect: permission denied 创建docker用户组 安装docker时默认已经创建好 sudo groupadd docker添加用户加入docker用户组 此处以用户user为例 sudo usermo…

Linux自定义shell编写

Linux自定义shell编写 一.最终版本展示1.动图展示2.代码展示 二.具体步骤1.打印提示符2.解析命令行3.分析是否是内建命令1.shell对于内建名令的处理2.cd命令3.cd函数的实现4.echo命令的实现5.export命令的实现6.内建命令函数的实现 4.创建子进程通过程序替换执行命令5.循环往复…

【开源】基于Vue+SpringBoot的公司货物订单管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 客户管理模块2.2 商品维护模块2.3 供应商管理模块2.4 订单管理模块 三、系统展示四、核心代码4.1 查询供应商信息4.2 新增商品信息4.3 查询客户信息4.4 新增订单信息4.5 添加跟进子订单 五、免责说明 一、摘要 1.1 项目…

多功能演示工具ProVideoPlayer2 mac特色介绍

ProVideoPlayer2 mac是用于大多数任何生产的首选多功能演示工具。ProVideoPlayer 2是一种动态视频播放和处理媒体服务器,可将视频映射(包括播放和实时视频输入)实时控制到一个或多个输出。包括实时效果,调度,网络同步和…

Spring-5-切入点的高级使用

Spring提供了两个额外的Pointcut实现,分别是ComposablePointcut和ControlFlowPointcut,它们提供了所需的灵活性。 使用控制流切入点 由ControlFlowPointcut类实现的Spring控制流切入点类似于许多其他AOP实现中可用的cflow构造,尽管功能上没有那么强大。…

Python+Yolov5+Qt交通标志特征识别窗体界面相片视频摄像头

程序示例精选 PythonYolov5Qt交通标志特征识别窗体界面相片视频摄像头 如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助! 前言 这篇博客针对《PythonYolov5Qt交通标志特征识别窗体界面相片视频摄像头》编写代码&a…

电子合同如何验证有效性?教你一眼避雷无效合同!

你是否收到过电子合同,却对它是否有效感到困惑? 要验证电子合同是否有效,首先要看它的电子签章是否符合要求。 电子签名怎么才可靠? 电子签名同时满足以下条件,就是可靠签名,也就是具有法律效力的电子签名…

Unity 旋转跟随

Unity 使用任意一个局部轴指向目标 效果: 主要用于在编辑器中可视化对象的朝向,同时提供了选择不同轴向的功能。在运行时,物体将根据所选择的轴向朝向目标,并在 Scene 视图中绘制一个带箭头的圆环。 定义轴向枚举:…

车联网的安全风险与应对措施

安全风险 1、恶意软件 攻击者可以通过入侵厂商或供应商网络,用恶意软件(如病毒、木马、勒索软件等)感染车联网系统组件,从而获得对车辆的控制权或窃取敏感信息。例如,一名安全研究人员成功入侵了特斯拉(T…

校园安全风险管理系统

随着社会的不断发展和进步,教育行业也逐渐走向了信息化、智能化管理。校园作为教育事业的重要场所,其安全和管理问题一直备受关注。为了确保校园的安全和管理,各种校园管理平台应运而生。 其中,凡尔码搭建的校园安全管理系统为校园…

CodeWhisperer:编码世界中的声音启迪者

人烟 导语: 在数字化时代,编码已经成为了一种不可或缺的技能。而 CodeWhisperer(编码世界中的声音启迪者)则以其卓越的技术和深厚的知识为人们带来了独特的启发和指导。本文将介绍 CodeWhisperer 的背景和成就,探讨他是…

PowerShell Instal 一键部署gitea

gitea 前言 Gitea 是一个轻量级的 DevOps 平台软件。从开发计划到产品成型的整个软件生命周期,他都能够高效而轻松的帮助团队和开发者。包括 Git 托管、代码审查、团队协作、软件包注册和 CI/CD。它与 GitHub、Bitbucket 和 GitLab 等比较类似。 Gitea 最初是从 Gogs 分支而来…

土壤侵蚀模型地形因子计算工具(2.0版本)

土壤侵蚀模型地形因子计算工具(2.0版本) 土壤侵蚀模型地形因子计算工具(2.0版本)。该软件为符素华老师、刘宝元老师和周贵云老师开发的。2.0 版本在 1.0 版本的基础上修改了当坡长大于临界坡长后的坡长因子算法。2.0 中用整坡坡长因子计算公式…

nfs高可用部署

一、前言 为了避免nfs单点问题导致的服务不可用,使用以下架构实现nfs的高可用,keepalivedinotifyrsyncnfs,keepalived实现nfs的高可用,inotify持续监控nfs数据目录的变化,发生变化后通过rsync进行同步到备节点&#xf…

【北亚服务器数据恢复】san环境下LUN Mapping出错导致文件系统一致性出错的数据恢复案例

服务器数据恢复环境: san环境下的存储上一组由6块硬盘组建的RAID6,划分为若干LUN,MAP到跑不同业务的服务器上,服务器上层是SOLARIS操作系统UFS文件系统。 服务器故障: 业务需求需要增加一台服务器跑新增的应用&#xf…

如何实现h5的抽奖功能

示例: 使用的是一个插件可以在多种环境下运行的插件:九宫格 LuckyGrid | 基于 Js / TS / Vue / React / 微信小程序 / uni-app / Taro 的【大转盘 & 九宫格 & 老虎机】抽奖插件 安装插件 # npm 安装 npm install lucky-canvas/vuelatest# 或者 yarn 安装 yarn add lu…

秋招复习篇之代码规范

目录 前言 1、变量命名 2、代码空格 1)操作符左右一定有空格, 2)分隔符(, 和;)前一位没有空格,后一位保持空格,例如: 3)大括号和函数保持同一行,并有一个空格…