Skip to content

Near-field communication based on ultrasonic waves 基于超声波的近场通信

License

Notifications You must be signed in to change notification settings

Jay-Chou118/Magical-conch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Magical-conch

Near-field communication based on ultrasonic waves 基于超声波的近场通信 音频频率传输工具,支持跨平台音频信号处理与传输

优化说明

本项目经过以下优化,显著提升了超声波通信的可靠性和性能:

1. 增强纠错能力

  • ECC纠错码优化: 将纠错字节从max(8, len/4)提升到max(12, len/3)
  • 效果: 在噪声环境下数据传输成功率显著提高

2. 降低信号检测阈值

  • 声音标记阈值: 从2.0f降低到1.5f
  • 效果: 提高信号检测灵敏度,更容易识别超声波信号

3. 增强信号强度

  • 音量设置: 从10提升到25
  • 效果: 提高信号传输距离和抗干扰能力

4. 优化超声波协议参数

  • 频率调整: 超声波协议起始频率从437调整到400
  • 效果: 更好的频率响应和兼容性

5. 优化采样率和帧大小

  • 默认采样率: 从48000Hz调整到44100Hz
  • 频谱历史: 从4增加到8
  • 播放缓冲区: 从16*1024减少到8*1024
  • 捕获缓冲区: 从1024减少到512
  • 效果: 降低延迟,提高实时性能

6. 改进信号检测逻辑

  • 容错机制: 信号检测从要求完全匹配改为允许2位错误
  • 效果: 在噪声环境下仍能正确检测信号

7. 默认使用超声波协议

  • 协议选择: 默认使用协议5(超声波Normal)
  • 效果: 专门针对超声波通信优化

支持平台

  • macOS (已测试)
  • Linux (Ubuntu/Debian)
  • Windows
  • Android (实验性)

依赖项

macOS

brew install sdl2

Linux

sudo apt install libsdl2-dev

Windows

choco install sdl2

使用方法

# 编译
mkdir build && cd build
cmake ..
make

# 运行
./magical-conch

参数说明

  • -cN: 选择捕获设备N
  • -pN: 选择播放设备N
  • -tN: 传输协议 (默认5 - 超声波Normal)
  • -lN: 固定载荷长度,N在[1, 64]范围内
  • -d: 使用直接序列扩频(DSS)技术 (默认启用)
  • -v: 打印生成的音调信息
  • -r: 仅接收模式,不发送数据
  • -s filename: 保存接收到的数据到文件

硬件限制与已知问题

⚠️ 超声波协议采样率限制

问题:Mac电脑的音频设备最高采样率为44.1kHz,无法支持超声波协议的正常工作。

原因分析

  1. 采样率不足导致严重失真

    • 超声波协议频率:20673 Hz(480 * 43.07 Hz)
    • Mac最高采样率:44.1 kHz
    • 每个周期只有 2.13 个采样点(44100 / 20673 ≈ 2.13)
  2. 奈奎斯特采样定理限制

    • 根据奈奎斯特采样定理,采样率至少要是信号频率的 2 倍才能准确重建信号
    • 44.1kHz 采样率对于 20kHz 超声波,仅达到理论最低要求
    • 实际应用中,需要 4-10 倍采样率才能获得高质量重建
  3. 高频信号对相位信息极其敏感

    • 超声波协议依赖精确的相位信息进行解码
    • 采样点不足会导致相位信息完全丢失
    • 即使信号幅度足够,解码器也无法提取正确的比特位

测试结果

  • 可听频段协议(t0-t2):完全正常工作,解码成功率 100%
  • 超声波协议(t3-t5):无法正常解码,即使使用自动增益归一化也无法解决

解决方案

  1. 使用专用硬件(推荐):

    • 使用支持高采样率的音频设备(96kHz+)
    • 例如:专业声卡、USB音频接口
  2. 使用可听频段协议(推荐):

    • 使用协议 t0(Normal)、t1(Fast)或 t2(Fastest)
    • 配合自动增益归一化功能,已经可以完美工作
    • 示例:./magical-conch -t0 -s waveform.bin -l5
  3. 提高采样率(需要硬件支持):

    • 修改代码中的采样率参数到 96kHz 或 192kHz
    • 需要音频设备支持相应的采样率

自动增益归一化功能

为了解决信号幅度过低的问题,项目实现了自动增益归一化功能:

  • 在保存波形文件前,自动扫描并放大信号到最大音量
  • 目标峰值:25000(约 76% 音量)
  • 完全解决了可听频段协议的信号幅度问题
  • 但无法解决超声波协议的采样率限制问题

技术细节

本项目使用以下技术实现超声波通信:

  • FFT频谱分析: 实时分析音频频谱
  • Reed-Solomon纠错码: 提供强大的错误纠正能力
  • DSS扩频技术: 直接序列扩频提高抗干扰能力
  • 多协议支持: 支持可听频段和超声波频段通信
  • 自动增益归一化: 自动放大信号幅度,提高解码成功率

About

Near-field communication based on ultrasonic waves 基于超声波的近场通信

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published