本次实验是采用SIM7600CE 4G cat4 模块进行操作的,本模块支持GNSS定位功能。也可以采用别的4G模块,只要支持TCP传输就行。本模块支持的AT命令相当强大,拥有TCP&UDP命令集,HTTP命令集,MQTT命令集。本模块虽然已经支持了MQTT功能,但是我们在实际研发项目中,为了保持项目的可移植性和兼容性,通常不会使用模块自带的MQTT命令集,而是用代码实现MQTT上层功能,底层再调用模块的TCP AT命令集。

一、MQTT简介

MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。它是IBM 1999年发布的一个用于物联网的协议.MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。

在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。



MQTT设计思想是开放、简单、轻量、易于实现。这些特点使它适用于受限环境。

例如,但不仅限于此:

网络代价昂贵,带宽低、不可靠。

在嵌入设备中运行,处理器和内存资源有限。

该协议的特点有:

  1. 使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合;
  2. 对负载内容屏蔽的消息传输;
  3. 使用 TCP/IP 提供网络连接;
  4. 有三种消息发布服务质量:
  5. 小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量;
  6. 使用 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制。

二、ONENET平台

OneNET是由中国移动打造的物联网开放平台。平台能够帮助开发者轻松实现设备接入与设备连接,快速完成产品开发部署,为智能硬件、智能家居产品提供完善的物联网解决方案。

OneNET具备如下功能:

  1. 专网专号:中国移动基于物联网特点打造的专业化网络通道,提供“云-管-端”一体化的智能管道和支撑系统,支持工业级、车规级的专网卡和通信模组;
  2. 海量连接:基于多类型标准协议和API开发满足海量设备的高并发快速接入;
  3. 在线监控:实现终端设备的监控管理、在线调试、实时控制功能;
  4. 数据存储:基于分布式云存储、消息对象结构、丰富的数据调用接口实现数据高并发读、写库操作,有效保障数据的安全;
  5. 消息分发:将采集的各类数据通过消息转发、短彩信推送、APP信息推送方式快速告知业务平台、用户手机、APP客户端,建立双向通信的有效通道;
  6. 能力输出:汇聚中国移动短彩信、位置服务、视频服务、公有云等核心能力,提供标准API接口,缩短终端与应用的开发周期;
  7. 事件告警:打造事件触发引擎,用户可以基于引擎快速实现应用逻辑编排;
  8. 数据分析:基于Hadoop等提供统一的数据管理与分析能力。

三、如何接入OneNet

用户要接入 OneNet,

  1. 首先要在 OneNet 平台上进行注册用户、创建设备等一系列准备工作,
  2. 然后要通过网络和 OneNet 服务器建立TCP 连接,
  3. 最后将用户数据按照一定的协议(比如:EDP、RestFul API,MQTT)打包上传至 OneNet 平台,从而实现设备终端接入。

    用户注册:
  4. 在接入 OneNet 之前,需在平台网站注册用户账户,登陆网址:http://open.iot.10086.cn/,显示如下界面:

如上图:点击右上角进行注册.



注册完成后,进行登录,如下:



如上图所示,点击MQTT物联网套件:



如上图所示,选择多协议接入:



如上图,点击添加产品,onenet平台MQTT协议框架下分为产品ID和设备ID,可以建立多个不同的产品,每个产品拥有不同的设备,设备以ID号进行区分。



如上图所示进行选择,接下来还有操作系统选择linux,网络运营商选择移动,因为模块使用的移动的usim卡,可以根据自己模块卡类型进行选择。



如上图所示,再点击添加设备:



点击右上角添加设备,



点击添加,



如上图所示,产品添加成功后的截图,显示为离线状态,当4G模块有数据上传的时候,就会显示为在线。

四、单片机&4G模块与ONENET服务器通信

下面讲解一下如何用单片机通过串口AT命令驱动4G模块与ONENET服务器进行连接,单片机采用STM32F103RBT6,开发环境采用MDK5.

如上图所示,606923821表示设备IDPZqqtD0O=5lNOex4NshJn0RLflY= 表示API KEY

如上图,点击查看,输入手机号发送验证码即可获得,357092表示产品ID,上图的产品ID是424250,可根据自己的情况进行填写。

CAT11表示鉴权信息,鉴权信息可以在设备列表-设备详情进行获取。183.230.40.3, 6002 表示onenet平台的服务器和端口号,有了这些信息就可以用4G模块和自己创建的产品进行通信了。

如下图所示:既可观察设备的上下线情况,以及设备的数据







五、资料获取及硬件

  1. 后台回复 mqtt 即可获得对应的源代码功能。

  2. 文中单片机 STM32F103RBT6 可以自行到某宝搜索,

    推荐如下:

  3. 用的SIM卡可以用手机卡也可以用物联网卡,

  4. 4g模块通用的模块即可。

如何使用4G模块通过MQTT协议传输温湿度数据到onenet的更多相关文章

  1. 4G DTU模块带有MQTT协议吗?

    DTU作为一种通讯设备,其应用场合十分广泛.从广义上讲,在进行通信时,传输数据链路两端负责发送数据信息的模块单元都称之为DTU,在它的作用下对所传信息格式转换和数据整理校验.在狭义上的定义,DTU一般 ...

  2. ARDUINO MEGA2560 经过ESP8266 WIFI模块上传温湿度数据到 OneNet 服务器

    简述 原来写了一个C++的wifi库但是发现用c++ arduino这小身板有点扛不住,代码比较大,使用String类型数据处理速度慢,而且很容易无缘无故跑飞.而且封装成库后使用还需要修改arduin ...

  3. (四) 天猫精灵接入Home Assistant-ESP-WIFI模块通过mqtt协议接入HASS

    总过程 1 ESP8266上电后,初始化 连接MQTT服务器 发布自身配置信息----hass自动发现该设备 订阅hass的命令话题---接收命令 发布hass的状态话题---返回自身状态 2 ESP ...

  4. http协议传输二进制数据以及对输入流(php://input)和http请求的理解

    1.index.php <?php $data=file_get_contents('./a.jpg'); $opts = array('http' => array( 'method' ...

  5. 什么是4G模块 4G模块的工作原理及特点

    什么是4G模块 4G模块,也被叫做4G通信模块或4G DTU模块,他是物联网行业具有4G通信功能的一种产品,通过4G模块,我们可以实现工业设备数据通过无线4G网络传输到远端控制中心,并从控制中心通过4 ...

  6. 使用MQTT协议的4G DTU模块具有什么优势

    什么是MQTT协议 要了解使用MQTT协议的4G DTU模块具有哪些优势,首先我们需要了解什么是MQTT协议,MQTT协议最早是IBM开发的一个即时通讯协议,它的主要是为大量计算能力有限且工作在低带宽 ...

  7. 小程序入门 MQTT物联网协议 publish 和订阅subscribe onenet 阿里云 百度云 基于GPRS模块(SIM800C/SIM900A/SIM868等)和STM32主控芯片

    本文基本公开了如何移植MQTT物联网协议到STM32平台上,并结合GPRS模块(SIM800C/SIM900A/SIM868等)实现publish和订阅topic从onenet,阿里云,百度云等.如果 ...

  8. 转战物联网·基础篇09-选择MQTT协议还是CoAP协议

      前面章节介绍过,MQTT协议和CoAP协议都是物联网中比较流行的协议,都对传输量做了很大的精简,传输开销小,以适应物理网的网络环境.   XMPP协议也有人说是适合物联网通信的,但它是基于XML, ...

  9. 云巴:基于MQTT协议的实时通信编程模型

    概要 有人常问,云巴实时通信系统到底提供了一种怎样的服务,与其他提供推送或 IM 服务的厂商有何本质区别.其实,从技术角度分析,云巴与其它同类厂商都是面向开发者的通信服务,宏观的编程模型都是大同小异, ...

  10. 转:XMPP协议、MQTT协议、HTTP协议、CoAP协议的基本比较

    一.先看下相关国外的专业数据对四大协议的比较: Protocol                                    CoAP                         XMP ...

随机推荐

  1. detect.py - yolov5master nvidia jetson agx xavier for mask with UART

    import argparse import time from pathlib import Path import cv2 import torch import torch.backends.c ...

  2. 算法金 | Transformer,一个神奇的算法模型!!

    大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 抱个拳,送个礼 在现代自然语言处理(NLP)领域,Transformer 模型的出现带 ...

  3. JVM(Java虚拟机)整理(二):排错调优

    前言 上一篇内容:JVM(Java虚拟机)整理(一) Java 内存模型(JMM)详解 声明:本章节转载自 Info 上 深入理解Java内存模型.PDF文档下载 深入理解Java内存模型[程晓明] ...

  4. P6626 题解

    有一个很暴力的解法,就是以询问点为根 DFS. 考虑优化,我们考虑优化换根. 当根节点从父亲移动到它的某个孩子时,孩子的子树内所有点深度减 \(1\) 其余点深度加 \(1\). 同理,当根节点从某个 ...

  5. VUE手稿1

  6. 新版SpringBoot-Spring-Mybatis 数据库相关配置

    application.properties server.port=8081 # ========================数据库相关配置===================== sprin ...

  7. 3.1 Y86-64指令集体系结构

    程序员可见的状态 这里的程序员即可以是用汇编代码写程序的人,也可以是产生机器级代码的编译器.程序员可见的状态如下,有15个程序寄存器(%rax,%rbx等),三个一位的条件(ZF,OF,SF) ,程序 ...

  8. CSS+JS 实现动态曲线进度条

    由于系统UI风格升级,产品童鞋和UI童鞋总是想要搞点儿事情出来,项目页面上的进度条从直线变成了曲线,哈哈,好吧,那就迎难而上 实现效果: 1.简单搞一搞 CSS , 此处代码有折叠 .process ...

  9. SQL SERVER根据数据表的某个栏位查询另一个数据表符合条件的某个栏位的值,如果多行则合并为一张字符串形式

    SQL SERVER根据数据表的某个栏位查询另一个数据表符合条件的某个栏位的值,如果多行则合并为一张字符串形式 要在 SQL Server 中根据一个数据表的某个列查询另一个数据表符合条件的某个列的值 ...

  10. Day 10 - 动态规划与树状数组

    动态规划基础 主要介绍动态规划的基本思想,以及动态规划中状态及状态转移方程的设计思路,帮助各位初学者对动态规划有一个初步的了解. 引入 [IOI1994] 数字三角形. 给定一个 \(r\) 行的数字 ...