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 许可证,可自由集成到商业和非商业项目中。
技术规格
| 调制方式 | |
|---|---|
| 带宽速率 | |
| 频率范围 | |
| 频率间隔 | |
| 纠错编码 | |
| 传输方式 | |
| 支持平台 | |
| 编程语言接口 |
项目资源
搜索资源
物料清单 (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) |
所需工具
| 工具 | 用途 | 是否必需 |
|---|---|---|
| 音频设备(扬声器/麦克风) | 播放和录制声音数据 | ✅ 是 |
| CMake | 构建 C/C++ 项目 | ▢ 推荐 |
| C/C++ 编译器(GCC/Clang/MSVC) | 编译核心库和示例 | ▢ 推荐 |
| SDL2 库 | 用于 SDL 示例的音频和图形 | ▢ 推荐 |
| Python 3 | 运行 Python 示例和包 | ▢ 推荐 |
| Node.js | 运行 JavaScript 示例 | ▢ 推荐 |
| Emscripten | 编译 WebAssembly 版本 | ▢ 推荐 |
能力画像
记忆与知识检索
1/5
逻辑推演
3/5
表达与交流
1/5
感知与观察
2/5
数理与计算
3/5
动手与操作
2/5
狂热与坚持
2/5
创造与创新
3/5
项目图库
视频
S2YdGefZiy4
Zcgf77T71QM
aj_GLBtU3Vw
161401690-013023ba-1d21-4fb7-8d7f-9953f51c1e5b.mp4
166411509-5e1b9bcb-3655-40b1-9dc3-9bec72889dcf.mp4
168469004-aeb9b9fe-cf81-4db7-b602-62e4ae659341.mp4
所需技能
🔧 **动手能力**:能够设置音频设备(扬声器/麦克风),编译和运行示例程序,可选地连接和编程微控制器(ESP32、Arduino、RP2040)。
💻 **编程能力**:需要 C/C++ 基础以编译和集成库;Python 或 JavaScript 知识用于使用相应接口;了解 CMake 构建系统。
⚡ **电子电路**:对于物联网示例,需要基本的微控制器编程和电路连接知识(如 ESP32、Arduino)。
适用场景
**无网络环境下的设备间通信**:在无法使用 Wi-Fi 或蓝牙的场景下,通过声音传输小量数据(如配置文件、密钥、短消息)。
**物联网设备配置**:通过声音将网络凭证或配置信息发送到无屏幕的 IoT 设备(如 ESP32、Arduino)。
**音频二维码**:将文本或 URL 编码为声音,通过扬声器广播,附近设备用麦克风接收解码。
**设备配对与联系人交换**:在近距离内交换公钥、联系人信息等,无需网络连接。
**教育演示**:用于教学演示数字通信原理(FSK、纠错编码、频谱分析)。