ML307A模组连接ONENET平台(AT指令步骤教程)
创作时间:
作者:
@小白创作中心
ML307A模组连接ONENET平台(AT指令步骤教程)
引用
CSDN
1.
https://m.blog.csdn.net/xiewengeng/article/details/141683727
本文将详细介绍如何使用ML307A模组连接OneNET平台,并通过AT指令实现数据的发送和接收。文章将从缓存模式配置、MQTT连接设置、数据订阅等多个方面进行讲解,帮助开发者快速掌握这一过程。
废话不多说,先上连接源码
这里配置的为缓存模式,是指在4G模组接收到发送过来的数据时候可以将数据放入模组的缓存区,在需要数据的时候区进行读取再解析,这样在单片机执行其他操作时候也不会造成数据的丢失,在使用如下AT指令步骤便可以连接上ONENET,在云平台即可看到设备在线‘
前提设备ID,产品ID,token这些不能出错,以下代码使用循环三次发送,防止一次设置不成功,只有有接收到OK即跳出当前循环。
for (int attempt_count = 0; attempt_count < 3; attempt_count++)
{
//连接到网络后必须要发送AT+MQTTCFG="clean",0,1(onenet要求clean参数必须是1)
buf_len = sprintf(str_buf, "AT+MQTTCFG=\"clean\",0,1\r\n"); // 清除会话
UART2_Send_String(str_buf,buf_len);
mdelay(50);
memset((void *)byRxBuf_2, 0, sizeof(byRxBuf_2));
UART2_Receive_String();
mdelay(1200);
if(strstr((const char *)byRxBuf_2,"OK"))//等待接收OK后退出
{
break;
}
}
//配置4G模组为接收缓存模式
for(int attempt_count=0;attempt_count<3;attempt_count++)
{
memset((void *)byRxBuf_2, 0, sizeof(byRxBuf_2));//清空UART2串口接收缓存
buf_len = sprintf(str_buf, "AT+MQTTCFG=\"cached\",0,1\r\n");//获取当前要发送的AT指令字符串缓存内容
UART2_Send_String(str_buf, buf_len); //UART2串口发送当前AT指令
mdelay(500); //延时等待
UART2_Receive_String(); //UART2串口接收数据
if(strstr((const char *)byRxBuf_2,"OK")) //UART2串口正确接收到4G模组返回的“OK”结果后退出当前循环查询操作
{
break;
}
}
//设置MQTT连接相关参数并连接服务器
for(int attempt_count=0;attempt_count<3;attempt_count++)
{
//获取当前要发送的AT指令字符串缓存内容(连接MQTT服务器客户端ID、账号、密码)
//示例:AT+MCONFIG=0,"mqtt.dgjiedan.com","18833","bzwmt","bz1122"
memset((void *)byRxBuf_2, 0, sizeof(byRxBuf_2));//清空UART2串口接收缓存
buf_len = sprintf(str_buf, "AT+MQTTCONN=0,\"%s\",%d,\"%s\",\"%s\",\"%s\"\r\n",MQTT_URL,MQTT_Port,MQTT_Imei,MQTT_Count,MQTT_Password);
UART2_Send_String(str_buf, buf_len); //UART2串口发送当前AT指令
mdelay(1000); //延时等待
UART2_Receive_String(); //UART2串口接收数据
if(strstr((const char *)byRxBuf_2,"OK")) //UART2串口正确接收到4G模组返回的“OK”结果后退出当前循环设置操作
{
break;
}
}
//订阅下发数据主题
for(int attempt_count=0;attempt_count<3;attempt_count++)
{
//示例:AT+MQTTSUB=0,"world",1,"hello",2(0:MQTT客户端标识符,范围:0~5;1、2:消息交付质量等级)
memset((void *)byRxBuf_2, 0, sizeof(byRxBuf_2));//清空UART2串口接收缓存
buf_len = sprintf(str_buf, "AT+MQTTSUB=0,\"$sys/%s/%s/thing/property/post/reply\",1\r\n",MQTT_Count,MQTT_Imei);//获取当前要发送的AT指令字符串缓存内容
UART2_Send_String(str_buf, buf_len); //UART2串口发送当前AT指令
mdelay(500); //延时等待
UART2_Receive_String(); //UART2串口接收数据
if(strstr((const char *)byRxBuf_2,"OK")) //UART2串口正确接收到4G模组返回的“OK”结果后退出当前循环查询操作
{
break;
}
}
数据的发布一定要注意格式问题!!!,长传数据不成功基本都是格式问题。
void ML307A_AT_MQTT_PUB(void)
{
//获取当前要发送的AT指令字符串缓存内容(加载需要上报的各个参数值及发布主题:mt_collect)
buf_len = sprintf(str_buf, "AT+MQTTPUB=0,\"$sys/%s/%s/thing/property/post\",0,0,0,0,\"\"temp2\":{\"value\":%d}\"\r\n",MQTT_Count,MQTT_Imei,99);
UART2_Send_String(str_buf, buf_len); //UART2串口发送当前AT指令
}
ML307A 模组简介
ML307A 是一款集成度高、体积小的物联网通信模组,支持多种无线通信协议,如 LoRa、NB-IoT 等。它具有低功耗、远程通信等特点,适用于多种物联网场景。
主要特性:
- 支持 LoRa 和 NB-IoT 等多种无线通信标准。
- 提供丰富的 GPIO 接口。
- 内置多种传感器支持。
关键接口:
- UART 接口:用于与微控制器或其他设备通信。
- GPIO 接口:可以连接外部传感器或执行器。
- 电源接口:用于供电。
OneNET 平台概述
OneNET 是中国移动推出的一款物联网开放平台,它提供了从数据采集、存储到分析的一站式解决方案。
主要功能:
- 设备管理:注册、监控设备状态。
- 数据存储与分析:收集设备数据,提供数据分析工具。
- 应用开发:支持 API 接口调用,方便开发者快速构建应用。
注册流程:
- 访问 OneNET 官网(https://open.iot.10086.cn/)。
- 使用手机号码或邮箱注册账号。
- 完善个人信息,包括企业或个人认证信息
连接AT指令步骤
有需要的可以联系要参考手册。
本文原文来自CSDN
热门推荐
消除噪音的10个方法,让你远离嘈杂环境
盲派命理:如何从四柱八字中解读“功”与“势”
“aj”词汇的多重含义及其在年轻人文化中的影响与象征意义
华中科技大学软件学院专硕深度解析:实力、考研、就业全攻略
《哪吒2》热映背后的供给效应?电影质量提升,产生显著的“供给创造需求”效应
属兔的出生年份表 属兔是哪年出生的
生肖属兔的出生年份?立春才是生肖划分的真正分界线
2025年杭州失业金领取标准及条件 失业人员每月可以领取多少钱?
吃宵夜也能好好睡
张家界森林公园自驾游怎么住:住宿推荐与路线攻略
公认的“省力跑法”:核心跑步法--“拔、提、送”
激光脱毛前如何正确刮毛?医生给出专业建议
二次元文化何以成为他们的"电子布洛芬"?
金牛座女生偏爱的穿搭风格解析
揭秘:姑姑这一称谓背后的亲情含义
形象顾问的技能要求一般包括哪些内容
缓解头疼的有效方法
晃头头疼是怎么回事
宝贝夜间的睡姿揭秘:趴睡的利与弊
世卫组织会费大涨20%,美国退出后资金缺口如何填补?谭德塞面临严峻考验!
“马力焦虑”究竟有没有必要,多大马力的汽车够家用代步 呢?
企业破产清算时,退休职工权益如何保护?
如何减少皱纹延缓衰老
在中国,实现财务自由需要多少钱?
互联网公司注册流程及成立条件详解
注册网络公司需要提交的材料有哪些
空调检修的常见问题
帕金森患者是否会出现睡眠障碍?
超市的免费塑料袋,别再扯回家用了!用错有损健康
欧冠淘汰赛打响!数据:皇马难逃德比战平局魔咒