Files
lora/examples/barebones/barebones.go
T
2023-05-25 15:15:48 -03:00

82 lines
1.7 KiB
Go

package main
import (
"machine"
"time"
"github.com/soypat/lora"
"github.com/soypat/lora/sx127x"
)
const (
pinCS0 = machine.GPIO27
pinCS1 = machine.GPIO28
pinRST0 = machine.GPIO29
pinRST1 = machine.GPIO29
pinMOSI = machine.GPIO3
pinMISO = machine.GPIO4
pinSCK = machine.GPIO6
pinDIO0 = machine.GPIO7
)
var (
dev0, dev1 *sx127x.DeviceLoRaBare
cfg lora.Config
)
func main() {
time.Sleep(1500 * time.Millisecond)
println("program start")
var err error
setup()
defer println("program end")
packet := []byte("hello LoRa")
go func() {
var last bool
for {
time.Sleep(time.Millisecond * 10)
got := pinDIO0.Get()
if got != last {
println("DIO0 switch: ", got)
last = got
}
}
}()
for {
err = dev0.Configure(cfg)
for err == nil { // Tx Loop
println("transmitting packet")
err = dev0.Send(packet)
time.Sleep(10 * time.Second)
dev0.HandleInterrupt()
}
if err != nil {
println("got error: ", err.Error())
}
time.Sleep(time.Second)
}
}
func setup() {
var bus = machine.SPI0
err := bus.Configure(machine.SPIConfig{
Frequency: 10_000,
SCK: pinSCK,
SDO: pinMOSI,
SDI: pinMISO,
})
if err != nil {
panic(err.Error())
}
pinCS0.Configure(machine.PinConfig{Mode: machine.PinOutput})
pinCS1.Configure(machine.PinConfig{Mode: machine.PinOutput})
pinRST0.Configure(machine.PinConfig{Mode: machine.PinOutput})
pinRST1.Configure(machine.PinConfig{Mode: machine.PinOutput})
dev0 = &sx127x.DeviceLoRaBare{DL: *sx127x.NewLoRa(bus, pinCS0.Set, pinRST0.Set)}
pinDIO0.Configure(machine.PinConfig{Mode: machine.PinInputPulldown})
// dev1 = sx127x.NewLoRa(bus, pinCS1.Set, pinRST1.Set)
cfg = sx127x.DefaultConfig(lora.Freq433_0M)
cfg.TxPower = 10
}