https://github.com/tinygo-org/wireless
Wireless protocols for TinyGo radio devices.
https://github.com/tinygo-org/wireless
Last synced: 5 months ago
JSON representation
Wireless protocols for TinyGo radio devices.
- Host: GitHub
- URL: https://github.com/tinygo-org/wireless
- Owner: tinygo-org
- License: other
- Created: 2025-12-07T11:02:25.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2026-01-21T15:32:03.000Z (5 months ago)
- Last Synced: 2026-01-22T03:31:53.634Z (5 months ago)
- Language: Go
- Homepage:
- Size: 111 KB
- Stars: 1
- Watchers: 0
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Roadmap: ROADMAP.md
Awesome Lists containing this project
README
# wireless
Wireless communication protocol implementations to be used by TinyGo supported radios.
For example, this program sends WSPR packet data:
```go
package main
import (
"time"
"tinygo.org/x/wireless/wspr"
)
func main() {
println("Starting WSPR communication example...")
time.Sleep(2 * time.Second)
// init the modem
println("WSPR modem initialized.")
radio := initRadio()
frequency := radio.GetBaseFrequency()
println("Transmitting on frequency", frequency, "Hz")
data := make([]byte, 256)
// Example WSPR packet data
// K1ABC FN42 37
// See https://en.wikipedia.org/wiki/WSPR_(amateur_radio_software)
msg, err := wspr.NewMessage("K1ABC", "FN42", 37)
if err != nil {
println("Error creating WSPR message:", err.Error())
return
}
n, err := msg.WriteSymbols(data)
if err != nil {
println("error writing WSPR message")
return
}
// transmit some data
for range 50 {
println("Transmitting WSPR message with", n, "symbols")
if err := radio.WriteSymbols(data[:n]); err != nil {
println("error transmitting WSPR message:", err.Error())
return
}
println("Waiting for next transmission...")
time.Sleep(15 * time.Second)
}
time.Sleep(2 * time.Second)
// put the radio in standby
println("Putting radio in standby mode...")
radio.Standby()
time.Sleep(1 * time.Second)
println("WSPR modem example completed.")
radio.Close()
}
```
## Supported Protocols
### AFSK
Audio Frequency-Shift Keying
https://notblackmagic.com/bitsnpieces/afsk/
### FSK4
Frequency-shift keying (FSK4)
https://en.wikipedia.org/wiki/Frequency-shift_keying
### LoRa
Long Range (LoRa)
https://en.wikipedia.org/wiki/LoRa
### LoRaWAN
Long Range Wide Area Networking (LoRaWAN)
https://en.wikipedia.org/wiki/LoRa#LoRaWAN
### Morse
Morse code
https://en.wikipedia.org/wiki/Morse_code#Amateur_radio
### U4B
Telemetry protocol on Weak Signal Propagation Reporter (WSPR)
https://qrp-labs.com/u4b/u4bdecoding.html
### WSPR
Weak Signal Propagation Reporter (WSPR)
https://en.wikipedia.org/wiki/WSPR_(amateur_radio_software)
## Supported Radios
- si5351
- SX126X