物联网无线Lora 转 4G DTU通信设备(含源代码)

pic1

简介:

​ 该设备是一款基于《ShineBlink 低代码核心模组》开发的《Lora 转 4G》DTU通信设备,可实现Lora 和 4G 无线通信的传输转换功能。

功能:
  • 支持Lora星型组网/点对点
  • 支持 4G MQTT 传输
  • 支持 Json
  • 支持接入各种通用云
应用领域:
  • 智慧农业

  • 智慧养殖

  • 智慧消防

  • 工业物联网

  • 智慧城市

  • 无线抄表

  • 智慧气象/水文

开源资料地址:

FlexLua DTU: 包含一系列开源DTU通信设备,实现了物联网领域里常见的RS485/4G/WiFi/Lora通信之间的透传以及通信数据格式的转换。

----------------------配置信息开始----------------------
--MQTT连接参数
ServerAddr = "mqtt.ctwing.cn" --MQTT服务器ip地址或域名
ServerPort = 1883 --MQTT服务器端口号
ClientID = "15589964DTU01" --产品ID"15589964" + 设备编号"DTU01"
UserName = "ShineBlink" --建议填写为用户自己的天翼物联网平台(AIoT)用户名
Password = "lMmugH2yURmY2uJqkNby-zQHGJ67ngjMAYR6kkGQmko" --采用的一型一密,特征串
--MQTT topic相关参数
mqtt_sub_topic = "device_control"--订阅用,用于接收服务器下发的数据
mqtt_pub_topic = "$device_send" --发布用,用于向服务器发送数据

--Lora中心点配置
--Lora中心点(center)本机地址(范围:0-65535),其他Lora节点如果需要发送消息给本机必须知道该地址
addr = 0x00 
--Lora通信信道(范围:410-441MHz),相互通信的Lora节点必须在同一信道
channel = 433
--Lora无线速率(范围:0.3, 1.2, 4.8, 9.6, 19.2kpbs),速率越低通信质量越高
baudrate = "9.6kpbs"
--Lora发射功率(范围:11, 14, 17, 20dB),该值越大通信质量越高,但功耗会增加
tx_pwr = "20dB"
----------------------配置信息结束----------------------

--定义10毫秒定时器的回调函数,函数名字必须是LIB_10msTimerCallback
function LIB_10msTimerCallback()
    timer_ms = timer_ms + 10
	LIB_GpioToggle("D11") --喂硬件看门狗
end

--RGB三色灯控制函数
function RGB(R,G,B)
	LIB_GpioWrite("D0",R)
	LIB_GpioWrite("D1",G)
	LIB_GpioWrite("D3",B)
end

--LIB_SystemLogEnable() --查看详细日志(log.txt)时打开
--配置D0,D1,D3为普通GPIO输出,控制LED_R,LED_G,LED_B
LIB_GpioOutputConfig("D0","STANDARD")
LIB_GpioOutputConfig("D1","STANDARD")
LIB_GpioOutputConfig("D3","STANDARD")
RGB(1,1,1) --一上电Led三色灯默认都不亮
--配置D11为普通输出,控制看门狗 
LIB_GpioOutputConfig("D11","STANDARD")
--设置4G模块占用TX0、RX0、D5、D6引脚,MQTT模式,KeepAlive周期180秒,不开启GPS功能
LIB_Cat1MqttEC800Config("UART0","D5","HIGH","D6","HIGH",ServerAddr,ServerPort,ClientID,UserName,Password,180,mqtt_sub_topic,"QOS0","NO_GPS")
--设置Lora模块占用TX1、RX1、Aux接D9引脚,Md0接D10引脚
--Lora通信参数:地址=100,通信信道=433M,无线速率=9.6kbps,发射功率=20dBm
LIB_LoraConfig("UART1","D9","D10",addr,channel,baudrate,tx_pwr)
--使能系统10毫秒定时器开始工作
timer_ms = 0
LIB_10msTimerConfig("ENABLE")

--开始大循环
while(GC(1) == true)
do
	--查询是否收到Lora数据
	recv_flag,recv_addr,recv_data = LIB_LoraRecv()
	if recv_flag == 1 then	
		--在收到的Lora Json字符串前面增加Addr对象
		--例如:将收到的Lora Json字符串{"Temperature":25.6, "Humidity":72} 
		--转换成新的Json字符串 {"Addr":1,"Temperature":25.6, "Humidity":72}
		--上面的"Addr":1是recv_addr的值举例,代表某个Lora从机的地址
		json_str = LIB_TabToStr(recv_data)
		json_str = string.sub(json_str, 2, string.len(json_str)-1)--去掉首尾的"{}"
		json_str = "{"..string.format("\"Addr\":%d,", recv_addr)..json_str.."}"
		print(json_str)
		--将新增Addr后的Json字符串发送给云端
		LIB_Cat1MqttEC800SendPub("QOS0", mqtt_pub_topic, json_str)
	end
	
	--每隔0.5秒根据4G模状态更新LED灯颜色
	if timer_ms >= 500 then
		timer_ms = 0
		State,IMSI,ICCID,CSQ = LIB_Cat1StatusQuery()
		if State == "PowerOn" then --4G模块已上电但没发现sim卡
			RGB(0,0,0) --白
		elseif State == "SimOK" then --4G模块发现sim卡
			RGB(0,1,1) --红
		elseif State == "Attached" then --4G模块已连上附近的基站
			RGB(1,1,0) --蓝
		elseif State == "Connected" then --4G模块已和服务器连结
			RGB(1,0,1) --绿
		else --4G模块还未开始工作
			RGB(1,1,1) --全灭
		end
	end
end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值