ggwave ggwave

⭐⭐⭐☆☆ (3/5) 🧩 软硬件结合 已发布
ggerganov 1848 Stars 未知 BOM 完整度: /5 教程完整度: /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、纠错编码、频谱分析)。