ggwave ggwave

3/5 🧩 软硬件结合 已发布
ggerganov 1848 Stars 未知 BOM 完整度: 0/5 教程完整度: 0/5
ggwave

项目简介

Tiny data-over-sound library


ggwave 是一个轻量级的“数据通过声音传输”开源库,由开发者 ggerganov 创建,旨在通过音频信号在隔离设备之间传输少量数据。其核心功能是利用扬声器和麦克风,将数字信息编码为人类可听或超声波频段的声波,实现无需网络、蓝牙或 Wi-Fi 的点对点通信。项目采用基于多频移键控(FSK)的调制解调算法,将数据分割为 4 位块,并通过 6 个音调在 4.5kHz 范围内传输,带宽速率约为 8-16 字节/秒,同时集成纠错码(ECC)以提升解调鲁棒性。

标签

项目特点

**轻量级数据通过声音通信**:无需网络或蓝牙,仅通过扬声器和麦克风传输数据。
**多频FSK调制**:使用6个音调同时传输3字节数据,频率范围4.5kHz,支持可听声和超声波模式。
**纠错编码**:集成 Reed-Solomon 错误纠正码,提高传输可靠性。
**跨平台支持**:提供 C/C++ 核心库,并支持 Python、Node.js、iOS、WebAssembly、嵌入式平台(ESP32、Arduino、RP2040)等。
**丰富的示例应用**:包括命令行工具、GUI 应用、Web 演示、文件传输、物联网接收器等。
**开源免费**:采用 MIT 许可证,可自由集成到商业和非商业项目中。

技术规格

调制方式 多频移键控(FSK)
带宽速率 8-16 字节/秒(取决于协议参数)
频率范围 可听声:1875-6375 Hz;超声波:15000-19687.5 Hz
频率间隔 46.875 Hz
纠错编码 Reed-Solomon
传输方式 6个音调同时传输3字节数据(4-bit 分块)
支持平台 Linux, macOS, Windows, iOS, Android, Web, ESP32, Arduino, RP2040
编程语言接口 C/C++, Python, Node.js, WebAssembly, Objective-C, Java, Kotlin

项目资源

物料清单 (BOM)

物料名称 数量 参考价格 备注
音频设备(扬声器/麦克风) 1 用于发送和接收声音数据
开发环境(CMake, GCC/Clang) 1 用于编译 C/C++ 代码
SDL2 库 1 用于 SDL 示例(如 ggwave-cli, waver)
ESP32 开发板 1 用于物联网示例(esp32-rx)
Arduino 开发板 1 用于 Arduino 示例(arduino-rx, arduino-tx)
Raspberry Pi Pico 1 用于 RP2040 示例(rp2040-rx)

能力画像

⚪ 记忆与知识检索: 1/5
🔵 逻辑推演: 3/5
⚪ 表达与交流: 1/5
⚪ 感知与观察: 2/5
⚪ 数理与计算: 3/5
⚪ 动手与操作: 2/5
⚪ 狂热与坚持: 2/5
⚪ 创造与创新: 3/5

视频

所需技能

🔧 **动手能力**:能够设置音频设备(扬声器/麦克风),编译和运行示例程序,可选地连接和编程微控制器(ESP32、Arduino、RP2040)。 💻 **编程能力**:需要 C/C++ 基础以编译和集成库;Python 或 JavaScript 知识用于使用相应接口;了解 CMake 构建系统。 ⚡ **电子电路**:对于物联网示例,需要基本的微控制器编程和电路连接知识(如 ESP32、Arduino)。

适用场景

**无网络环境下的设备间通信**:在无法使用 Wi-Fi 或蓝牙的场景下,通过声音传输小量数据(如配置文件、密钥、短消息)。
**物联网设备配置**:通过声音将网络凭证或配置信息发送到无屏幕的 IoT 设备(如 ESP32、Arduino)。
**音频二维码**:将文本或 URL 编码为声音,通过扬声器广播,附近设备用麦克风接收解码。
**设备配对与联系人交换**:在近距离内交换公钥、联系人信息等,无需网络连接。
**教育演示**:用于教学演示数字通信原理(FSK、纠错编码、频谱分析)。