ggwave — передача данных через звук — это просто

16 Apr, 2026
7,722
🔱 460
👥 71

Когда Bluetooth недостаточно

Представьте ситуацию: нужно передать данные между устройствами без интернета и Bluetooth. Например, настроить IoT-устройство в «глухом» помещении или поделиться контактами на конференции с плохим Wi-Fi. Именно для таких случаев создана библиотека ggwave — миниатюрный акустический модем с открытым исходным кодом.

Демонстрация работы ggwave

Что это за зверь?

ggwave — это крошечная библиотека на C++ для передачи небольших объемов данных (8-16 байт/сек) через звук. По сути, она превращает ваши динамики и микрофоны в средство связи, используя технологию частотной модуляции (FSK).

Основные преимущества:

  • Кросс-платформенность — работает на Linux, Windows, macOS, ESP32, Arduino и даже в браузере через WebAssembly
  • Гибкость — можно использовать любую аудиосистему (ALSA, PulseAudio, Web Audio API и др.)
  • Простота интеграции — доступны binding-и для Python, Node.js, Java, Kotlin
  • Надежность — Reed-Solomon коды коррекции ошибок

Как это работает?

Принцип действия ggwave напоминает старые dial-up модемы, только куда компактнее:

Реклама
  1. Кодирование:

    • Данные разбиваются на 4-битные блоки
    • Каждый блок преобразуется в звуковую частоту (в диапазоне 1.8-15 кГц)
    • Добавляются корректирующие коды
  2. Передача:

    • Сигнал воспроизводится через динамик
    • Может работать как в слышимом диапазоне, так и ультразвуке
  3. Прием:

    • Микрофон улавливает сигнал
    • Быстрое преобразование Фурье выделяет частоты
    • Частоты декодируются обратно в данные

Где применить?

1. IoT без головной боли

Вот пример отправки команд на Arduino через звук:

import ggwave
gg = ggwave.GGWave()

# Отправка команды на устройство
gg.send("LED_ON", protocolId=1)  # protocolId определяет параметры передачи

Готовые примеры для популярных плат:

2. Обмен данными без интернета

Проект wave-share использует ggwave для передачи файлов между устройствами через звук — идеально для ситуаций без сетевой инфраструктуры.

3. Быстрая настройка устройств

С помощью звуковых «QR-кодов» можно передавать:

  • Wi-Fi credentials
  • Конфигурационные параметры
  • Ключи шифрования

Попробуйте сами

Для быстрого тестирования есть несколько вариантов:

  1. Мобильные приложения:

  2. Веб-демо: ggwave.js

  3. Командная строка (после установки библиотеки):

    # Отправить сообщение
    echo "Hello" | ggwave-cli -p 1 -o hello.wav
    
    # Принять сообщение
    ggwave-cli -i hello.wav
    

Технические детали

  • Протокол: Мультичастотная FSK модуляция
  • Диапазон частот: 1.875-6.562 кГц (стандарт), 15-19.5 кГц (ультразвук)
  • Коррекция ошибок: Reed-Solomon (до 25% ошибок)
  • Задержка: ~100-200 мс

Под капотом

Библиотека построена вокруг трех компонентов:

  1. Модулятор — преобразует данные в звуковые частоты
  2. Демодулятор — анализирует спектр и восстанавливает данные
  3. Интерфейсы — адаптеры для разных платформ и языков

Архитектура сознательно сделана минималистичной — вы можете использовать любую аудиосистему, реализовав всего два callback-а: для отправки и приема аудиосэмплов.

Когда ggwave особенно хорош?

  • Работа с air-gapped системами
  • Быстрый обмен небольшими данными (до 64 байт)
  • Образовательные проекты (демонстрация принципов цифровой связи)
  • IoT сценарии без радиомодулей

Ограничения

  • Низкая скорость передачи (не для потокового видео!)
  • Чувствительность к фоновому шуму
  • Ограниченная дальность (до 5-10 метров в тихих помещениях)

ggwave — это элегантное решение для нишевых, но важных задач. Хотя технология не заменит Wi-Fi или Bluetooth, она идеально подходит для:

  • Разработчиков IoT решений
  • Создателей образовательных проектов
  • Энтузиастов нестандартных способов связи

Попробуйте демо-версию прямо сейчас — возможно, это именно то, чего не хватало в вашем проекте!

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.