基于声波的无线计算器

基于matlab的声波计算器

注该篇文章只介绍方法,代码需仔细斟酌反复调试根据不同电脑不同耳机因此代码不同参数不同,故不放上来了
此文章是做声波计算器实验得到的经验与感悟。

在一台电脑上输入计算式,通过耳机传送到另一台电脑进行计算后将结果返回到发送电脑。实验中上位机输入计算式,通过信源编码、(信道编码)和 2FSK 调制后通过耳麦发送声波,下位机通过麦克风接收声波信号。接收端收到声波信号后,再进行解码以及解调后,将算式计算出结果,将结果通过上位机同样的方式进行编码和调制传送到上位机后,上位机显示计算结果。
具体流程图如下:在这里插入图片描述

重传监听开始信号

为防止上位机和下位机直接发生干扰,因此采用持续监听以及重传机制,并设置开始信号以防止噪音频率的干扰。
使用audiorecorder 以采样特定频率 进行采样,并且录音。设置上位机以及下位机接收的开始信号频率(最好二者开始信号频率不同防止互相误接收错误信号)。
设置上位机发送的声波信号的开始信号频率,下位机将开始信号和声音信号一同通过带通滤波器,设置带通滤波器中心频率,可以用多种方法检测开始信号,说明下位机接收到了声波信号并计算结果。利用 sound 函数发送声波。
带通滤波器可以采用matlab自带的函数filter。

编码

如果不是为了容错率高可以不进行信道编码。
首先可以进行信源编码,信源编码的程序简单,可以采用多种编码方式,如可以采用多种编码,即可以是简单的0编成0000,1编成0001,加减乘除依次递增的编码顺序。也可以尝试霍夫曼编码等等一系列的信源编码方式。
信道编码可以根据环境因素的不同或者电脑以及耳机麦克风的不同用不同的编码方式,常见的有(7,4)分组码等等。信道编码的程序稍微有一点复杂,编写程序时可以创建不同的函数.h文件再进行调用会方便许多。

调制解调

调制解调的过程有很大的思考空间,调制方式可以采用ASK、FSK、PSK等,考虑到ASK的抗噪声性能差因此不采用。如果使用2FSK便要考虑使用相干解调还是包络检波,二者的差距在于相干解调要进行载波同步,否则系统的误码率会大大增加。
而包络检波就要用到希尔伯特变换Hilbert得到信号包络,但包络检波必须进行位同步,位同步的方式有很多,可以在信号前加巴克码,在收端检测巴克码以达到同步的目的。同样为了更加精确也可以在结尾同样设置巴克码。(不一定是巴克码也可以的具有特点方便检测的码型)。

结束

为了使得用户界面更加完整丰富可以设置GUI界面,将函数封装到按钮等器件上,更加便于操作。

无线计算器的编写过程会使得我们更加清晰整个通信系统,了解每个通信系统环节的作用,非常有益处!在编写代码以及测试的过程中更加能使编程能力得到锻炼,只有理论和实践相结合才会得到提高。

猜你喜欢

转载自blog.csdn.net/weixin_45016866/article/details/115033572