1. 引言
随着海洋开发和信息产业的发展,在民用领域和军事领域利用水声信道进行数据传输的需求都大为增加。在军事领域,水下潜艇与舰船之间、水下机器人之间需要搭建可靠的保密通信信道。在民用方面,海上科考、海洋环境监测、海洋资源探测以及海洋环境监测、海洋资源探测以及海洋灾害预防等领域 [1] [2] 需要水下传感器能够将采集到的信息快速准确地反馈给岸上测控平台。传统无线通信方式由于电磁波在水下传输过程中存在很大衰减而不适用,相比之下,声波在水中衰减较小,能够传输到更远的距离,因此利用声波进行通信效果更佳 [3]。但水声通信也面临着很多问题,由于声波在水中传播速度仅为1500 m/s左右,导致水声通信无法达到电磁波通信的速率水平,并且声波传输过程中的多径效应会造成严重的码间串扰,造成了通信质量的下降 [4]。海水中存在的自然噪声和人为噪声也会对声波信号造成干扰,影响通信质量。声波在水中传输的衰减受其频率影响,衰减幅度与频率的平方成正相关,这限制了载波频率只能在较低范围内,从而使可利用带宽十分有限 [5] [6] [7],进一步造成了水声通信速率的降低。研究高速率、远距离、抗干扰强的水声通信系统是国内外研究人员一直努力的方向。
本文提出一种基于STM32的水声通信系统设计方案,以STM32F407 ARM控制器为硬件核心,通过嵌入式程序实现对信号的FSK调制与解调。通过设计合适的带通滤波器以减小水下噪声对声波信号的干扰。由于声波在水下传播损失大,本文通过设计D类功率放大器,将系统输出功率放大至60 W,以此扩大通信范围,并通过增大发送码元时间间隔的方式减小声波传输过程中多径效应带来的影响。而码元发送间隔的增大会导致系统通信速率降低,本文提出一种基于莫尔斯码编码的通信协议通过减少数据位来提升通信速率。
2. 水声通信系统工作原理
2.1. 系统工作流程
系统运行时,首先根据上位机指令决定系统以发送机模式或接收机模式工作。发送机实现的功能为对待发送信号进行编码以及2-FSK调制,并将调制信号经功率放大后由水声换能探头向外发送。接收机利用水声换能探头对信号进行采集,采集到的信号中含有大量噪声,故需用带通滤波器滤除信号中高频和低频噪声,再由运算放大器对滤波之后的信号进行放大,最终由单片机对信号进行模–数转换、解调并将解码得到的信息发往上位机显示。发送机和接收机对信号进行处理的过程如图1所示:
2.2. 频移键控(FSK)调制原理
FSK调制是把载波的相位和振幅作为常量,频率作为变量,通过载波信号的频率变化来传递数字信息。FSK是比较早的一种应用于信息传输中的调制方式,具有抗衰减和抗噪声能力好,实现容易的特点,因此在低速数据传输中有非常广泛的应用 [5]。
最常见的是用两个频率的载波调制二进制“1”和“0”的双频FSK 系统,即2FSK。数字信号是“1”时,输出其中一种频率的正弦波信号,数字信号是“0”时,输出另一种频率的正弦波信号。2-FSK的数学模型可表示为:
(1)
其中
为调制信号,
为数字基带信号,其值为0或1,A为载波幅值,
、
为载波频率,
、
为载波相位。2-FSK信号调制示意图如图2所示:

Figure 2. Schematic diagram of 2-FSK modulation
图2. 2-FSK调制示意图
图中当基带信号为“1”时,系统输出为频率较高的正弦波,当基带信号为“0”时,系统输出为频率较低的正弦波,如此便实现了通过载波信号频率表示基带信号,即FSK调制。
2.3. 基于FFT的解调原理
由调制原理可知,调制信号中不同频率分量对应着不同的基带信号,因此得到调制信号的频谱特性即可还原出基带信号。由于系统接收到的信号为数字信号,为得到其频谱特性,首先需要对其进行离散傅里叶变换(DFT),DFT变换为:
(2)
式中
为采样信号,
为其离散傅里叶变换,N为采样点数。FFT是一种DFT的高效算法,其基本思想是把原始的N点序列,依次分解成一系列的短序列。充分利用DFT计算式中指数因子所具有的对称性质和周期性质,进而求出这些短序列相应的DFT并进行适当组合,达到删除重复计算,减少乘法运算和简化结构的目的。
假定待变换离散时间序列信号长度为
,将
按照奇偶分组
(3)
式(3)可变换为:
(4)
令
(5)
(6)
其中,k取
,从而,
(7)
由于A(k),B(k)都是N/2点的DFT,X(k)为N点的DFT,对于A(k)和B(k)还可进一步进行奇偶分组,直到最后的子序列为2点。2点DFT运算称为蝶形运算,而整个FFT就是由若干级迭代的蝶形运算组成,而且这种算法采用原位运算,故只需N个存储单元 [8]。
利用FFT技术对FSK信号的频谱特性进行分析,FFT运算结果的输出相当于一个带通滤波器的输出,只要在进行FFT运算时使FFT的频谱分辨率小于不同信号之间的频率间隔就能使信号在频谱上分离,根据最大谱线的位置,可以得到相应的频率从而达到解调信号的目的 [9]。
3. 水声通信系统硬件设计
系统硬件包含MCU模块、发送模块和接收模块三部分。发送模块由功率放大器和水声换能探头组成,接收模块由水声换能探头、带通滤波器和信号放大器组成。MCU模块选用正点原子公司STM32F407核心开发板,该模块芯片封装为STM32F407ZET6,具有1 MB的Flash存储和196 KB的RAM,且带有32位的单精度硬件FPU,具有DSP指令库,可直接调用指令对采集的数字信号进行快速的基4-FFT运算。由MCU模块I/O口输出的调制信号功率很小,无法驱动水声换能探头,且小功率信号在水中无法进行远距离传输,因此需要对信号进行功率放大。功率放大器主要分为两类,线性功率放大器和非线性功率放大器。线性功率放大器又分为A类、B类和AB类功率放大器,主要以三极管作为核心器件,优点是失真度较低,但同时效率也较低。非线性功率放大器分为D类、E类等,其优点是理论效率高,理论上效率可达90%以上 [10]。本系统选用基于TPA3118芯片设计的D类功率放大器,其电路原理图如图3所示:

Figure 3. TPA3118 Class D power amplifier circuit
图3. TPA3118 D类功率放大电路
水声换能探头选用福建大禹公司生产的水平无方向性柱形水声换能器DYW-35-G。
选用UAF42滤波芯片设计带通滤波器,滤除信号中频率高于35 kHz和频率低于28 kHz的噪声信号,并用LM358运放芯片设计同相比例放大电路对经过滤波的信号进行放大,信号放大倍数为100倍。图4,图5和图6分别为带通滤波器电路原理图,同相比例放大电路原理图和水声通信系统实物图。

Figure 4. UAF42 bandpass filter circuit
图4. UAF42带通滤波电路

Figure 5. LM358 operational amplifier circuit
图5. LM358运算放大电路

Figure 6. Physical map of underwater acoustic communication system
图6. 水声通信系统实物图
4. 水声通信系统软件设计
本文设计的水声通信系统软件主体分为数据发送和数据接收两部分,软件功能框图如图7所示:系统根据接收到上位机发送的指令进行工作模式的切换。系统进入发送模式的指令为“SEND”,系统进入接收模式的指令为“RECV”。

Figure 7. Overall block diagram of the software
图7. 软件整体框图
4.1. 发送端软件设计
在数据发送模式下,系统通过串口接收来自上位机的待发送数据,并将接收到的信息暂存于MCU存储单元中。系统通过串口接收到的数据由ASCII码表示,为了提升水下数据传输速率,本系统采用数字通信中的莫尔斯码对数据进行重新编码,并重新设计数据帧格式。在完成数据封装之后,对信号进行调制并输出。为了与选用的水声换能器适配,本系统将调制采用的载波从FSK常用的正弦波替换为PWM波,信号调制的过程在软件上即体现为根据数据帧中码元的数值调整输出PWM波的频率,PWM波的频率调节由定时器实现。分别选用频率为34 kHz、31 kHz的PWM波依次表示数字量“1”和数字量“0”。
系统通过串口接收到的数据格式为ASCII码数据位为8位。为了便于接收端处理信号,还需加上起始位和停止位,若采用ASCII码编码,在不加入校验位的情况下一帧数据长度为10位。为了提高通信效率,本系统引入莫尔斯码对数据重新进行编码,莫尔斯码对照表如表1所示:

Table 1. Morse code comparison table
表1. 莫尔斯码对照表
用莫尔斯码对字符进行编码,数据位最长为6位,对应数据帧长度为8位,数据为最短为1位,对应数据帧长度仅为3位。其中对字母进行编码时数据位不超过4位,相应的数据帧长度不超过6位,相比利用ASCII码进行编码时的10位,在数据传输时,传输速率能有较大提升。莫尔斯码以“点”和“划”为基本码元,分别读作“Di”和“Dah”。在编码过程中,用0表示点,1表示划,例如字母A的二进制ASCII码表示为01100001,对应的莫尔斯码表示为“Di Dah”,经过编码得到的二进制莫尔斯码则表示为01。
由于莫尔斯码长度不统一,且最长的为6位,为了编程上便于实现ASCII码向摩尔斯码的自动转换,现通过在将长度不足6位的字符的莫尔斯码统一扩展为6位,具体做法为在编码得到的二进制莫尔斯码后补四进制数3,将原来的不同位数二进制莫尔斯码改写成6位四进制莫尔斯码。例如:字母A对应的编码为长度为2位的二进制莫尔斯码01,经扩展后得到的6位四进制莫尔斯码表示为013333,字母B对应的编码为4位二进制莫尔斯码1000,经扩展后得到的6位四进制莫尔斯码为100033,如此便实现了字符长度的统一。再对得到的扩展莫尔斯码加上帧头和帧尾进行数据帧封装即可得到8位四进制的数据帧。数据帧示意图(以字母A为例)如图8所示:

Figure 8. Schematic diagram of data frame format
图8. 数据帧格式示意图
传输数据时每个码元持续时间为15 ms,求得通信速率为67 bit/s。
4.2. 接收端软件设计
在数据接收模式下,系统通过MCU内部ADC对硬件模块处理过的信号进行采集并对采集到的数字信号进行频谱分析,解调出调制在载波上的8位四进制莫尔斯码,之后将其解码为原始数据并通过串口发送至上位机显示。
由于FSK调制采用的载波信号频率最高为34 kHz,根据奈奎斯特采样定理,ADC的采样频率需大于68 kHz。本系统中ADC的采样频率由定时器控制,具体做法为:设定定时器计数值,当定时器产生溢出中断时,将ADC采集标志位置1,ADC进行一次采集,用于控制采样频率的定时器选用定时器3。为了将采样频率设定在70 kHz左右,对定时器3的时钟进行4分频,系统时钟频率为84 MHz,故定时器3时钟频率为21 MHz。当定时器计数上限设为294时,定时器每隔14 us触发一次溢出中断,如此,ADC的采样频率为71.4 kHz。
解调采用1024个点的基4快速傅里叶变换,经过FFT运算后再对运算结果复数求模得到幅值,可得到信号的幅频特性。调制信号为PWM波,经过FFT运算之后除了基波之外还有高次谐波,而只有基波对应的频率与载波频率相同且复数求模之后幅值最大值对应的频率为基波频率。因此找出幅值最大的频率分量并将此频率与数字量进行对应,如此便实现了信号的解调。
5. 水声通信上位机设计与水池测试
5.1. 上位机软件设计
为了实现本系统与PC之间的通信以及人机交互,现用LabView编写上位机软件,软件界面如图9所示。
上位机软件运行时,首先对水声通信发送机和接收机进行选择,之后点击接收键,即可从发送区发送数据,成功发送后能在接收区接收到发送的信息。该软件既可在同一台计算机上实现收发功能,也可运行在两台计算机上,实现计算机之间通信。
5.2. 水下测试
为了测得通信误码率,我们分别在实验室和室外水池对系统进行了测试。实验室内在长宽高分别为40 cm,27 cm,20 cm水箱内进行测试,室外测试环境如图10所示:图中两个红色圆圈所在位置为水声探头位置,间距为5 m,水深2 m。

Figure 10. Experimental environment diagram of outdoor pool
图10. 室外水池实验环境图
测试步骤为:在发送端发送26个英文字母、阿拉伯数字“!”、“.”以及“空格”,若接收到的字符不正确,则继续发送直至接收到正确字符。再将接收到的莫尔斯码数据帧与正确格式进行比对,求出误码率。重复上述操作求得多个误码率值取平均记为系统通信误码率。此处以在实验室中发送“USSTOECELAB908”为例进行展示,发送与接收情况如表2所示,室外水池中发送与接收数据对比见附件。

Table 2. Comparison table of sending and receiving data in laboratory environment
表2. 实验室环境下发送与接收数据比对表
误码率计算公式为:
(8)
多次试验后求得实验室环境下传输误码率为1.9%,在室外水池中测得平均传输误码率为7.6%。
6. 结语
本文围绕STM32F407微控制器搭建出一套小型模块化水声通信系统,通过嵌入式软件实现对信号的FSK调制与解调。系统中的TPA3118D类功率放大模块可增大声波信号在水下传输距离,基于UAF42设计的带通滤波器可实现对信号的选取,减小水下噪声对通信性能的影响。较大的码间间隔可有效减小多径效应带来的影响,并且基于莫尔斯码编码的通信协议可提升数据传输速率,对较大码间间隔带来的通信速率降低作出补偿。以上设计保证了本系统能在20 m范围内正常通信,后续将以提高系统通信速率与通信距离,并构建水下通信网络为研究重点,实现多点之间互相通信,努力为建设新时代海洋强国贡献自己的微薄之力!
附录
附件:室外水池中发送与接收数据比对表。
NOTES
*通讯作者。