这是最近做的一个很有意思的案件,是一个玩具上用的蓝牙操控器。
条件限定为:一个MONO的蓝牙音频模块,把它做成蓝牙遥控器,而且,操控的时分还要播映主机走蓝牙过来的声响。
一起,这个蓝牙模块没有数据片能够走,直接输出载着直流的音频差分信号。
评论的成果便是,在要播映的声响里混音进人耳听不到的频率部分,然后在蓝牙音频模块输出端把数据解调出来。
解调部分
中心部分便是LM567的解调端,中心频率设定在人耳根本听不到的18.5Khz
中心的部分是腔调检测,用了一款NS家很老的专门做腔调检测的LM567。
其原理便是使用本地RC震动产生一个频率,与输入频率进行鉴频,8脚是专门做鉴频输出用。
f0的公式%&&&&&%用uF,电阻用KOmh,频率为kHz
算出来18.5Khz下
Cx=6.8nF
Rx=7.5K
但实践调试的时分RX主张用10K的微调电阻,因为其他器材或许会有差错
带宽跟C2和输入信号的有效值有关。
Vi是直接取蓝牙输出的还没过功放的小信号,振幅很小,所以实践上电路的带宽会很小,这是有利于做频率辨识的,以防谐波以及声响文件里搀杂的各种频率信号的搅扰。
这儿C2用的0.1uF,C3用的10uF。丈量出来带宽在500~1kHz左右。
电源用5V,跟后端解码的单片机电压共同。
有18.5Khz输入的时分,8脚输出低电平。
焊好的板子如下~
声响部分
首先用一个叫做SweepGen的软件来做音频产生,用Total Recorder的虚拟声卡映射把生成的声响捕捉下来。
留意SweepGen和Total Recoder默许的电平缓音量不是0db,记住调理到0db的原始声响状况。
在SweepGen里边记住把波形设置成正弦,因为18.5Khz的方波的谐波能听出来。
修改声响妥妥的就得靠Adobe Audition了,cool edit是它的前身。其实声响出产也能够用它,仅仅我没找到在哪生成正弦波形。
在Audition里边能够看到,编排的声响频谱落点很明显。
解调部分
因为播映器在播映的时分或许会淡出淡入,以及蓝牙模块刚开始播映的时分会敞开内部codec所以正式的编码数据前要加一段静音。
通过测验,18.5Khz的信号要保持50ms以上,LM567的输出低电平才跟着18.5Khz的持续时间挨近,所以一帧数据长度暂时设置为50ms。
因为无输入的时分解调部分输出为高,所以同步头用一个低电平来做下降沿触发,在触发MCU这边的中断后对IO进行采样,1ms采样一次,50ms为一个帧,算上采样内履行延时,一帧共采样32次,超越16次为低就认为是0。
MCU用的是8051核的新塘N79E8132,2块钱一颗的单片机
采样的代码段:
for (cntbit=0;cntbit<8;cntbit++)
{
sample=0;
for(samcnt=0;samcnt<32;samcnt++)
{
sample=sample+(P0&0X1); //
Delay1ms(1); //read process
}//
//printf(“sample%d = %d “,cntbit,sample);
if(sample <16) //HIGH/LOW LEVEL SET
{
state_t=state_t | (0x1<
}
}
这儿的delay是新塘的bsp包里用定时器标志位来做的,而且用一个IO回转测过履行延时才得出32次循环50ms的成果。
RC的频率是22M。
同步头设定为0101,后边四位作为指令位
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/5g/255476.html