CSR8670项目实战:4人组网蓝牙对讲耳机
Posted NiceBT
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CSR8670项目实战:4人组网蓝牙对讲耳机相关的知识,希望对你有一定的参考价值。
为了方便大家学习,现与我爱蓝牙网联合推出【QCC300x/CSR867x/QCC30xx/QCC51xx开发板】。
博主联系方式:Call-15715161220,QQ-705829339
技术交流QQ群号:743434463
开发板会员QQ群号:725398389(凭订单号入群,赠独家学习资料)
——————————正文分割线———————————–
1. 引言
多人组网蓝牙对讲耳机可用来组建小型即时通讯网络,广泛应用于小型车队通讯等使用场景。形态以蓝牙头盔耳机为主,厂商一般是欧美和台湾。
国内厂商也有此类型耳机,主要以购买国外BC5时代的模块为主,方案整体成本较高。本文所述项目在CSR8670平台上实现了4人蓝牙对讲功能。
2. 主要功能
- 4人全双工语音对讲
- HFP/HSP通话
- A2DP音乐播放
- 蓝牙语音助手
- USB DFU升级
四人对讲系统框图:
四人对讲时,每台耳机与最多2个设备相连,组成队列。首尾两部耳机可以与手机等其他蓝牙发射器通过蓝牙连接,可拨打电话、听音乐等。
单个耳机系统框图如下:
mic采集的说话人声与远端的语音信号在dsp内进行混音、滤波、选通处理后由本地spk播放,也需要通过RF通路传输给其他设备。
3. 项目难点
项目的难点有三个,即配对、组网、dsp处理。
首先谈配对。蓝牙对讲耳机之间的发现、配对和连接过程与手机和普通蓝牙耳机之间的配对过程并无很大区别。由于CSR8670方案支持shareme功能,因此sink例程中可以找到扫描和连接其他sink设备的api(参考sink_inquiry.c)。当主设备进入inquiry模式后,从设备进入conndisc模式,主设备找到从设备后发起连接请求即可完成配对。这里要注意主设备可能会连接到其他非蓝牙对讲耳机的设备,因此需要在inquiry过程中对搜索到的设备进行filter。filter条件可以是设备名称或设备所支持的profile类型。在本项目中采用了后一种方式。
再谈组网。CSR8670方案支持同时连接最多两个设备,因此可以通过级联的方式将耳机串联起来。其实CSR的ADK中已经给出了一个可参考的应用框架,即TWC功能(three way conference),只是缺少了专门的dsp处理。
最后谈一谈dsp处理,也是整个项目的核心难点。全双工对讲的难处在于,既要让别人听到自己的声音,又不能在本地听到自己的声音,还要让别人听到的声音较清晰且延迟低,同时还要考虑降低环境噪声等问题。这些问题涉及到数字信号处理、kalimba dsp编程等知识,因篇幅有限不在此详细展开。
4. 总结
在此项目现有系统框架的基础上,可以继续深入开发,例如导航混音、4人以上蓝牙对讲等,甚至可以集成AVS语音助手等流行功能。
同时,在掌握了此方案的框架后,整个功能很容易迁移到其他平台,使我们有机会将方案低成本化,毕竟CSR8670的价格不低。后续可以尝试的平台有QCC512X和QCC302X系列。
以上是关于CSR8670项目实战:4人组网蓝牙对讲耳机的主要内容,如果未能解决你的问题,请参考以下文章
QCC3003项目实战:BlueMotor6 AGHFP CVC 蓝牙对讲耳机