functional
This commit is contained in:
parent
eba68415c1
commit
ced34c2145
5 changed files with 606 additions and 4 deletions
63
loratransmit/loratransmit.py
Normal file
63
loratransmit/loratransmit.py
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
#!/usr/bin/python3
|
||||
|
||||
import sys
|
||||
import select
|
||||
import argparse
|
||||
from RNode import RNodeInterface
|
||||
|
||||
serialPort = "/dev/ttyACM0"
|
||||
|
||||
def rx(data, rnode):
|
||||
message = data.decode("utf-8")
|
||||
print("Received a packet: "+message)
|
||||
print("RSSI: "+str(rnode.r_stat_rssi)+" dBm")
|
||||
print("SNR: "+str(rnode.r_stat_snr)+" dB")
|
||||
|
||||
def main():
|
||||
|
||||
parser = argparse.ArgumentParser(description="LoRa packet transmitter for RNode hardware.")
|
||||
parser.add_argument("--freq", action="store", metavar="Hz", type=int, default=None, help="Frequency in Hz")
|
||||
parser.add_argument("--bw", action="store", metavar="Hz", type=int, default=125000, help="Bandwidth in Hz")
|
||||
parser.add_argument("--txp", action="store", metavar="dBm", type=int, default=2, help="TX power in dBm")
|
||||
parser.add_argument("--sf", action="store", metavar="factor", type=int, default=7, help="Spreading factor")
|
||||
parser.add_argument("--cr", action="store", metavar="rate", type=int, default=5, help="Coding rate")
|
||||
parser.add_argument("port", nargs="?", default=None, help="Serial port where RNode is attached", type=str)
|
||||
parser.add_argument("payload", nargs="?", default=None, help="The payload to be transmitted", type=str)
|
||||
args = parser.parse_args()
|
||||
|
||||
if not (args.freq and args.bw and args.sf and args.cr):
|
||||
print("Please input startup configuration:")
|
||||
|
||||
if not args.freq:
|
||||
print("Frequency in Hz:\t", end=' ')
|
||||
args.freq = int(input())
|
||||
|
||||
if not args.payload and not select.select([sys.stdin, ], [], [], 0.0)[0]:
|
||||
print("Please provide a message to be sent")
|
||||
exit()
|
||||
|
||||
try:
|
||||
rnode = RNodeInterface(
|
||||
callback = rx,
|
||||
name = "RandoRNode",
|
||||
port = args.port,
|
||||
frequency = args.freq,
|
||||
bandwidth = args.bw,
|
||||
txpower = args.txp,
|
||||
sf = args.sf,
|
||||
cr = args.cr,
|
||||
loglevel = RNodeInterface.LOG_NOTICE)
|
||||
except Exception as e:
|
||||
print(str(e))
|
||||
exit()
|
||||
|
||||
if not args.payload and select.select([sys.stdin, ], [], [], 0.0)[0]:
|
||||
message = sys.stdin.read()
|
||||
else:
|
||||
message = ' '.join(args.payload)
|
||||
data = message.encode("utf-8")
|
||||
rnode.send(data)
|
||||
print(f"Payload sent: '{message}'\n")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Loading…
Add table
Add a link
Reference in a new issue