4G模块(EC600N)通过MQTT连接华为云

目录

一、前言

二、EC600N模块使用

1.透传模式

2.非透传模式

3、华为云的MQTT使用教程:

三、具体连接步骤

1、初始化检测

2、打开MQTT客户端网络

3、创建产品

4、创建模型

5、注册设备

6、连接客户端到MQTT服务器

7、发布主题消息

8、发送消息

9、断开与MQTT服务器的连接

四、stm32处理串口数据


一、前言

最近在做一个小项目——宠物/儿童智能穿戴防丢失设备,这个项目主要是通过stm32单片机实时接收处理GPS模块(ATGM332D定位模组)数据信号,并且能够通过蓝牙接收相关信息,并且丢失后,能够通过4G模块或者短信模块将GPS的定位数据发送到华为云,当然也可以发送到其他云平台。

这篇文章是4G模块连接华为云,之前我写过一篇WIFI模块连接华为云的文章,链接如下,讲解的更加详细,重复的部分我就不写了。

esp8266WiFi模块通过MQTT连接华为云_esp mqtt 透传_洲洲不是州州的博客-CSDN博客

        做这个项目的时候,让我联想到了以前在网上看到别人做的——基于4G模块取快递的小车,可以实现在家操控小车超远距离控制小车,其实只要解决了4G模块的通信问题,好像我也可以复现试一试,后面有时间了我再做一个这个项目。

这里我有个疑问?刚开始我尝试过,在这个4G模块可以插上流量卡和SIM电话卡进行与基站的通信,我用的这个4G模块好像不能发送短信?很奇怪,为什么现在有的4G模块既可以进行4G网络通信也可以发送短信,我看了一下这个模块手册,我这个模块好像只能进行网络通信。有明白的读者可以帮我解答一下。

        因为这篇文章重点是解决4G模块连接华为云的问题,什么GPS通信、蓝牙模块什么的我这里就不写了,反正都是串口通信很简单,没必要浪费时间写这些,这里着重讲一下我调试4G模块的过程。

        由于是4G模块,肯定需要访问公网,不像我前面写的一篇文章中esp8266 WIFI模块既可以连接公网又可以连接私有网络(在同一个局域网下面),因为以前我在使用WIFI模块时,经常在同一个局域网下面,用网络调试助手就能查看接收到的数据。      所以刚开始,我尝试将底层数据通过4G模块上传到公网ip上,然后又去下载花生壳,尝试进行内网穿透,虽然后面也调试成功了,但是太麻烦了。刚开始没想起来还有各种各样云平台,简直是太方便了。

最终将数据上传到云端之后,想着能在手机端APP上实时发送和接收来自云端的信息,准备在微信小程序里或者APP上查看数据,奈何博主不会Java程序,不会自己做界面,还是太菜了,唉,所以就放弃了做APP界面的想法。

二、EC600N模块使用

模块支持透传模式和非透传模式。下面对两种模式分别进行说明。

1.透传模式

在透传模式下, AT 指令失效,用户给模块发 AT 指令或数据模块都会识别成数据
发给公网服务器。模块收到公网服务器的数据后自动将数据转发给用户。发送“+++”即可退出透传
模式。

2.非透传模式

非透传模式又称 AT 指令模式,在非透传模式下, AT 指令有效,用户给模块发
的所有数据模块都会当做 AT 指令处理。用户需要发送数据给公网服务器时,必须先发送数据发送指 令,发送完成后等收到正确返回消息才能发送数据,数据发送结束后模块将继续工作在 AT 指令模式。 模块收到公网服务器的数据后会将数据直接转发给用户或者给用户发送提示信息,等待用户使用 AT 指令读取模块收到的服务器发送过来的数据。
本次文章我采用的是:STM32+4G+非透传模式+华为云
注意:
1、核心板只能与公网服务器进行通信
2、建议先使用网络调试助手连接公网服务器,确保服务器与客户端数据交互正常

3、华为云的MQTT使用教程:

MQTT使用指导_设备接入 IoTDA_开发指南_设备侧开发_使用MQTT Demo接入_华为云 (huaweicloud.com)

三、具体连接步骤

1、初始化检测

握手测试  正常返回:OK
AT查询信号质量    正常返回:+CSQ:2-30,99  OK
AT+CSQ检测SIM卡是否插入   正常返回:+CPIN: READY  OK
AT+CPIN?查询网络的注册状态    正常返回: +CREG: 1,1  OK
AT+CREG?查询网络附着状态    正常返回: +CGATT: 1  OK
AT+CGATT?查询模块IMEI
AT+GSN查询卡号ICCID
AT+QCCID

2、打开MQTT客户端网络

        当上一步初始化检测通过后,然后注册好华为云之后,4G模块就可以连接云平台了。

具体命令如下:

格式:
AT+QMTOPEN=0,"自己的云地址",接入端口号示例:
AT+QMTOPEN=0,"5asddf42f3ad.st1.iotda-device.cn-north-4.myhuaweicloud.com",1883
这里的1883表示是MQTT

要查询自己的地址可以参考如下:

3、创建产品

4、创建模型

        当注册好产品后,就创建该产品的模型,在模型里面添加服务,每个服务下面新增属性,这个属性就是后面我们上传的数据了,后面我们上传数据时格式,要根据这个属性格式来。

5、注册设备

        上一步模型创建成功后,就可以注册自己实际设备了

6、连接客户端到MQTT服务器

        这一步特别容易出现连接不成功的现象,博主在自己连接过程中,因为各种原因导致连接失败,这时候需要检查自己云平台是否在运行状态,还需要仔细检查连接命令参数是否有误。

        上一步注册设备完成后,进入设备查看MQTT连接的参数

具体命令如下:

格式:
AT+QMTCONN=0,"ClientId","Username","Password"示例:
AT+QMTCONN=0,"65681c99e585c81787ad402c1_ec600n_device_0_0_2023112512","67856c99e585c81787ad402c1_ec600n_device","855262821333124bf520f4674ae18d4dd2709239dddfda27c60e12c71725d90f"

7、发布主题消息

这一步可以参考我之前写过的这篇文章:esp8266WiFi模块通过MQTT连接华为云_esp mqtt 透传_洲洲不是州州的博客-CSDN博客

具体命令如下:

格式:
AT+QMTPUB=0,0,0,0,"$oc/devices/设备ID/sys/properties/report"
示例:
AT+QMTPUB=0,0,0,0,"$oc/devices/6561c99e585c81787ad402c1_ec600n_device/sys/properties/report"

如果返回 “>” ,就可以开始发送我们自己的数据了。

8、发送消息

这里消息格式的json格式的,这个是我们之前创建设备时自己选择的。

具体命令如下:

格式:
{"services": [{"service_id": "之前创建的服务名称","properties": {"服务的属性1": 57,"服务的属性2": 60},"event_time":"20211112T120000Z"}]}示例:
{"services": [{"service_id": "Data","properties": {"value1": 57,"value2": 60},"event_time":"20211112T120000Z"}]}

注意:发送完消息之后,一定要发送内容结束符1A ,否则云平台显示不了上传的数据。

9、断开与MQTT服务器的连接

命令如下:

AT+QMTDISC=0

四、stm32处理串口数据

        这里就不用写太多了,主要想法是采用串口空闲中断+结构体处理数据,具体项目源码可私信我获取。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/172026.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis面试题:Redis的数据过期策略有哪些?

目录 面试官:Redis的数据过期策略有哪些 ? 惰性删除 定期删除 面试官:Redis的数据过期策略有哪些 ? 候选人: 嗯~,在redis中提供了两种数据过期删除策略 第一种是惰性删除,在设置该key过期时间后,我们…

Stm32CubeMx生成代码提示缺少“core_cm3.h“

Stm32CubeMx生成代码提示缺少"core_cm3.h" 1.原因分析 1.1问题根源 在我们使用本地解压的方法去安装固件包,但是找错了要下载的固件包😊.在你点击进入下载页面之后,能看到一共有两个下载链接,其中上面的是补丁包,而第二个才是我们应该要下载的固件包 当…

【Web-Note】 JavaScript概述

JavaSript基本语法 JavaSript程序不能独立运行&#xff0c;必须依赖于HTML文件。 <script type "text/javascript" [src "外部文件"]> JS语句块; </script> script标记是成对标记。 type属性&#xff1a;说明脚本的类型。 "text/jav…

王者农药小游戏

游戏运行如下&#xff1a; sxt Background package sxt;import java.awt.*; //背景类 public class Background extends GameObject{public Background(GameFrame gameFrame) {super(gameFrame);}Image bg Toolkit.getDefaultToolkit().getImage("C:\\Users\\24465\\D…

【数据分享】我国12.5米分辨率的坡向数据(免费获取)

地形数据&#xff0c;也叫DEM数据&#xff0c;是我们在各项研究中最常使用的数据之一。之前我们分享过源于NASA地球科学数据网站发布的12.5米分辨率DEM地形数据&#xff01;基于该数据我们处理得到12.5米分辨率的坡度数据、12.5米分辨率的山体阴影数据&#xff08;均可查看之前…

【Hadoop】分布式文件系统 HDFS

目录 一、介绍二、HDFS设计原理2.1 HDFS 架构2.2 数据复制复制的实现原理 三、HDFS的特点四、图解HDFS存储原理1. 写过程2. 读过程3. HDFS故障类型和其检测方法故障类型和其检测方法读写故障的处理DataNode 故障处理副本布局策略 一、介绍 HDFS &#xff08;Hadoop Distribute…

Linux的基本指令(三)

目录 前言 echo指令&#xff08;简述&#xff09; Linux的设计理念 输出重定向操作符 > 追加输出重定向操作符 >> 输入重定向操作符 < 补充知识 学前补充 more指令 less指令 head指令 tail指令 查看文件中间的内容 利用输出重定向实现 利用管道“ |…

大数据基础设施搭建 - Hive

文章目录 一、上传压缩包二、解压压缩包三、配置环境变量四、初始化元数据库4.1 配置MySQL地址4.2 拷贝MySQL驱动4.3 初始化元数据库4.3.1 创建数据库4.3.2 初始化元数据库 五、启动元数据服务metastore5.1 修改配置文件5.2 启动/关闭metastore服务 六、启动hiveserver2服务6.1…

Docker搭建个人网盘NextCloud并接入雨云对象存储的教程

雨云服务器使用Docker搭建私有云盘NextCloud并接入雨云对象存储ROS的教程。 NextCloud简介 NextCloud由原ownCloud联合创始人Frank Karlitschek创建的&#xff0c;继承原ownCloud的核心技术又有不少的创新。在功能上NextCloud和ownCloud差不多&#xff0c;甚至还要丰富一些&a…

从微软Cosmos DB浅谈一致性模型

最近回顾了微软的Cosmos DB的提供一致性级别&#xff0c;重新整理下一致性模型的相关内容。 0. Cosmos DB Cosmos DB&#xff08;Azure Cosmos DB&#xff09;是由微软推出的一个支持多模型、多 API 的全球分布式数据库服务。它旨在提供高度可扩展性、低延迟、强一致性和全球…

Vite -构建优化 - 分包策略 + 打包压缩

什么是分包策略 分包策略 就是把不会常规更新的文件&#xff0c;单独打包处理。问 &#xff1a;什么是不会常规更新的文件&#xff1f; 答 &#xff1a; 就是基本上不会改的文件&#xff0c;比如我们引入的第三方的依赖包&#xff0c;例如 lodash工具包&#xff0c;这些工具包…

AI算法中的模型量化岗是做什么的

今天介绍一个在 AI 算法领域比较常见而且很重要的岗位——模型量化岗。 按惯例&#xff0c;先从某聘上截图一个量化工程师的招聘信息。 只看与量化相关的词&#xff0c;基本涉及到了量化精度、模型结构、算法这些关键词&#xff0c;下面来介绍一下这个岗位。 1、先看下什么是模…

An example of a function uniformly continuous on R but not Lipschitz continuous

See https://math.stackexchange.com/questions/69457/an-example-of-a-function-uniformly-continuous-on-mathbbr-but-not-lipschitz?noredirect1

五大自动化测试的 Python 框架

1、Selenium: Selenium 是一个广泛使用的自动化测试框架&#xff0c;用于测试Web应用程序。它支持多种浏览器&#xff0c;并通过模拟用户在浏览器中的操作来进行测试。Selenium 的 Python 客户端库是 Selenium WebDriver&#xff0c;它提供了一组API来编写测试脚本&#xff0c…

ElasticSearch02

ElasticSearch客户端操作 ElasticSearch 版本&#xff1a;7.8 学习视频&#xff1a;尚硅谷 笔记&#xff1a;https://zgtsky.top/ 实际开发中&#xff0c;主要有三种方式可以作为elasticsearch服务的客户端&#xff1a; 第一种&#xff0c;使用elasticsearch提供的Restful接口…

前端学习--React(4)路由

一、认识ReactRouter 一个路径path对应一个组件component&#xff0c;当我们在浏览器中访问一个path&#xff0c;对应的组件会在页面进行渲染 创建路由项目 // 创建项目 npx create router-demo// 安装路由依赖包 npm i react-router-dom// 启动项目 npm run start 简单的路…

小程序项目:springboot+vue基本微信小程序的电子书阅读器小程序

项目介绍 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时…

ArcGIS制作广场游客聚集状态及密度图

文章目录 一、加载实验数据二、平均最近邻法介绍1. 平均最近邻工具2. 广场游客聚集状态3. 结果分析三、游客密度制图一、加载实验数据 二、平均最近邻法介绍 1. 平均最近邻工具 “平均最近邻”工具将返回五个值:“平均观测距离”、“预期平均距离”、“最近邻指数”、z 得分和…

黑马点评Redis笔记

黑马点评Redis笔记 Redis基础篇&#xff1a;https://cyborg2077.github.io/2022/10/21/RedisBasic/ Redis实战篇&#xff1a;https://cyborg2077.github.io/2022/10/22/RedisPractice/ 一、手机号验证码注册登录 RandomUtil 生成定长随机数列 String code RandomUtil.ran…

4.一维数组——用数组处理求Fibonacci数列前20项

文章目录 前言一、题目描述 二、题目分析 三、解题 程序运行代码 四、结果显示 前言 本系列为一维数组编程题&#xff0c;点滴成长&#xff0c;一起逆袭。 一、题目描述 用数组处理求Fibonacci数列前20项 二、题目分析 前两项&#xff1a;f[20]{1,1} 后18项&#xff1a;for(…