ggwave
ggwave
3/5
🧩 软硬件结合
已发布
项目简介
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、纠错编码、频谱分析)。