LoRa网关设计与实现

功能与要求

    主控芯片采用stm32f407zet6芯片,主频高达168兆,网络芯片采用w5500,内部集成全硬件TCP/IP协议栈+MAC+PHY,LoRa具有传输距离远的特点,覆盖面广;采用MQTT协议与上位机连接,MQTT上位机采用emqttd(EMQ),号称具有百万级并发量。

    MQTT 是基于二进制消息的发布/订阅编程模式的消息协议,在本次设计中用作消息转发功能;电脑端应用程序、手机端APP、网关端都可以订阅和发布消息,消息以json格式进行传输;

程序实现的方法

    w5500与单片机连接是SPI接口,初始化网络芯片,自动获取IP,TCP方式通信,连接服务器,登录MQTT服务器,订阅主题;以上都完成后启动定时器,设备具有断网自动重连的功能;每一分钟发送两个字节的保活包(0xc0,0x00),如果上位机正常会返回两个字节(0xd0,0x00);每两分钟广播一次(LoRa)同步温湿度信息包(广播地址为0组,0号),当LoRa客户端设备收到广播的上传温湿度信息数据包时,以自身ID的两倍为初值,以秒为单位递减计数,当减为零时获取温湿度数据,获取成功就发送获取的数值,获取失败则发送特征值,温湿度都为999。当网关收到数据,并校验正确则通过up主题发布带有该LoRa客户端信息的温湿度数据,订阅了该主题的APP或者电脑应用程序就会收到该信息,进而解析、显示、入库。

    上位机可以通过传温湿度数据的情况,判断LoRa客户端的在线情况;长时间不上传数据则表明此设备不在线,每三分钟发布一次特征值数据,表明网关在线。LoRa网关收到控制数据时,解析Json数据,获取控制信息,LoRa发送控制数据包,此时LoRa客户端都能收到,停止用于传输温湿度的计时器,避免传输温湿度干扰控制信息;CRC校验和比对组和号,匹配则执行IO输出,并回复执行成功;否则不执行任何操作,清空接收数组。LoRa网关收到回复的信息,校验正确,发布该操作执行成功。


    在实际使用中,用户提出网络不好的情况下,有时需要遥控器操作,并且在覆盖范围内可以任意操作;考虑到覆盖范围的两端不能到达的问题,故采用能直达则直达,不能直达靠LoRa网关转发的方法;有遥控器操作时网关收到遥控操纵的数据包,发布遥控器过的记录;LoRa客户端无论是遥控操作还是手机操作,执行成功都回复执行成功的数据包。实际情况中由于遥控器的功率和使用地理环境复杂,不能使网关每次都能收到遥控操作的数据包,会出现遥控操作记录不全的情况,但不会出现操作执行成功了,而没有记录的情况。

改进计划

1、设置网关最大容量,在目前模式下最大容量为59。主要受限于2分钟上传一次温度,期间有120s,设备间隔是2s,故最大容量为59,遥控器最大容量目前是写入程序来固定的,会给生产和安装带来麻烦。

2、当用户全选操作时,每个操作包以0.8s为间隔发出,假如有30个设备,需要24s才能发完,期间如果停一个设备,只能靠遥控器了,建议多选不要选太多。

3、同一区域有多个网关时由于可使用的频率有限,靠数据包来区分不同用户的设备会出现同时操作时拥堵的情况。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值