一.简介

最近做了一个物联网方面的项目,就是利用有方科技(银尔达)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

基于STM32的有方科技(银而达)N58模块与OneNet平台互联相关推荐

  1. K_A12_007 基于STM32等单片机驱动AS608光学指纹识别模块 OLED0.96显示

    K_A12_007 基于STM32等单片机驱动AS608光学指纹识别模块 OLED0.96显示 一.资源说明 二.基本参数 参数 引脚说明 三.驱动说明 对应程序: 四.部分代码说明 1.接线引脚定义 ...

  2. 基于STM32设计的智能家居控制系统设计_语音+环境检测(OneNet)_2022

    1. 前言 如今的智能家居越来越深入人心,越来越受人们的欢迎.智能家居作为与人们日常生活息息相关的科技智能产物,可以给我们的生活带来舒适便利.随着物联网.云计算.无线通信等新技术的发展,智能家居得到了 ...

  3. 基于STM32的智能GPS定位系统(云平台、小程序)

    背景及目标 前阵子,准确的说是好几个月前买了一辆电瓶车,当时呢因为车停得很随意,所以想给小电驴装一个GPS,一方面是防盗,另一方面是为了测速和绘制骑行轨迹,要是能联动电瓶车状态远程监测就更好了.当然我 ...

  4. 基于stm32智能风扇_意法半导体和Fieldscale为基于STM32的智能设备带来简单直观的触控体验...

    "意法半导体与ST授权合作伙伴.仿真软件提供商Fieldscale合作,简化基于STM32微控制器(MCU)的智能设备的触控用户界面开发过程. " • Fieldscale SEN ...

  5. 基于数字电路交通灯信号灯控制系统设计-基于单片机病房温度监测与呼叫系统设计-基于STM32的无线蓝牙心电监护仪系统设计-基于STM32的智能蓝牙温控风扇控制设计-基于STM32的智能温室控制系统设计

    1617基于数字电路交通灯信号灯控制系统设计(仿真电路,论文报告)  摘  要:交通灯控制系统在城市交通控制中发挥着重要的作用,本次课程设计就是以城市交通灯控制系统为背景的,主要通过运用学过的数字电路 ...

  6. 基于STM32的智能温室控制系统仿真电路设计(温控补光)-基于STM32的智能蓝牙温控风扇控制系统设计-基于STM32的无线蓝牙心电监护仪系统设计【毕设课设分享】

    1609 基于STM32的智能蓝牙温控风扇控制系统设计-毕设课设 1.LCD1602液晶显示当前温度,温度上下限值,风扇等级,自动手动模式: 2.设置有4个按键,按键1可以设置自动和手动2种模式切换: ...

  7. 基于STM32的新西达电调和无刷电机

    基于STM32的新西达电调和无刷电机 本文采用硬件有 A2212/10T 1400KV无刷电机 正点原子F103开发板 以及新西达30A电调 如图: 硬件结构大致如上,由于电调只能调节无刷电机的转速. ...

  8. 有方科技N58与百度物联网核心套件的连接01

    近期使用银尔达基于有方科技N58物联网核心板成功连接了百度物联网核心套件.现将经验分享给大家. 为方便模块供电和串口通讯,可同时采购如下串口模块 ,带12V供电串口模块链接. 到手后还需12V1A直流 ...

  9. 【小睿精选·第七期】基于STM32的DIY蓝牙机械键盘

    [小睿精选] [小睿精选]第七弹来啦,本期共收录 6条 嵌入式资讯信息,希望可以帮到你.欢迎大家在文末留言,唠一唠你关注的话题,说不定下期就有你想要的惊喜! 资讯类 1.瑞萨推出RZ/V系列微处理器搭 ...

  10. 【毕业设计】基于STM32的宠物自动喂食装置

    目录 修改记录 1.摘要 2.整体功能分析 3.硬件选型 3.1 ESP8266 WIFI模块 3.2 STM32F103ZET6 3.3 CLS150TD舵机 3.4 压力传感器 3.5 HX711 ...

最新文章

  1. SQL面试题: 数据库中有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列 ,当B列大于C列时选择B列否则选择C列 ,...
  2. java 图片阴影_Java如何为 PPT 中的图形添加阴影效果
  3. Yii2 mongodb 扩展的where的条件增加大于 小于号
  4. 【Android】11.3 屏幕旋转和场景变换过程中GridView的呈现
  5. 搭建 Apache Jmeter 分布式压测与监控
  6. 图书管理系统(一):出版社列表增加、删除和编辑
  7. CocoStudio创建动画帧
  8. 嵌套查询(2020-3-25 )
  9. HTML+CSS实现个人简历
  10. 几个通用有限元软件简介
  11. 自动化构建工作流--gulp
  12. 固建机器人钢结构智能生产线 改善钢结构行业品质
  13. 土地购买(bzoj 1597)
  14. Redis 6.2的过期删除策略源码分析(定期删除)
  15. 为什么你做数据分析没思路?
  16. 软件测试工作流程规范
  17. C/C++新手入门教程:傻瓜都会的VS2013使用教程,成为程序员的第一步
  18. 【软件之道】Word模板的制作及使用
  19. [线段树 标记永久化 单调队列] BZOJ 1171 大sz的游戏 BZOJ 2892 强袭作战
  20. 智力杂志智力杂志社智力编辑部2023年第6期目录

热门文章

  1. 到底什么是模型预测控制MPC(一)
  2. PHP地方门户分类信息网站源码讯客分类信息系统商业版 含手机版
  3. 安卓彩虹DS网网站源码去授权版 附详细视频教程
  4. 新版《中国药典》提升中药标准
  5. 移动端app 文档交接模版
  6. 330425-01-00本特利内华达加速度计
  7. 基于AT89C52单片机简易篮球计分器设计
  8. [转载]AdapterView.OnItemClickListener
  9. 工行u盾显示316_工行网银客户端检测不到U盾的解决方法
  10. 如何使用Protel99 se给PCB文件添加汉字和图形?