Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/ggerganov/ggwave-arduino

Mirror of ggwave used in the Arduino Library Manager
https://github.com/ggerganov/ggwave-arduino

arduino data-over-sound esp32 microcontroller

Last synced: 21 days ago
JSON representation

Mirror of ggwave used in the Arduino Library Manager

Awesome Lists containing this project

README

        

# ggwave-arduino

Tiny data-over-sound library for microcontrollers

### [Main repo: ggwave](https://github.com/ggerganov/ggwave)

Tested microcontrollers:
- [Arduino Nano RP2040 Connect](https://docs.arduino.cc/hardware/nano-rp2040-connect)
- [NodeMCU-32S, ESP32](https://www.waveshare.com/nodemcu-32s.htm)
- [Teensy 4.0 board](https://www.pjrc.com/store/teensy40.html)
- [Arduino Uno Rev3](https://store-usa.arduino.cc/products/arduino-uno-rev3) (Tx only)

The easiest way to send and receive audio data is via the [Waver](https://github.com/ggerganov/ggwave/tree/master/examples/waver) application. It is freely available for Android, iOS and can also run directly in the browser: https://waver.ggerganov.com

Download on the App Store
Get it on Google Play

The following settings will allow you to test the provided examples without having to modify any of the parameters in the sketches:


Talking buttons

Talking buttons

Talking buttons


Img. Using the Waver app. Left: settings for fixed-length transmission. Center: Enable DSS option. Right: Transmit messages

### Short demonstration of ggwave

### Using with Arduino IDE

Install the `ggwave` library via `Tools` -> `Manage Libraries` and select one of the available examples from `File` -> `Examples` -> `ggwave`:

image

See the [examples](examples) folder for sample circuits. Feel free to report any problems or feedback by opening an issue in this repo.

### ggwave-cli

Another way to communicate with the microcontrollers is via the [ggwave-cli](https://github.com/ggerganov/ggwave/tree/master/examples/ggwave-cli) command line tool, available in the main [ggwave](https://github.com/ggerganov/ggwave) repository. For example, run the following command to transmit a 16-byte `fixed-length` message, using Direct Sequence Spread (DSS) with `[MT] Fastest` protocol:

```bash
$ ./bin/ggwave-cli -l16 -s -t11
```

![image](https://user-images.githubusercontent.com/1991296/177856175-d43fc9aa-1a10-4270-80e4-765a361b30d7.png)

When sending and receiving messages, make sure that both the sender and the receiver have the `fixed-length` option enabled and that the number of bytes for `payloadLength` is the same. Also note that microcontrollers currently support only the mono-tone `[MT]` and dual-tone `[DT]` transmission protocols.