本帖最后由 freeelectron 于 2018-8-24 16:51 编辑
随着阿里,腾讯,铁塔加入LoRa阵营,可见LoRa物联网的前景,已经越来越光明了。
方案:目前采用LoRaWAN升级,可操作性不高,尤其是A类设备;但是采用LoRa点对点升级还是可以的。
理论计算:我们知道SX1276/8的FIFO最大是255字节,速率设置为SF7最快,同时将带宽设置为500K,编码率设置为4/5,且打开硬件CRC,那么传输一帧255字节的数据理论需要135.23ms,参见下图:
硬件设备:STM32+SX1278
程序设置如下: - Radio.SetMaxPayloadLength( MODEM_LORA, 0xFF );
- Radio.SetTxConfig( MODEM_LORA, 10, 0, 2, 7, 3, 8, false, true, false, 0, false, 3000);//10dbm,SF7,500K
- Radio.SetRxConfig( MODEM_LORA, 2, 7, 3, 0, 8, 5, false, 0, true, false, 0, false, true );
复制代码考虑到无线丢包,以及电磁波影响:发送一个包,需要得到回复,才能发送下一个包,如果丢包则重传。
目标设备端:使目标设备进入bootloader程序,考虑到功耗,设备端不能一直处于bootloader程序,因此需要设置一个超时机制,两桢数据间隔超过5s,则退出bootloader,进入app。
PC端:准备一个USB转串口的LoRa板子通过上位机将APP文件分包,由串口发送到PC端的LoRa板,由PC端的LoRa板发送出去,同时,在发送完成之后处于接收状态,接收目标设备的回复,接收到回复之后,再通过串口发送到PC端,PC端接收到之后,再发送下一包。在没有收到目标设备的升级请求之前,PC端的LoRa板一直处于接收状态,在收到之后请求升级后,PC端的LoRa板将数据传给PC上位机,PC端的上位机处理后,上位机开始发送数据,其中PC端的LoRa板处于透明传输的状态,只做数据转发,不做逻辑处理。
数据交互模型:
升级效率:升级50K左右的bin文件,大约需要5-6分钟,成功基本上可以达到99%。
最后欢迎大家加入,stm32/LoRa物联网:304350312
|