mirror of
https://github.com/soypat/lora.git
synced 2026-08-13 15:03:39 +00:00
add barebones
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
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
|
||||
}
|
||||
+49
-17
@@ -5,6 +5,7 @@ import (
|
||||
"machine"
|
||||
"time"
|
||||
|
||||
"github.com/soypat/lora"
|
||||
"github.com/soypat/lora/sx127x"
|
||||
)
|
||||
|
||||
@@ -20,6 +21,7 @@ const (
|
||||
|
||||
var (
|
||||
dev0, dev1 *sx127x.DeviceLoRa
|
||||
cfg lora.Config
|
||||
)
|
||||
|
||||
func main() {
|
||||
@@ -28,24 +30,20 @@ func main() {
|
||||
var err error
|
||||
setup()
|
||||
defer println("program end")
|
||||
var reg, fifo [256]byte
|
||||
dev0.Reset()
|
||||
if !dev0.IsConnected() {
|
||||
panic("not connected")
|
||||
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)
|
||||
}
|
||||
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("reg: %v\n\nfifo: %v\n", reg[:], fifo[:])
|
||||
}
|
||||
|
||||
func setup() {
|
||||
@@ -65,4 +63,38 @@ func setup() {
|
||||
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])
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user