Files
2023-05-25 15:15:48 -03:00

101 lines
2.0 KiB
Go

package main
import (
"fmt"
"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
)
var (
dev0, dev1 *sx127x.DeviceLoRa
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")
for {
err = dev0.Configure(cfg)
dev0.SetOCP(45)
for err == nil { // Tx Loop
println("transmitting packet")
err = dev0.Tx(packet)
time.Sleep(5 * time.Second)
}
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.NewLoRa(bus, pinCS0.Set, pinRST0.Set)
dev1 = sx127x.NewLoRa(bus, pinCS1.Set, pinRST1.Set)
cfg = sx127x.DefaultConfig(lora.Freq433_0M)
cfg.TxPower = 10
}
func _() {
var err error
var reg, fifo [256]byte
dev0.Reset()
if !dev0.IsConnected() {
panic("not connected")
}
dev0.Write8(1, 0)
time.Sleep(100 * time.Millisecond)
// dev0.SetOpMode(sx127x.OpSleep)
err = dev0.SetOpMode(sx127x.OpSleep)
if err != nil {
panic(err.Error())
}
time.Sleep(100 * time.Millisecond)
err = dev0.FullStatus(fifo[:], reg[:])
if err != nil {
panic(err.Error())
}
fmt.Printf("precomreg: %v\n", reg[:0x7d+1])
err = dev0.Configure(cfg)
if err != nil {
panic(err.Error())
}
err = dev0.FullStatus(fifo[:], reg[:])
if err != nil {
panic(err.Error())
}
fmt.Printf("poscomreg: %v\n", reg[:0x7d+1])
}