Repolode
ggerganov

ggerganov/ggwave

Uma pequena biblioteca C++ para enviar pequenas quantidades de dados entre dispositivos por som, com suporte a Python, JavaScript e microcontroladores.

Estrelas
7,906
Forks
479
Issues abertas
65
Último commit
há 6 meses

O que é?

ggwave permite que dispositivos troquem pequenas quantidades de dados por som, o que é útil quando eles não podem usar uma conexão de rede. A biblioteca usa um esquema de modulação FSK multifrequência com correção de erros Reed-Solomon e pode transmitir sinais audíveis e ultrassônicos. A largura de banda informada é de aproximadamente 8 a 16 bytes por segundo, dependendo dos parâmetros do protocolo.

A biblioteca apenas gera e analisa formas de onda brutas. Seu próprio backend de áudio, como PulseAudio, ALSA ou Web Audio, cuida da reprodução e da captura por meio de callbacks para enfileirar e desenfileirar amostras. Há bindings e pacotes para Python, Node.js e Swift, e os exemplos incluem código para ESP32, Arduino e Raspberry Pi Pico.

O projeto também inclui o app Waver para iOS, Android, Linux e macOS, além de demonstrações no navegador para testar transmissões.

Recursos principais

  • 01Transmite pequenos payloads de dados por som audível ou ultrassônico.
  • 02Usa modulação FSK com correção de erros Reed-Solomon.
  • 03Funciona com qualquer backend de áudio por meio de callbacks para enfileirar amostras.
  • 04Oferece bindings para Python, Node.js e Swift.
  • 05Inclui exemplos para ESP32, Arduino e Raspberry Pi Pico.

Casos de uso

  • Compartilhar uma mensagem curta ou um código de pareamento entre dispositivos próximos, sem usar uma rede.
  • Enviar comandos de um PC ou celular para microcontroladores com microfone ou alto-falante.
  • Criar recursos de pareamento de dispositivos ou troca de contatos offline.
  • Prototipar protocolos de transmissão de dados por som para projetos de IoT.

Início rápido

  1. 1

    Instale o pacote Python

    pip install ggwave
  2. 2

    Ou compile a biblioteca C++ e a CLI com CMake

    git clone https://github.com/ggerganov/ggwave --recursive && cd ggwave && mkdir build && cd build && cmake .. && make
  3. 3

    Execute a ferramenta de linha de comando

    ./bin/ggwave-cli

Antes de usar

  • A taxa de transferência é muito baixa, cerca de 8 a 16 bytes por segundo.
  • Para compilar os exemplos baseados em SDL, é necessário instalar o SDL2 separadamente.

Tópicos

Perguntas frequentes

O que é ggwave?
Uma pequena biblioteca C++ para enviar pequenas quantidades de dados entre dispositivos por som, com suporte a Python, JavaScript e microcontroladores. ggwave permite que dispositivos troquem pequenas quantidades de dados por som, o que é útil quando eles não podem usar uma conexão de rede. A biblioteca usa um esquema de modulação FSK multifrequência com correção de erros Reed-Solomon e pode transmitir sinais audíveis e ultrassônicos. A largura de banda informada é de aproximadamente 8 a 16 bytes por segundo, dependendo dos parâmetros do protocolo.
ggwave é gratuito? Qual é a licença?
ggwave é open source sob a licença MIT. Confira os termos da licença antes de usá-lo em produtos comerciais.
ggwave ainda é mantido?
Sem commits há mais de 6 meses. O último commit de ggwave foi em 16 de abr. de 2026.
Para que posso usar ggwave?
Compartilhar uma mensagem curta ou um código de pareamento entre dispositivos próximos, sem usar uma rede. Enviar comandos de um PC ou celular para microcontroladores com microfone ou alto-falante. Criar recursos de pareamento de dispositivos ou troca de contatos offline. Prototipar protocolos de transmissão de dados por som para projetos de IoT.
Como instalar ggwave?
Instale o pacote Python: pip install ggwave Ou compile a biblioteca C++ e a CLI com CMake: git clone https://github.com/ggerganov/ggwave --recursive && cd ggwave && mkdir build && cd build && cmake .. && make Execute a ferramenta de linha de comando: ./bin/ggwave-cli
Onde consigo ggwave?
O código-fonte e as instruções de instalação estão no GitHub: https://github.com/ggerganov/ggwave

Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.

Projetos relacionados