汪志胜,王天本,李张本,刘现涛,陈子毅
(1.西北农林科技大学 机械与电子工程学院,陕西 杨凌 712100;2.农业农村部农业物联网重点实验室,陕西 杨凌 712100;3.陕西省农业信息感知与智能服务重点实验室,陕西 杨凌 712100)
无线行为感知是近年来新兴的研究热点,通过普适的无线信号,如RF、WiFi、声波等对人进行非接触式的行为感知,受到了学术界和产业界的广泛关注与重视[1].由于声波传播速度慢且收发设备采样率相对较高,因此单个采样点对应的传播距离短,能够实现较高精度的感知,此外,收发设备相对廉价,利于推广应用[2].近年来,国内外无线感知研究团队利用声波开展了一些高精度且极具实用价值的行为感知方面的研究,如人体呼吸监测、步态识别、手势识别、轨迹追踪等[3-12].
目前,基于声波的行为感知研究中所使用的收发平台可分为商用设备和自制设备两类.商用设备主要包括智能移动设备[2]2960,[9]497,[10]32,[12]1085(如PC、智能手机及手表等)和音箱、麦克风等音频设备[3]2959,[5]2,但这些设备一般不具备高采样率且频率响应范围较窄,研究者一般能利用的仅为18 kHz ~22 kHz频段.Ueda等[13]通过实验得出部分婴儿和儿童的可听频段略高于20 kHz,因此,目前的商用设备应用于家居环境可能存在干扰儿童的隐患.此外,一方面这些商用设备由于硬件限制,大多只能实现单发单收;另一方面,部分设备存在收发不同步的问题[2]74,[5]10,[11]5-6.收发不同步会影响系统的实时性而导致丢失有效数据,对基于实时测距原理的行为感知应用会产生较大影响.自制设备中所采用的压电超声换能器一般只能发送固定频率的信号,而实现调频信号发送的硬件成本很高,甚至需高压才能驱动,而且波束角较小且灵敏度较差,感知范围有限[4]15373.因此,为了解决现有平台的缺陷,更好地开展声波感知研究工作,设计一套可便捷控制、宽频带、收发同步以及不限于单发单收的超声平台具有重要意义.
超声两路同步收发平台的总体结构如图1所示,主要包括:USB两路同步收发声卡、超声发射音箱以及数字MEMS麦克风三部分.平台以USB两路同步收发声卡为核心,分别接入两台超声发射音箱设备,能够独立且同步地发射两种不同频段和功率的超声波;还可接入两个能采集超声波的数字MEMS麦克风,独立且同步地全向接收超声波.超声发射音箱的功能主要是将声卡输出的信号源经功放电路功率放大后驱动电-声换能单元发出超声波;而数字MEMS麦克风采用楼氏电子的频率响应为1 kHz~80 kHz的SPH0641LU4H-1型号数字MEMS麦克风,其内部集成ADC单元,能够将全向接收的超声转化并输出为可以被芯片直接采集的PDM数据流.
本平台作为面向行为感知研究的支撑工具,样机如图2所示.在使用过程中,可根据实际需求接入单路或两路的超声发射音箱和数字MEMS麦克风,然后将USB两路同步收发声卡通过USB总线连接至任意一台带操作系统的平台(如电脑、智能移动设备以及Linux嵌入式系统板等)以组建成系统.以操作系统的平台作为处理中心,可将USB两路同步收发声卡识别为USB音频播放和录音设备,继而可由上位机程序便捷地控制USB音频驱动,实现自定义超声信号的两路同步实时收发.
图1 平台总体结构图 图2 平台总体样机图
图3 USB声卡电路原理图
USB两路同步收发声卡为本平台的核心部分,其硬件的设计主要包括:主控核心电路、USB电路、音频输出电路、稳压电源电路以及数字MEMS麦克风接口电路等.本声卡的电路原理图如图3所示,主控核心电路以STM32F446VCT6单片机为核心器件,使用片内ULPI PHY接口外扩高速USB芯片USB3300以构建USB-OTG-HS通信电路,将片内I2S音频接口连接ES9023音频数模转换芯片构建两路音频输出电路,将片内SAI音频接口设计为两路FPC排线接口电路,用于接入数字MEMS麦克风.稳压电源电路采用LD1086D2M33TR低压差线性稳压芯片,将USB的VBUS转为3.3 V,作为整个声卡板的电源.
为了降低USB开发难度,USB声卡的固件程序基于ST(意法半导体)开源的USB_Audio类库展开设计.USB声卡固件程序的功能一般是与PC端实现基于USB音频类通信协议的数据交互,以及播放和录音音频流的采样、传输、读写及处理等过程.对于本USB声卡主控芯片,该过程的实现主要包括主程序和系统中断程序两大部分的设计内容.主程序一般用于执行耗费CPU的工作,若耗费CPU的工作放入中断处理函数内执行,会降低程序执行效率,使得音频流的实时性被破坏.因此,除了实现主控芯片时钟及外设的初始化和USB声卡枚举,应将PDM转PCM的解码操作放入主程序的while循环,简要流程如图4所示.
图4 主程序流程图
系统中断程序的设计如图5所示,其主要包括USB中断、I2S2 DMA1中断以及SAI1 DMA2中断.中断优先级设置为:I2S2 DMA1中断>SAI1 DMA2中断>USB中断,其中USB中断又可分为OUT和IN中断.为了实现播放音频流的传输过程,设计了USB OUT中断处理和I2S2 DMA1发送完成中断处理程序.USB OUT中断处理主要是将PC发送过来的数据包写入到播放环形队列.I2S2 DMA1发送完成中断处理主要是循环,从播放环形队列读取数据传输至I2S2进行采样并输出.然后,为了实现录音音频流的传输过程,设计了SAI1 DMA2接收完成中断处理程序,主要采用乒乓缓冲机制存储PDM音频数据,其配合主程序while循环实现了录音数据流的实时传输、解码以及录音环形队列的数据写入过程,继而设计了USB IN中断处理程序,实现读取录音环形队列的数据,待PC请求数据时进行上传.
由于PC端和USB声卡设备端采用不同的时钟源,会造成两端数据不能完全匹配而产生同步性问题,即在设备的写入端,数据按照PC上的USB的时钟进行传输,而在设备输出端,数据按照处理平台的时钟进行操作,这两个时钟不可避免地存在一定误差,从而随时间增长造成缓存写满或读空.实际上,这种时钟不同步的特性有限但无规律,会对音频流的实时收发带来很大干扰,缓存溢出或消耗完毕会导致连续爆音问题[14].
图5 系统中断程序流程图
为了解决上述问题,传统方式是让USB声卡端的实际采样率设置为略低于PC端,并建立一个长的缓存区,但这对于小内存空间的MCU并不适用.此外,随着时间增长数据依旧会溢出.也有研究采用外部PLL将声卡的采样率与PC进行实时匹配,但是会增加硬件成本[10].实际上,试验发现虽然使用ST提供的采样率转换算法(SRC)的同步机制效果好,但其会使CPU的负荷达到22.07%.如果USB声卡还需对多组MEMS麦克风进行软件解码或者需要进行复杂的算法处理,则USB声卡的CPU可能会满负荷,将无法保障同步性.因此,本研究提出一种基于指针调整的无反馈同步算法,实现播放和录音音频流的同步.该算法位于图5所示的播放和录音同步操作程序块处.
图6 播放数据流指针调整的无反馈同步算法流程图 图7 算法上下限阈值设计
该算法的核心思想:以播放音频流为例,实时监测环形队列的数据量,环形队列内每写入数据包就会计算当前内部剩余的数据量,如果数据量超过设定的上限阈值(SPEAK_UP_COUNT)时,就会触发读指针out_rd_ptr加2,即舍弃一帧数据(左右声道各半帧);反之,如果数据量减少到设定的下限阈值(SPEAK_DN_COUNT)时,就将读指针out_rd_ptr减2,重复读一帧数据,算法流程如图6所示.SPEAK_DN_COUNT的取值为环形缓存区长度的3/8倍,而SPEAK_UP_COUNT的取值为环形缓存区长度的5/8倍,如图7所示.同理,录音音频流的同步也采用上述思想.该算法不会像SRC同步机制一样使得USB声卡的CPU负荷加大,但每秒会丢失一帧数据.对于96 K采样率来说,会造成1/96 K的错误率(实际上可以忽略),即通过合理丢帧保持了所需的同步性.
为了将USB声卡输出的电信号转化为足够功率的超声波,设计了超声发射音箱,其内部结构与普通音箱基本相同,但具有创新性的是对USB声卡输出的电信号进行低失真的功率放大,以驱动电-声换能单元发出超声.该超声发射音箱主要包括扬声器单元及功放电路等两大部分.其中,扬声器采用2.5寸AMT-65型铝带超高音扬声器,其频率响应上限高达40 kHz,额定功率为15 W,阻抗为8 Ω.功放电路采用OPA548单声道集成功放芯片设计同相比例放大电路,通过切换的反馈电阻Rf阻值(10 kΩ/20 kΩ/30 kΩ/40.2 kΩ)使得功放输出功率为四档可调(2 W/4.5 W/8 W/12.6 W),电路原理简图如图8所示.
图8 功放电路原理图
图9 信号冲击保护程序
铝带超高音扬声器振动膜为薄弱的铝膜,易被信号源突然输入和断开时的不稳定冲击损坏.此外,冲击表现出的刺耳爆破音会对行为感知产生干扰.为了保护超高音扬声器的同时消除干扰,设计了图8所示的信号冲击保护电路模块,主要由MCU主控模块、电压比较器模块、光耦控制模块以及时长设定交互外设等部分组成.
信号冲击保护程序的设计如图9所示,为了实现信号输入时对扬声器的保护,采用电压比较器电路监测信号源电压,通过计量来自信号源产生的外部中断数目,根据累计数是否达到阈值判断有无信号输入.当监测到有信号输入便延时几秒,继而控制光耦电路拉高(E/S)引脚,以使OPA548输出,开启定时器计时.该方案完成了信号源先输入后开启功放的过程,实现信号突然输入的冲击保护.对于信号断开时冲击的扬声器保护,首先利用时长设定交互外设设定已知超声发射时长,当计时到达设定时长前5秒便断开光耦电路,使得OPA548的(E/S)引脚被拉低以失能输出.该方案完成了功放先于信号源断开的过程,实现信号突然断开的冲击保护.
图10 系统超声收发时频域分析
在西北工业大学消声实验室内,将USB两路同步收发声卡的数字MEMS麦克风放置于距离超声发射音箱正前方1 m,超声发射音箱输出功率为1 W,对关键频点(20 kHz、30 kHz、40 kHz)分别测试两路超声收发信号.测试结果显示,每一路收发测试信号的时域和频域结果都与图10相似.随着超声信号频率的增加,对时域信号的重建结果逐渐变差,但频率值精准且主频率峰值尖锐,几乎无谐波干扰.因此,本平台能够有效收发20 kHz~40 kHz频率范围的超声信号.
为了评估平台的收发同步性,在消声室内将本平台组建单发单收系统,采用时域相关法设计测试试验[5].具体方法为:①循环发送设计的26 kHz~36 kHz的正弦扫频信号(扫频周期T为0.04 s),同时无阻塞地接收信号并利用先进先出队列(FIFO)存储实时数据;②利用快速卷积实时计算收发信号的相关序列;③实时提取相关序列峰值对应的横坐标采样点值.测试结果如图11所示,在连续收发100 min内除极少数的局部抖动外,未出现收发信号间延迟随时间的变化趋势,因此,本研究超声平台能够实现同步收发.
图11 超声信号收发同步性测试图
对超声发射音箱内的信号冲击保护机制的效果进行测试,控制平台音箱突然发射一段40 kHz超声并同时录制发送信号.在没有接入信号冲击保护电路的音箱时开始会产生极不稳定的信号,如图12(a)所示,而设置信号冲击电路的音箱会消除极不稳定的信号冲击,如图12(b)所示.
图12 信号冲击保护机制测试效果
为了解决目前行为感知研究中所使用声波收发平台存在的可用超声频段低、频带窄、单发单收以及收发不同步等问题,本研究设计了一套面向行为感知的超声两路同步收发平台.该平台主要包括USB两路同步收发声卡、超声发射音箱以及数字MEMS麦克风三部分.其中,作为核心部分的USB两路同步收发声卡硬件成本低,超声发射音箱能够低失真地发射超声且具备信号冲击保护机制.在使用过程中,该平台能够根据研究实际需求便捷地进行两路收发的自由组合,在20 kHz~40 kHz频段内能够任意自主设计超声信号,并且保持收发同步.综上,本平台能够支撑更多且更高精度的声波感知研究.