您好, 访客   登录/注册

基于STM32的声音定位系统

来源:用户上传      作者:

  摘要:从GPS到手机定位,定位系统在我们的日常生活中越来越重要。现在已将声音定位应用在可视电话、视频会议等系统中。本系统使用STM32产生频率为500Hz的正弦波信号,以便单片机STM32对信号进行捕获,减少误触发。声源定位是通过对四个驻极体接收到相位差信号进行处理,经过一套比较完善的算法可得声源的坐标,即可进行声源定位。设计完成后,进行了整体测试,基本能够达到设计要求。
  关键词:声音定位;TODA算法;时间差;滤波
  1、引言
  1.1研究背景及意义
  随着科技的进步,定位已经在我们的日常生活中扮演的角色越来越重要。确定一个声源在空间中的位置是一项有广阔应用背景的有趣研究,将来可以将语音声源定位应用在可视电话、视频会议等系统中检测说话人的位置。声源定位通过测量物体发出的声音对物体定位,与使用声纳、雷达、无线通讯的定位方法不同,前者信源是普通的声音,是宽带信号,而后者信源是窄带信号。对声源位置的确定能给大家有效的利用声音提供帮助。事实证明,声源定位系统是一个很有意义的研究课题。
  1.2设计要求
  设计一套声音定位系统。在一块不大于1m2的平板上贴一张500mm×350mm的坐标纸,在其四角外侧分别固定安装一个声音接收模块,声音接收模块通过导线将声音信号传输到信息处理模块,声音定位系统根据声响模块通过空气传播到各声音接收模块的声音信号,判定声响模块所在的位置坐标。
  同时对于整个系统,要求:
  (1)设计制作一个声响模块,含信号产生电路、放大电路和微型扬声器等,每按键一次发声一次,声音信号的基波频率为500Hz左右,声音持续时间约为1s;
  (2)设计制作四路声音接收模块,由麦克风、放大电路等组成,并分别与信息处理模块相连接,以便将频率为500Hz左右的信号传送至信息处理模块。
  (3)设计制作一个信息处理模块,要求该模块能根据从声音接收模块传来的信号判断声响模块所在位置的x、y坐标,并以数字形式显示x、y坐标值
  (4)具有显示声响模块移动轨迹的功能。当声响模块在坐标纸上按指定路径移动时,液晶显示屏能动态显示声响模块移动的轨迹,显示的轨迹与声响模块移动的路径一致。
  2、声音定位原理简述
  声源定位是一种利用麦克风阵列接收声音信号,并使用信号处理等手段对其进行分析处理,最终确定声源所在位置的技术.该技术在生产生活等领域得到了广泛的应用,在科研方面也同样具有宝贵的价值。由于定位方式原理有所不同,一般可将声源定位技术分为3类:
  (1)第一种是高分辨率谱估计定位技术,这种方法在远场条件下的定位效果不错,但计算量较大,且在处理宽带信号上有所欠缺。
  (2)第二种方法是基于可控波束形成法,但为了使波束功率达到最大值,需要对整个空间进行扫描搜索,计算量大,还需要了解背景噪声等先验知识。
  (3)第三种定位算法是基于到达时间差技术,即TDOA。这也是现在最常用的一种方法。该方法主要有两个步骤,分别是时延估计和定位估计,首先使用多组麦克风对信号进行接收,接着使用相关方法分别计算从而得到多组时延,然后由麦克风阵列位置结合上一步求得的时延进行定位,从而得到最终声源的位置。这种方法的优势在于原理简单,计算量较小,且不需要知道噪声的先验知识。
  3、方案论证与选择
  3.1总体设计方案论证与选择
  针对本次课程设计任务,进行分析得到:该声音定位系统设计主要由以下几个模块组成:声响模块、声音信号接收模块、信息处理显示模块。在这几个模块中最主要的是声音信号接收模块,其功能是对声响模块发出的信号进行采集并放大,采集到的信号容易失真、不稳定,所以需要多次调试和修改电路。声响模块采用STM32F103驱动扬声器发出500HZ方波信号。声音接收处理模块采用驻极体接收,通过多级放大整波电路,将接收的信号经放大、滤波、电压比较排除噪声干扰。再利用STM32F103微处理器处理接收到的信号,计算出位置坐标,显示模块直接利用STM32F103自带的FFT屏幕完成显示。
  4、硬件设计
  4.1声响模块电路设计
  声响模块是由C8051F310单片机输出频率为500Hz的方波,然后从单片机引脚输出,输出的信号经过三极管后放大后,再接入到蜂鸣器。此时蜂鸣器的输出电流为35mA左右,供电电源为5V,发声模块的功率低于200mW,符合本题的要求。
  4.2声音接收模块
  接收部分是用麦克风接收声音信号。由于麦克风接收到的信号在不经过放大时信号很小,不易检测,故后级利用运算放大器将接收的信号进行放大,已达到后级电路的要求。本次放大电路采用把运算放大器接成同相比例放大电路,放大倍数由R5和R8共同决定,放大倍数Au=R5/R8+1,通过调节R5可以很方便的改变放大倍数,以达到要求。
  5、软件设计
  5.1发声模块流程图
  题目中要求产生频率为500HZ的方波信号驱动蜂鸣器发声,由于方波频率f=500Hz周期T=1/500=2ms,让定时器计满1ms,蜂鸣器引脚输出“0”,再计满1ms,蜂鸣器接入单片机引脚输出取反,这样就可以产生500Hz的方波。
  5.2声音处理及显示模块流程
  整个的声音处理部分都采用STM32外部中断和定时器完成。四个外部中断的优先级设置为同级,这样就可以四路信号无所谓先后的进行触发。上电就把定时器和外部外部中断初始化,然后等待四路信号的外部中断触发。当任意一路外部中断被触发,则立即启动四路定时器开始定时,每接收一路信号,则关掉相应的定时器和外部中断引脚,直到四路信号全部触发完成,关掉所有定时器和外部中断。然后对信号进行处理,利用数学方法计算出声源位置,调用函数在TFT屏幕上显示,完成一轮检测。然后重复上述过程。
  6、结果分析与总结
  本次设计,整体来说基本完成任务,测试结果表明,整个系统基本能满足要求,四路模块接收到的信号有先后顺序,但是由于噪声和毛刺的干扰,会有误判的现象。
  本次课程设计遇到的问题比较多,最主要的原因在于对信号处理方面知识的欠缺和模拟电路知识的缺乏。具体来说
  1.模拟电路知识缺乏:整个電路涉及到功率放大电路、信号放大电路、滤波电路、比较电路共四个主要部分的电路设计。在大学期间对于模拟电路的轻视,导致知识学习的不透彻,设计的电路有很多部分都参考了优秀的经典电路。为了能够使设计达到,在课程设计期间,补充了很多模电知识。
  2.信号处理知识不够:本次课程设计处理的信号仅仅是对声音信号的处理,但是在处理过程中,遇到了毛刺干扰的问题,一直不能很好的解决。这也是本次课程设计遇到的最主要问题,采用了比较电路、延时电路等多种方法都没有能够彻底的解决。在后面的实验中发现,应该是由于电路时自己利用铜板搭建的,信号的干扰较大,如果要彻底解决,需要考虑到PCB的布线,元器件的布局等更多深层次的问题。
  参考文献:
  [1]靳莹,杨润泽.声测定位技术的现状研究[J].电声技术,2007,31(2): 4-8.
  [2]韩纪庆,张磊,郑铁然,语音信号处理[M],北京:清华大学出版社,2004
  [3]张志勇.基于嵌入式Linux 的分布式声音定位系统的研究[D].北京:北京邮电大学,2011.
  基金:2017年成都理工大学国家级大学生创新创业训练计划项目(项目编号:201710616005)。
转载注明来源:https://www.xzbu.com/1/view-14855674.htm