IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 基于STM32的有方科技(银而达)N58模块与OneNet平台互联 -> 正文阅读

[嵌入式]基于STM32的有方科技(银而达)N58模块与OneNet平台互联

一.简介

? ? ? ? 最近做了一个物联网方面的项目,就是利用有方科技(银尔达)N58模块实现与OneNet物联终端平台的互联,采用的是OneNet平台的EDP协议,最终实现了数据的上传,后面由于没做了,命令的下发就没有搞。之前做的时候,发现N58这个模块网上资料很少,特别是基于STM32开发板的资料基本没有,官方也只是提供基本的AT指令,没有什么例程,对于新手来说可能学起来有点困难。因此特地挤出一点时间写一篇(其实是一个专栏,一次也写不完,无奈)关于这方面的博客,也是对N58这个模块的实际使用做一个入门的介绍吧。

二.使用的硬件和软件

? ? ? ? 硬件:stm32f103zet6开发板一块;有方Core-N58-G-A测试套餐(AT固件,带GPS)等

? ? ? ? 软件:Keil5;OneNet平台;串口调试助手等

三.实现过程

1.最终效果图

? ? ? ? 最终实现的效果是,给开发板和N58模块供电,N58模块自动连接网络,并连接上OneNet平台,然后将要上传的数据连续上传给OneNet平台,效果图如下所示:

? ? ? ? 当然,这里是静态的图,看不到实际自动更新的过程,不过实际是可以的。

2.开发流程

2.1.在OneNet平台上创建一个EDP协议的产品和设备

? ? ? ? 注册OneNet平台账号这里就不过多赘述,应该大家都会。

? ? ? ? 登录OneNet账号,进入?控制台->全部产品服务->多协议接入->EDP->添加产品,眼睛比较灵活的,可以直接跳过下面截图,看文字说明,没找到的具体可以看下面截图操作流程。

? ? ? ? 点击控制台:

? ? ? ? ?点击全部产品服务:

? ? ? ? 点击多协议接入:

? ? ? ? ?点击EDP:

?????????点击添加产品:(注意,这里如果你是第一次打开,是没有任何东西的,因为我之前做过测试,所以这里是有内容的)

? ? ? ? ?点击添加产品后就会弹出一个小界面框,里面是你需要填写的一些设备内容,具体如下图所示:

? ? ? ? ?这里说明一下,产品名称,产品行业,产品类别,产品简介可以任意填写。联网方式选移动蜂窝网络,设备接入协议必须选EDP,操作系统选无(这里我使用的STM32代码没有使用操作系统,你也可以根据自己的来,不过后面提供的代码可能会有区别),网络运营商按你N58上使用的SIM卡来选,如果使用的联通的卡就选联通,一次类推,填完后点击确定,下面是我的配置信息:

?????????产品添加成功的画面:

?????????这里你可以选择立即添加设备,也可以暂不添加。这里我选择暂不添加。这里我稍微解释一下,为什么添加一个产品和还要添加设备,每一个设备对应的是一个具体的硬件设备,而多个相同的设备构成一个产品。

? ? ? ? 点击刚刚创建的产品进入产品详情页:

? ? ? ? ?这里左侧的方框中对应的是该产品下的一些设备和一些设置,上面方框中是该产品的一些基本信息,其中比较重要的有产品ID和Master-APLkey,这两个信息后面登录中可以用到,也可以不用到,后面再详细解答。

? ? ? ? 点击设备列表,添加设备:

?????????添加设备和添加产品步骤有一点类似:

? ? ? ? ?其中,设备名称和鉴权信息任意填写,只要满足字数要求就行,设备数据保密性如果选公开,其他人就可以看到此设备的数据,设备描述和设备标签暂时可以不写,填完信息后点击添加,然后在设备列表中就可以看到刚刚添加的设备了。

? ? ? ? 这里我们看到设备的状态是离线的,这是因为没有实际的硬件设备连接上OneNet平台上并于创建的这个设备相关联,我们下面要做的就是将实际的硬件设备(N58)与创建的设备关联起来。不过创建设备后,还要做一些准备工作。?因为要想与创建的设备相关联,需要两个信息,一个是设备ID,一个是鉴权信息,设备ID是在创建设备时系统自动分配的,而鉴权信息是需要我们自己手动分配的。当然你也可以采用产品的鉴权信息(APIkey),因为产品的APIkey是对这个产品下的所有设备都有用,这样以来就比较混乱了,所以我一般采用每一个设备单独生成一个鉴权信息(APIkey),这个APIkey只对这个设备有用。生成对应设备的APIkey操作如下:

? ? ? ? 点击权限管理->添加APIKey:

? ? ? ? ?按要求输入APIKey名称,点击添加:

?????????添加完APIKey后,可以看到该APIKey的详细信息,关联的设备数为0:

? ? ? ? 生成APIKey后,要做的就是将该APIKey与上面我们创建的设备相关联起来,简单点来说就是将该APIKey分配给该设备,然后就可以根据设备ID和该APIKey连接该设备了,APIKey可以简单理解为密码,没有此密码就不能和与之关联的设备通信。

? ? ? ? 点击关联,如上图所示。选择与之关联的设备,这里我们选择之前创建的设备:

?????????查看该APIKey关联设备数是否为1,为1关联成功。

? ? ? ? ?到这里我们就在OneNet平台上创建了一个基于EDP协议的产品,该产品中创建了一个设备,并为该设备创建了鉴权信息(APIKey)。下面要做的就是编程实现N58模块和刚刚创建的设备相关联,实现数据的上传。在编程之前,还要简单介绍以下OneNet平台的EDP协议和N58实现上网的流程。

2.2.OneNet平台的EDP协议简介

????????EDP (Enhanced Device Protocol增强设备协议)是OneNET平台根据物联网特点专门定制的完全公开的基于TCP的协议,可以广泛应用到家居、交通、物流、能源以及其他行业应用中。

? ? ? ? 支持:长连接协议;数据加密传输;平台消息下发;端到端数据发送;终端数据上报,支持的数据上报类型有:浮点型,整型,字符串,JSON对象和二进制数据。

????????EDP协议适用于设备和平台需要保持长连接点对点控制的使用场景。基于TCP协议的,该协议只传输数据包到达目的地,不保证传输的顺序与到达的顺序相同,事务机制需要在上层实现;若客户端同时发起两次请求,服务器返回时,不保障返回报文的顺序。EDP协议适合于数据的长连接上报、透传、转发、存储、数据主动下发等场景。

? ? ? ? 关于EDP协议的文档,我会在后面的资料中给出,编程十分需要这个文档,结合代码的注释和EDP协议文档可以很好的理解代码(这里说这些好像还有一点早了,不管了,大家看得懂就行了)。

2.3.N58上网流程介绍

? ? ? ? N58与单片机交互只需要使用到串口,而N58与网络的连接需要使用到AT指令,简单来说单片机通过串口给N58发送AT指令,N58执行指令从而实现联网。下图就是N58连接网络的基本流程:(截图来自资料里提供的N58-AT固件用户手册,这也是银而达官方提供的资料,也可以从其官网下载)

?

? ? ? ? 这里插入一张AT指令调试的截图,使用串口助手通过串口给N58发送AT指令,观察其返回的是什么。

? ? ? ? ?上图中,蓝色的行表示串口助手发送的AT指令,绿色的行表示N58接收串口助手发送的AT指令后返回给串口助手的信息,可以看到返回的信息中先是重复一遍指令,然后再返回指令执行的情况。这就是AT指令执行的基本过程。

????????另外,想要看AT指令具体的操作与解释,可以看资料里提供的N58-AT命令手册,里面有详细的介绍和使用方法,这里不多说。

? ? ? ? 经过上面8步操作后,仅仅只完成了N58联网的初始化,通俗的说此时N58的SIM卡有信号,有网,但是你想要访问某一个网页,你还需要输入网址。这里我们想要连接上OneNet平台的EDP设备,就需要使用TCP协议去链接OneNet平台上的EDP设备(前面讲过EDP协议是基于TCP协议的,所以要使用TCP协议连接),OneNet平台为每一种协议的设备的连接都提供的IP和端口号,如下图所示:

? ? ? ? 上述接入地址可以在OneNet平台上的开发文档中查看,?放个链接吧接入地址_开发者文档_OneNET (10086.cn)

? ? ? ? ?那么如何使用TCP协议去连接指定的IP和端口呢?AT指令里有对AT指令的详细介绍,指令格式为”AT+TCPSETUP=链路编号,目的IP地址,目的端口号“,我这里使用的是AT+TCPSETUP=0,182.230.40.42,876

? ? ? ? ?到这里就实现了使用TCP协议连接到OneNet平台了,但是想要连接上之前创建的设备,还需要以EDP协议的格式发送链接设备的请求,其实就是发送EDP协议包。在发送链接设备的请求之前,还需要了解使用AT指令发送TCP数据的命令,具体如下图所示:

? ? ? ? 在发送TCP数据的AT指令中,包含了要发送的数据,而这里的数据指的就是以EDP协议格式包装的各种各样的数据包,比如连接请求包等等。

? ? ? ? 看到这里是不是都有一点迷糊了,其实我自己写的也有点迷糊了,过程我清楚,只是不知道怎么去很好的阐述,让大家很好的理解。这里给N58连接OneNet平台上的设备做一个总结吧!

1.N58模块联网初始化,主要包括检查SIM是否正常,信号是否可用,是否已联网;

2.使用AT指令,建立TCP连接,作用是使N58和OneNet平台建立TCP连接,为后面进行数据传输做准备;

3.使用AT指令,发送TCP数据,其中TCP数据中包含以EDP格式出现的各种数据包,用来完成不同的功能,数据包的格式和作用可查看资料中的EDP协议文档。

? ? ? ? 这里我觉得有一点绕,既有TCP又有EDP可能不好理解,其实TCP协议主要是用来连接OneNet平台的,用于网络连接,而EDP协议仅仅用在TCP数据传输中的数据打包,通过TCP协议连接平台并将数据传输给平台后,平台是以EDP的数据格式来解析TCP传输过来的数据,从而明白数据是什么意思。?

2.4.EDP协议格式

? ? ? ? EDP协议格式我这里就不展开讲了,详见资料里的EDP协议文档。

2.5.小结

? ? ? ? 第二部分主要是讲解了N58与OneNet平台连接并于设备相关联的步骤和流程,其中只对在OneNet平台上创建EDP产品和设备进行了详细的介绍,基本是手把手的操作,而对于N58关联设备和进行数据传输只进行了流程的介绍,没有详细解释,这是因为后面讲代码的部分会详细讲解,这里只是让大家有一个基本的流程的掌控。

3.代码详解

注意:如果你和我使用的都是stm32f103zet6开发板,只需要下载整个工程并更改bsp_onenet.h头文件中的设备ID和APIKEY即可。如果不同按下面步骤来。

3.1.使用CubeMx创建工程(只需要初始化一个串口即可,不详细讲解,使用标准库也可以,资料里提供的代码是基于HAL库的)

3.2.添加提供的驱动文件

? ? ? ? 驱动文件文件及其作用:

1.bsp_n58.c:主要包括了AT指令的发送,N58建立TCP链接等;

2.bsp_edpkit.c:主要包括EDP协议的数据包格式的封装;

3.bsp_usart.c:串口相关函数的定义;

4:bsp_onenet.c:主要包括与OneNet平台设备的关联和数据上传,以及将数据数据封装为JSON格式的函数。

3.3.改设备ID和APIKey

? ? ? ?bsp_onenet.h头文件中将设备ID和APIKEY更改为自己的,如下图所示。

3.4.开启串口接收中断

?3.5.编辑串口中断处理函数

3.6.编写主函数

?

3.7.连接好线路,下载程序,查看设备是否在线

?

? ? ? ? ?可以看到此时设备已经连接上了,查看数据流,也可以看到数据的上传(这里我上传的是一个固定的值)。

? ? ? ? 最后讲一下,代码的注释我写的很清楚,这里不细讲,这篇博客写了好久了,有一点写不下去了感觉。另外,上传的数据在bsp_onenet.c中的函数OneNet_FillBuf()中,只需更改下图方框中的数字更改为你想要上传的参数即可,这里我只是为了演示,直接写的常数。

? ? ? ? 好的,就写到这里吧,最后附上所有资料吧。祝大家学习愉快!!

?链接:https://pan.baidu.com/s/1XMk6efV7zqr2AQdwY1QjUw?
提取码:8ezg?
?

?

?

?????????

????????

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-08-26 12:16:06  更:2021-08-26 12:17:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 22:26:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码