warning:贴主是网安的,通信的东西只了解一些,更不懂硬件。接触这个是帮别人看的。翻译有错误请见谅。
原博客链接:Low-cost DIY underwater modem using COTS components and Unet audio | Unet Blog
概述:
调制解调器有三个主要功能:
1. 将用户提供的数据转换为信号并传输给接收方。
2. 解码接收方收到的信号,以恢复原始数据。
3. 配置各种参数以获得最佳的通信性能。
用户可以通过 Unet audio 提供的多种接口(如网页接口、Shell、或各种编程语言的 API,包括 Java、Groovy、Python、C、Julia、JavaScript 等)传递消息。这些接口同样用于配置通信参数,以在不同环境中获得最佳性能。
注意:UnetStack 指的是用于扩展水下网络的技术集合,Unet audio 是其中的一个组成部分。想要深入了解的用户可以参考 Unet 手册。
用户提供的数据会在 Unet audio 中被转换为通带信号。这包括运输层和网络层处理(如果需要),数据分片与重组、前向纠错(FEC)、调制与解调,具体取决于使用的通信方案。通带信号(数字)经由声卡转换为模拟信号,经过功率放大器后,通过换能器/水下扬声器传输。在接收端,水下麦克风接收信号并通过声卡转换为数字信号,再由 Unet audio 进行处理和解码,解码成功后将数据返回给用户。
传输链路:
将声卡的扬声器输出(可以是独立声卡或连接到单板计算机的 USB 声卡)连接至功放模块的输入端。然后,将功放的输出连接到水下扬声器。功放的供电方式取决于具体型号,可以通过树莓派的 USB 输出供电,或者使用 12V 电池。
接收链路:
在接收端,将水下麦克风直接连接到单板计算机的声卡麦克风输入端。
硬件选择:
数字硬件
数字硬件是 SDOAM 中最重要的组件之一。我们选择了 Raspberry Pi 3b+ 作为运行 Unet audio 的数字硬件,因其广泛的使用、低成本、易于获取及社区支持。这可以用任何运行 Linux 的 arm 处理器单板计算机(SBC)替代。Raspberry Pi 通过 USB 声卡进行数据采集。
注意: 内置音频输出在设置过程中默认被禁用,因此未使用。
树莓派4b
usb声卡
传输链路
下一步是选择功放和换能器/水下扬声器。为了降低成本,我们选用了 JH001 作为发射端的水下扬声器。
JH001水下扬声器
标准的 TDA 系列(如 TDA2030)单声道功放基本可以满足要求。我们选择了 TDA2030A 作为 DIY 方案中的音频功放,用户也可以根据自己的需求选择合适的功放。
功率放大器
接收链路:
我们使用了简单的电容式麦克风,通过家庭材料进行防水处理,并将其连接到声卡以接收信号。
防水麦克风所用的材料包括:
- 椅子垫圈:作为麦克风的底座,需选择合适大小。
- 保鲜膜:用于防水麦克风前端,越薄越好。
- 热熔胶枪及胶棒:用于防水处理。
- 3.5mm 单声道音频插头:连接声卡,若找不到单声道插头,可使用标准立体声插头。
- 导线:用于将麦克风连接到声卡。
电子麦克风
用到的各种防水材料
防水处理:
将电容麦克风的一端连接到壳体,作为接地端,连接到音频插头的地线。另一端连接到音频插头的输出端。选择适合麦克风的椅子垫圈,确保紧密包裹。在垫圈闭合的一端打一个小孔,通过孔插入导线,并用热熔胶密封,然后将麦克风推入,确保黑色振膜稍微突出。最后,用保鲜膜包裹麦克风前端,确保没有气隙,以免影响性能。
麦克风引脚排列
译者注:
电容麦克风通常有两个引脚:一引脚为地线,另一引脚为输出信号。将地线连接到音频插头的地线,输出信号连接到音频插头的其他连接端(单声道时连接到一个端口,立体声时连接到左声道或两个声道)。这样的接线可以确保麦克风正确地与声卡配合使用。
接线方式
成品
材料清单:
项目 | 数量 |
---|---|
Raspberry Pi | 1 |
Raspberry Pi USB 声卡 | 1 |
功率放大器 | 1 |
水下扬声器 | 1 |
电容麦克风 | 1 |
3.5mm 音频插头 | 2 |
椅子垫圈、热熔胶枪、胶棒、保鲜膜 | 1 |
总计 |