简介:在前面有讲过如何使用nrf9160去连接一个云,然后进行发布订阅信息,但是当时连接的是一个免费的测试云,在国内的话许多人想要连接阿里云或者华为云,下面就来测试一下连接阿里云。这里为什么要和上一篇分开,是在nrf9160 做modem—— 连接云(接入方式MQTT) - 星辰_start - 博客园 (cnblogs.com)中有许多环境搭建,和前期准备等章节,本次就不再讲解这些了,如果你没有看过,可以去看一下我上一篇文章,再来跟随我的流程测试连接阿里云,当然我这测试的是使用阿里云免费的物联网云平台进行测试。

在开始之前依然把我们需要的软硬件列举一些:

前期准备:

1、nrf9160的官方开发板或者9160的模组一块;

2、物联网卡一张(这讲一下我使用的都是中国移动的物联网卡,联通的也可以,但是我最开始使用联通时没有成功连接到nrf cloud的云,有点问题,不知道是不基站的问题,后面的就没有用联通的物联网卡测试过了,如你也一开始使用联通的物联网卡连接没有成功,那么建议你更换为移动的)

3、官方的SLM例程和工具,这个在nordic官方都可以下载,如果你是一次接触,那么可以看一下我前面的博客,或者直接去看官方的中文博客,去下载安装好NCS还有开发环境

一、给nrf9160下载固件

1、下载modem固件(本次使用了1.8版本的SDK)

根据自己的NCS选择版本去选择对应的modem。我们先进入官网,这方一个连接:Explore our product portfolio - nordicsemi.com,然后点击右上角的放大镜,在搜索框中加入输入9160回车搜索。

在弹出的网页中可以选择如下任意一个

在打开的页面按照下图流程,找到 我们的对应于相应NCS(即SDK)版本的modem,进行下载(可以看到下图的是SDK 2.0.0,和我NCS不匹配,我要找到适合NCS1.8的,你也需要找到对应于你自己的NCS的modem)

下载完成后你会得到一个如下图所示的压缩包

然后我们使用nordic的PC端工具programmer进行下载modem固件(如过不知道这是什么的可以去看我前面的博客,或者官方博客去下载按照,连接:开发你的第一个nRF Connect SDK(NCS)/Zephyr应用程序 - iini - 博客园 (cnblogs.com)), 把nrf9160的开发板或者模块连接到PC端,然后打开后如下(我使用的是DK板,所以显示为DK,如果你使用的是模块可能不一样),然后我们点击连接,等待识别完成。

可以点击擦除一下,然后拖拽刚刚下载好的modem固件压缩包到工具界面,然后进行下载。

特别注意:modem固件的存放位置路径不要有中文,如果出现有中文,会导致无法下载成功。

等待片刻后下载成功如下,关闭即可:

2、SLM应用程序下载

打开SLM程序,直接编译下载,如果不知道如何打开这个程序,请我看上一篇(连接:nrf9160 做modem—— 连接云(接入方式MQTT) - 星辰_stars - 博客园 (cnblogs.com)

3、nrf9160网络设置

插入物联网卡,然后使用nordic工具LTM连接板子,复位一下,可以见到板子进入ready状态,就可以进行网络配置了,

接着顺序输入以下命令:

AT+CFUN=4
/*
0:关闭电源并存储。通过停用LTE和GNSS服务来禁用射频电路。
1-正常的模式。主动模式是LTE或GNSS,或两者都有
2:活动系统模式下的仅接收模式。
4:飞行模式,通过停用LTE和GNSS服务来禁用射*/ AT%XSYSTEMMODE=0,1,0,0
/**设置NB网络**/ AT%XEPCO=0
/*设置使用PCO
0:使用 PCO
1:使用 ePCO*/ AT+CEREG=5
/*开启modem*/ AT+CFUN=1
/*开始联网*/

运行完成后检查一下是否连网成功

AT+CGATT
? /*返回
1:为联网成功
*/

运行后我得到如下返回,说明我可以进行接下来的步骤了

二、阿里云设备添加(无需CA认证的端口)

本次实验采用的是阿里云的免费物联网云进行测试,切接入方式为一机一密方式,在阿里云文档中的阿里云物联网平台有相关的文档介绍:

2.1、注册打开物联网平台

在浏览器中搜索阿里云(https://www.aliyun.com/?utm_content=se_1012440659),如果你没有注册过,请注册然后登陆,登陆后在搜索框中输入物联网平台,然后搜索。

在跳转的界面点击进入控制台

跳转到如下界面,点击公共实例

在跳转的界面如下操作开始创建产品

2.2、创建物联网产品

在点击创建产品后,在产品创建界面创建自己的设备

1)、设置名字为nrf9160_test

2)、选择所属类别

你可以根据自己的需要选择标准品类,或者自定义,我本次选择标准品类,然后选择任意一个类型

3)、节点类型

这里必选选择直连设备

4)、连网与数据

联网选择蜂窝,数据必须为ICA的JSON格式

5)、认证方式

选择为设备秘钥方式

完整设置如下,然后点击确认:

在产品界面我可以看到我们创建好的产品:

2.3、在产品中创建物联网设备

点击管理设备:

然后添加设备:

在DeviceName可以输入自己的设备名或者说nrf9160新品的IMEI码,

由此添加完成云端设备

同意的方式在创建一个设备。

然后我点击产品界面,nrf9160_test产品的查看,发布一下我们的产品

最后可以启用一下我们的设备:

三、云连接(发布与消息订阅)

3.1、参数转化获取

阿里云链接是需要设备名,密码和Url以及端口号的,所以链接命令也需要获得这些东西,但是要利用阿里云的网页工具处理一下,否则是无法链接的,这工具可以从下列工具进入:阿里云参数小工具 (lovemcu.cn),或者从相关文档给出的链接直接进入:

然后需要获得刚刚的设备参数去获得MQTT链接的5个参数。

现在我需要获取我云端设备信息,方法如下,然后就可以获得设备信息

把获得的信息粘贴到参数工具中,生成MQTT链接参数,并把这些参数记录下来

3.2、连接阿里云

SLM历程需要用串口AT指令去控制,可以在官网找到相关的控制命令,官网链接:nRF9160: Serial LTE modem — nRF Connect SDK 1.8.0 documentation (nordicsemi.com),点击MQTT命令,会看到关于链接订阅,推送的命令。

相关参数在 nrf9160 做modem—— 连接云(接入方式MQTT) - 星辰_stars - 博客园 (cnblogs.com)和官方网站中都有介绍,如果有不理解的地方建议去看一下

1)、连接阿里云

命令(参数需要替换):

AT#XMQTTCON=1,"MyMQTT-Client-ID","","","mqtt.server.com",1883

然后看阿里云设备端,我们的设备已经在线了

2)订阅

在产品的查看中找到一个具有订阅权限的Topic,我们订阅一下

订阅命令:

AT#XMQTTSUB="/a1mFSSqdxdC/${deviceName}/user/get",0
//红色部分要替换为创建设备时的名字
  • 0- 最低的服务质量。已发布的消息不需要确认接收。

  • 1- 中等服务质量。如果已发布的消息需要确认接收,则允许发布重复的消息。

  • 2- 最高的服务质量。接收的确认是预期的,消息应该只发布一次。

  • 该值为整数。它可以假定以下值:<evt_type>

    • 2- 已收到有关客户端订阅的主题的发布事件的通知。

    • 7- 确认订阅请求。

  • 该值为整数。它可以假定以下值:<result>

    • 0- 指示确认连接请求的值。

    • 负值 - 指示失败原因的错误代码

然后再阿里云设备端的Topic可以看到订阅列表已经产生了

然后发布一下消息

可以在我们终端看到如下信息,订阅成功:

nrf9160做modem——测试连接阿里云的更多相关文章

  1. nrf9160做主控连接阿里云——(mqtt_simple例程)

    简介:基本每一个云都支持MQTT,这种轻量级协议在数据量不大的应用上是一个很好的选择.上一篇博客使用SLM例程去连接了阿里云,本次使用mqtt_simple去连接云进行测试,关于一些已近在前面文章中演 ...

  2. nrf9160 做modem—— 连接云(接入方式MQTT)

    今天测试把nrf9160作为modem的例程Serial LTE Modem程序(后面简称slm),何为做modem,通俗来说就是将nrf9160作为无线模块,主控由其余MCU做,主控通过AT命令控制 ...

  3. jdbc连接阿里云服务器上的MySQL数据库 及 数据库IP限制

    问题1:Jdbc 如何连接阿里云服务器上的MySQL数据库? 解决: 上截图: 其中IP是阿里云服务器的公网IP地址. 问题2:   刚开始接手开发的时候,使用Navicat连接阿里云服务器上的数据后 ...

  4. 阿里云物联网平台: Android 连接阿里云物联网平台

    说明 这节是是为下一节做铺垫的 只要是按照我提供的学习路线一节一节的认认真真学过来的,这节就十分的简单 有了前两节的基础,这节呢咱让Android 连接阿里云物联网平台 使用这节的代码  https: ...

  5. 使用MQTTBox连接阿里云平台

    这篇只做一个简单的介绍,和上一篇没有根本的区别.只是就两个客户端的差异介绍一下. 一.需要参考的内容: 使用MQTT.fx连接阿里云平台: https://www.cnblogs.com/mhtc/p ...

  6. FineReport如何用JDBC连接阿里云ADS数据库

    在使用FineReport连接阿里云的ADS(AnalyticDB)数据库,很多时候在测试连接时就失败了.此时,该如何连接ADS数据库呢? 我们只需要手动将连接ads数据库需要使用到的jar放置到%F ...

  7. 阿里云ECS连接阿里云Redis问题

    描述 项目之前的服务器使用Windows,Redis使用阿里云的云数据库Redis版,一切正常. 后来了更换了Linux,也配置好了Redis,但连接阿里云的Redis时却怎么也连接不上 原因 ECS ...

  8. 使用Navicat连接阿里云服务器上的MySQL数据库--转

    手把手教你如何正确连接阿里云服务器上的数据库: 1.首先打开Navicat,文件>新建连接>MySQL连接,其他的如一图所示. 2.因为是连接服务器上的MySQL,所以我们使用SSH连接, ...

  9. 使用sshtunnel实现python公网连接阿里云mongo服务器

    背景: 公司使用阿里云的云数据库MongoDB.基于安全原因考虑,阿里云MongoDB云数据库目前只支持从阿里云ECS上访问,无法通过公网直接访问,不方便用户在本地开发环境里直接进行测试. 阿里云官方 ...

随机推荐

  1. App切换到后台后如何保持持续定位?

    为了保护用户隐私,大多数应用只会在前台运行时获取用户位置,当应用在后台运行时,定位功能会被禁止.这就导致APP在后台或者锁屏时无法正常记录GPS轨迹,这对打车.共享出行.跑步等需要实时记录用户轨迹的应 ...

  2. 【AGC】如何快速部署Serverless Url缩短模板

    使用场景 Serverless短URL生成模板实现您将在云数据库服务中URL缩短的诉求.使用此模板后,仅需在云数据库服务侧配置长URL值.Serverless短URL生成模板会在后台与Bitly AP ...

  3. 「2020-2021 集训队作业」Yet Another Linear Algebra Problem(行列式,Binet-Cauchy 公式)

    题面 出题人:T L Y \tt TLY TLY 太阳神:Tiw_Air_OAO 「 2020 - 2021 集 训 队 作 业 」 Y e t A n o t h e r L i n e a r A ...

  4. 浅析websocket的基本应用spring boot + vue +C# + WPF

    1.基本概念 首先websocket是基于H5的一种通信.在网页中如果定时获取服务器端的实时数据,我们常采用long poll 和ajax轮询的方式.但是在轮询过程中,由于根本没有新数据的改变,而造成 ...

  5. 分布式协同AI基准测试项目Ianvs:工业场景提升5倍研发效率

    摘要:全场景可扩展的分布式协同AI基准测试项目 Ianvs(雅努斯),能为算法及服务开发者提供全面开发套件支持,以研发.衡量和优化分布式协同AI系统. 本文分享自华为云社区<KubeEdge|分 ...

  6. Java 多线程:锁(二)

    Java 多线程:锁(二) 作者:Grey 原文地址: 博客园:Java 多线程:锁(二) CSDN:Java 多线程:锁(二) AtomicLong VS LongAddr VS Synchroni ...

  7. 华南理工大学 Python第5章课后小测-1

    1.(单选)以下哪个函数的定义是错误的?(本题分数:2)A) def vfunc(a,b=2):B) def vfunc(a,b):C) def vfunc(a,*b):D) def vfunc(*a ...

  8. 《Java基础——break与continue用法详解》

    Java基础--break与continue用法详解       1. break语句: 规则: 1. 仅用于循环语句和switch语句当中,用于跳出循环. 2. 当只有一层循环时,则直接跳出循环,不 ...

  9. keycloak~资源的远程授权

    17.1远程资源授权准备 17.1.1认证和访问流程图 参考:http://www.zyiz.net/tech/detail-141309.html 17.1.2为用户指定角色 可以使用ROLE_US ...

  10. 点赞和取消点赞实现Redis缓存(只思路)

    思路:点赞.取消点赞 --> Redis --> (每两个小时)存到数据库(MySQL),所以就相当于每次查询或者存储都需要先经过Redis,而查询的目的是为了判断用户的点赞状态(已点赞o ...