这个程序通过LoRaWAN协议进行设备入网、数据发送和接收。初始化后,设备在OTAA模式下自动尝试入网,RGB灯亮度变化显示连接状态。成功连接后,设备每5秒发送一次数据,并检查是否有下行数据。
from m5stack import *
from m5ui import *
from uiflow import *
from base.DTU_LoRaWAN import DTU_LoRaWAN
import time
j = None
rgb.setColorAll(0xcc6600)
dtu_lora470 = DTU_LoRaWAN()
dtu_lora470.set_join_mode(0)
dtu_lora470.config_OTAA('2fd1549588a2f196', '00000000000000000000000000000000', '059d230cf60aaf212783b4b7e801a389')
dtu_lora470.set_frequency_band_mask('0400')
dtu_lora470.set_rx_window_param(0, 0, 505300000)
dtu_lora470.set_class_mode(2)
dtu_lora470.set_uplink_downlink_mode(1)
dtu_lora470.join(1, 1, 8, 10)
rgb.setColorAll(0xff6666)
while not dtu_lora470.check_join_status():
print('waiting join....')
for j in range(101):
rgb.setBrightness(j)
wait_ms(10)
for j in range(100, -1, -1):
rgb.setBrightness(j)
wait_ms(10)
print('connected!')
rgb.setBrightness(100)
rgb.setColorAll(0x33ff33)
while True:
dtu_lora470.send_data('012345678', 1, 15)
print(dtu_lora470.check_downlink_data())
wait(5)
wait_ms(2)
dtu_lora470 = DTU_LoRaWAN()
modbus._mdbus_uart.any()
dtu_lora470.check_downlink_data()
dtu_lora470.check_join_status()
dtu_lora470.check_uplink_status()
dtu_lora470.set_frequency_band_mask('0001')
dtu_lora470.set_rx_window_param(0, 0, 505300000)
dtu_lora470.set_class_mode(0)
dtu_lora470.set_uplink_downlink_mode(1)
dtu_lora470.config_OTAA('', '', '')
dtu_lora470.get_ABP_config()
dtu_lora470.get_OTAA_config()
dtu_lora470.join(1, 1, 8, 1)
dtu_lora470.join(0)
dtu_lora470.read()
dtu_lora470.readline()
dtu_lora470.read(10)
dtu_lora470.read_coils(1, 1, 0)
dtu_lora470.read_discrete_inputs(1, 1, 0)
dtu_lora470.read_holding_registers(1, 1, 0, True)
dtu_lora470.read_input_registers(1, 1, 0, True)
dtu_lora470.receive_data()
dtu_lora470.send_data('')
dtu_lora470.set_join_mode(0)
dtu_lora470.set_uplink_app_port(1)
dtu_lora470.write('')
dtu_lora470.write(''+"\r\n")
dtu_lora470.write_multiple_coils(1, 1, 0)
dtu_lora470.write_multiple_registers(1, 1, 0, True)
dtu_lora470.write(bytes([0, 0, 0]))
dtu_lora470.write_single_coil(1, 1, 0)
dtu_lora470.write_single_register(1, 1, 0, True)