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
热门推荐
重阳节为什么要赏菊花?
花语知多少?揭秘不同场合送花的艺术与禁忌
网络不良信息:青少年成长路上的“隐形杀手”
《劲舞团》不良内容曝光,专家:严重威胁青少年身心健康
安全驾驶,让你的车险保费不再飙升
交强险出险后,保费真的会涨吗?
闯红灯、超速后车险保费涨多少?
车险出险后,你的保费真的会涨这么多?
人教版二年级数学重点知识点大揭秘!
二年级上册英语练习册推荐:一课一练vs期末冲刺100分,哪个更适合?
甘草外敷:冬季皮肤病的天然良方
甘草面膜,护肤界的“美草”神器
经常嗜睡、疲乏、记忆力减退?医生:建议查查甲状腺
养肝就是“养命”,肝脏最爱的5样菜,建议每天吃点,养出好气色
关胜:从偷狗贼到大刀英雄的逆袭之路
《水浒传》里的关胜:军事才能大揭秘!
《水浒传》里的“关二爷”:关胜的英雄之路
张家界四日游打卡三大网红景点
探秘天门山:张家界最美打卡地
纽伦堡审判75周年:正义的审判与历史的警示
纳粹大屠杀如何重塑国际政治格局?
沪平盐城际铁路(浙江段)通过初步设计审查

人教版二年级数学期末复习攻略:重点知识点与解题技巧全解析
二年级阅读理解提升指南:从方法到技巧全解析
二年级娃如何轻松减压?
亲子合作:小学二年级趣味语文练习
冬季防寒必备:了解萘普生片的正确使用方法
月到中秋圆——诗词里的中国节
天目湖白茶:从南宋贡茶到国际舞台的传奇之旅
探访松岭头白茶的秘密花园