最近接手一个新项目,主要是用stm32做控制芯片,然后利用lora通信,实现相关功能。

  1. 项目概述
  2. 硬件设备
  3. 项目流程
  4. LORA介绍
  5. 理论知识
  6. 调试流程
  7. 调试中的问题
  8. 个人反思

    整个项目由3个同学协作完成,我主要负责通信部分的调试。

1.项目概述:通过单片机控制lora节点,发送数据给“lora数据集中器”,数据集中器将数据上发给指定服务器,进行软件端的开发。

名称 作用
WH-L101-L(lora节点) 单片机通过节点发送数据给集中器
LG220(数据集中器) 集中器将数据上传给指定服务器

2.硬件设备:“lora节点”*10, “lora数据集中器”*1,单片机型号为:stm32f103c8t6(自己设计的PCB);

若干USB-TTL模块,lora节点配套底板一块,吸盘天线若干。

3.项目流程:首先确定整个项目所要实现的功能,根据功能背后的硬性要求,寻找对应的硬件设备,制作选型文档,从多维度进行考虑,缩小目标设备的选择范围,先确定几个大概选型,咨询相关技术客服,了解实际的产品型号,最后再下单购买。

4.lora是一种远距离、低功耗通信技术,全称是:Long Range。

找了两个简单的介绍文档,可以留作参考http://www.four-faith.com/2018/industry_0828/683.html  (附有各种通信方式特点对照表)https://blog.csdn.net/Ttian6/article/details/94215277

LORA的通信距离不等,我选择的芯片支持通信距离为2KM左右,且通信距离可调,芯片功耗很低。lora 模块很多,需要慎重选择。

5.理论知识

介绍一下这套通讯设备之间的关系:单片机控制节点,节点发送数据给数据集中器,集中器将数据上传至服务器。但是,这是在应用时的工作逻辑关系,如何调试这套设备呢?必须先熟悉几个软件以及知识点。

网络调试助手:一共分为串口和网口两个调试端口。一般是将电脑当作本地服务器,通过串口给一端(LORA芯片)发送信息,然后网口一端显示服务器(本地服务器的地址就是电脑的IP地址)接收到的数据(这里的数据是由集中器所上传)。

LORA的通信方式:lora节点与lora数据集中器之间通信,是依靠各自的lora吸盘天线,与网络,基站等等无关;

MQTT协议:https://blog.csdn.net/anxianfeng55555/article/details/80908795

TCP/TP协议:就是简单的通信协议啦,我在前几篇博客中都有过详细介绍。

服务器端口号:每一个服务器都可以设定几个特定的端口号供自己使用

本地端口号:就是当前设备的端口号

服务器端口号:服务器或者网关开启接口给除它之外的IP连接;本地端口:供其他服务器或者设备连接的接口编号。所以在此处,网络调试助手与集中器之间,关系就应该是:网络调试助手,端口号填写集中器的服务器端口号,集中器端口号与之相反。

6.调试流程:

(1)基于配套底板调试LORA节点,进入AT指令,设置一些主要参数。购买配套底板是为了防止自己画的板子出问题,用作对照实验,且可以极大提升开发效率。小编

(2)调试集中器:成功配置集中器之后,就可以进行简单的连接,以及与配套的透传云实现数据收发。

(3)基于自己设计的PCB板调试LORA节点,也就是通过单片机发送指令,实现AT指令的收发。

(4)实际通信有效距离测试。

最后,也是最重要的一点,一定要学会看芯片使用手册!!!!!!!

小编的调试步骤:

(1)查看芯片快速入门手册以及配套底板的硬件说明,将芯片与配套底板焊接,通过USB-TTL模块连接电脑与底板(已知采用串口通信),打开串口助手,发送指令快速进入AT模式,分别看各个参数的作用,并设置参数。

(2)为数据集中器供电(集中器的天线分别安上),并且电脑连接集中器的WIFI,登陆指定网页:192.168.1.1,账号密码都是:root,然后进入集中器设置界面(如下)。服务器设置:指定集中器数据上传的服务器。基本设置:设定与节点连接的相关参数。通道:就是数据传输的通道,彼此间参数各不相同(主要是频率这部分),防止数据冲突。

(3)尝试建立连接(采用本地服务器):此时,焊接有芯片的底板通过USB-TTL连接到电脑串口上,电脑连接集中器的WIFI,并且,将集中器的服务器界面,服务器IP地址设置为电脑IP,服务器端口和本地端口设定好,在专门的配置软件(网络串口调试助手)中,也要保持一一对应的关系(类似串口通信的TX-RX,RX-TX),设定好波特率。通过串口发送数据,就可以在集中器端查看发送的数据。
(4)将AT指令配置交由单片机完成(通过单片机发送指令,有2种方式,状态机或者直接延时发送),通过阅读芯片手册,可以知道指令发送的起始信号和退出信号。
(5)测试自己设计的PCB板子,先确定最小系统没问题,然后将外围电路及芯片焊接上,测试LORA芯片是否对单片机发送的指令做出预期回应(单片机串口1发送数据,然后将串口1接受的数据进行存储,通过串口2发送给电脑显示)
(6)通过以上步骤,就能够确定硬件大体的功能达到预期要求。传输距离,依靠天线电路。这部分电路设计很重要,我将单独列一章作为介绍(兼顾PCB天线设计以及天线型号选择)。
(7)单独测试传输距离:分别采用改装的吸盘天线以及PCB天线。发现传输速率越低(波长越长),传输距离越远。
注意传输协议,包头包围,发送数据时,注意十进制和十六进制之间的转换,发送字母S,就要通过串口发送S对应的ASCLL码,而且是10进制的。单片机判断数据,也就是判断接收的ASCLL码十进制的值。
(8)软硬件对接,通过网络串口调试助手,可以查看数据。实际场景中,需要将集中器的服务器地址改为指定云服务器的地址,然后由软件后台进行判断。

7.调试中的问题:

(1)始终无法进入AT指令:WH-L101-L-C型号的lora芯片,进入AT指令,需要严格遵循时序要求。此处,就以最简单的延时函数调试单片机进入AT指令模式:(状态机涉及信息众多,延时,简单粗暴,可靠)

     if(USART_RX_STA&0x8000)//接受到中断,就执行保存{            USART_RX_STA=0;//对数组清零,方便下一次接收len=USART_RX_STA&0x3fff;//取出u16中的低16 位,得到此次接收到的数据长度for(t=0;t<len;t++){USART1->DR=USART_RX_BUF[t];//把每一个数据都在串口打印出来while((USART1->SR&0X40)==0);//等待发送结束}USART_RX_STA=0;//对数组清零,方便下一次接收if(keys==1){printf("%c",j);delay_ms(200);printf("%c",j);delay_ms(100);printf("%c",j);delay_ms(100);}delay_ms(400);printf("%c",M);delay_ms(500);printf("AT+AID=00000001\r\n");delay_ms(400);printf("AT+NID=00013c2d\r\n");delay_ms(400);printf("AT+SPD=1\r\n");delay_ms(400);printf("AT+CH=72\r\n");delay_ms(400);printf("AT+ENTM\r\n");delay_ms(400);printf("AT+ENTM\r\n");LED=!LED;delay_ms(1000);delay_ms(1000);delay_ms(1000);LED=!LED;//        printf("AT+AID\r\n");//可以查询设置的数据}

自己调试快一周,几在崩溃边缘徘徊,被同伴一语点破,甚幸甚幸呀。(以前用的通信模块,进入AT指令没有严格要求时序问题,更重要的,是暴露了自己的问题,几次怀疑时序,但却没有付诸行动,导致调试耗时巨大)。使用手册,重要部分,一定要精度。

(2)很短时间就调试成功了数据集中器,但是,如何测试“有人公司”产品的实际传输距离呢?这里就涉及到了网络调试助手,以前一直认为网络调试助手只能在一台电脑上实现“串发网收”。因此在此处困惑许久,直至配置服务器连接**公司透传云,都没能进行数据传输测试。老师花了一分钟,小编就明白了如何测试及原理:一台电脑连接"底板+lora芯片",打开网络调试助手的串口部分,另一台电脑打开网络调试助手的网口部分(同时在集中器上设置好服务器地址位本机IP地址,服务器端口及本地端口),一台电脑移动,发送数据,在数据集中器端的电脑即可在网络端口查看数据。

(3)敢于质疑,在利用AD画图的时候,发现芯片手册上存在问题,前后对照之后,果断问了技术支持,更新了原理图的版本。

(4)自己设计的PCB天线电路(外置天线),但是传输距离只有10~20M远,购买的底板+芯片+吸盘天线,在学校内 传输距离达到了1000+(楼层越多,越密集,传输效果越不稳定,信号越弱),正在改进电路,希望下一版,自己设计的天线可以传输更远的距离。

8.个人反思:接手了比较多的通信、物联网相关项目,但是本次还是遇到了问题,足见自己功底不踏实。正如老师所说:想要快起来,必须先让自己慢下来。并且,对于各种协议的理解,远远未达到清晰明了,依旧停留在了解的阶段。

9.项目拓展,如果有n多个lora芯片需要接入同一个集中器,需要将修改集中器的接入节点数量,并且,在每一个单片机中烧录指定程序(每个单片机对应一个芯片,程序中需要修改单片机AT指令中LORA节点的ID),如果已知产品数量,那么,依旧可以采用状态机来解决重复烧录这个问题。

暂时先总结出这么多,希望对读者能有一定帮助。

我曾许下十年,只为最美的遇见。

STM32+LORA芯片调试相关推荐

  1. STM32与LoRa低功耗调试总结

    前言:物联网的大部分设备都是电池供电的,设备本身低功耗对设备使用寿命至关重要,今天就以实际调试经验,聊一聊stm32的低功耗调试. 1.stm32在运行状态下的功耗 上图截图自stm32l15x手册, ...

  2. 基于STM32系列芯片的 IAP实现的探索

    基于STM32系列芯片的 IAP实现的探索 什么是IAP? 如何实现IAP? 第一步:学习官方源代码 第二步:了解STM32芯片基本硬件参数 第三步.搞清除STM32内置Flash 第四步. STM3 ...

  3. na5tr1 测距芯片调试小结

    刚开始被通知要使用na5tr1芯片实现测距功能的时候,还是处于一无所知的状态,只是得到了一堆的芯片文档资料,硬件实物还遥遥无期,百度上资料也少的可怜,开始抱着文档乱啃,寄存器一个挨着一个看,着实费劲, ...

  4. Lora芯片的选择与前景分析

    Lora芯片的选择与前景分析 1.起因 2.Lora和LoraWan 3.SemTech芯片分类 4.是否需要Gateway 5.sx7系芯片和6系芯片的区别 6.sx6系列芯片和8系列的芯片的区别 ...

  5. MDK stm32软件仿真调试

    MDK stm32软件仿真调试 选择好单片机型号 配置Debug选项 选择好单片机型号 我选的STM32F103ZET6型号,大家可以根据自己手上stm32开发板的型号来选择. 外部晶振频率的选择:8 ...

  6. STM32之QSPI调试记录

    STM32之QSPI调试记录 先声明一下,STM32的QSPI外设同样支持单线模式(兼容普通spi),只是相比普通的spi少了一些特性(比如只支持模式0和3.不能LSB发送等),但是用来操作flash ...

  7. WIFI芯片调试APP Wif网络精灵

    在调试WIFI芯片时候,有时候需要判断当前WIFI是否连接正常或者是测试WIFI芯片作为TCP SEVER下,多个无线客户端tcp client的连接到该芯片上通信情况. 特意撰写了个 APP客户端( ...

  8. 千兆以太网PHY芯片调试-88E1111(RGMII接口-数据收发ECHO测试) Verilog实现python测试

    千兆以太网PHY芯片调试-基于RGMII接口的88E1111(数据收发ECHO测试) 先放结果: Py测试代码: import socket #网络通信 TCP,UDP DST_IP = '192.1 ...

  9. LORA芯片ASR6505无线远距离传输8位MCU

    ASR6505是基于STM 8位MCU与SX1262 的SiP芯片,相对于32位MCU更具成本优势,8mm*8mm*0.9mm的超小尺寸可以满足客户不同的产品规格,QFN68的接口资源可以满足不同的应 ...

最新文章

  1. c语言程序计算p q真值表,C语言程序设计第2章数据类型﹒运算符和表达式.ppt
  2. 通信upf是什么意思_5G给边缘计算带来了什么?
  3. 面向对象的5个基本设计原则
  4. Windows CE设备驱动开发之电源管理
  5. Jenkins 添加 linux节点
  6. Eclipse 批量创建多级文件夹
  7. 2021-11-16数据结构
  8. vb excel遍历列_EXCEL如何把多个表格合并成一个表格
  9. Linux下Weblogic 11g R1安装和配置
  10. 记录一次处理 kdevtmpfsi 挖矿病毒
  11. vue读取服务器文件跨域,新版vue-cli模板下本地开发环境使用node服务器跨域的方法...
  12. IBM云计算架构师:Mesos新功能以及roadmap简介
  13. 今天终于安装了Snippet Compiler!!!
  14. Java中文乱码问题如何解决?
  15. vs2010操作office2010
  16. python插件安装包_Python的插件安装
  17. excel查找重复数据
  18. (2021年)iOS面试题及答案,以及添加Flutter 面试问题,Swift面试题
  19. php 测试网站打开速度,利用JS测试目标网站的打开响应速度_javascript技巧
  20. java计算机毕业设计网上拍卖系统源码+数据库+系统+lw文档+mybatis+运行部署

热门文章

  1. 全国互联电网调度管理规程(第十章__第十三章)
  2. 帆软FineReport学习篇(二)
  3. 用计算机名怎么共享电视盒,机顶盒播放电脑视频的方法, 局域网共享教程
  4. 2021-2027全球与中国演播室和外场超高清和高清镜头市场现状及未来发展趋势
  5. ArcGIS必会的几个工具的应用 --提取、分割、融合、裁剪(矢)、合并、追加、镶嵌、裁剪(栅)、重采样
  6. 巴比特 | 元宇宙每日必读:上海虹口启动元宇宙方向孵化项目申报,最多可获20万元补贴,有哪些要求?...
  7. Vue + Django + PaddleOCR 实现一个在线OCR 识别网站,一键上传快速识别
  8. 啥? 听说 win10 还可以滑动关机,还不了解一下?
  9. 魅蓝3如何root_魅蓝3获取root权限及刷入Android过程
  10. Python多线程顺序运行