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
热门推荐
什么是VPN:原理、应用及安全使用指南
刘备之死:一代英雄的终结
怎么理解期权ETF是什么意思?
洗洁精:家庭清洁的必备助手
亿万电商张白鸽:出生被遗弃垃圾桶,被老汉拾荒养大,24年后反哺
清除 Android 手机上的应用程序缓存的指南
安卓手机系统缓存清理指南:提高流畅性的关键步骤
基于矢量场法的无人机自适应路径跟踪研究
淞沪会战︱真实的“德械师”:火力远不及日军,但意志坚定
抗战时期德械师究竟是什么样的部队?只有轻武器,远不算王牌!
史上十大经典后宫动漫推荐
竹林七贤:魏晋风骨的自由象征
104%的额外关税来了,对跨境电商有什么影响?
手机如何测网速WiFi网速
揭秘历史典韦:实力与传说的辨析
如何更好地享受邻里互动和社区生活?比邻的玩法及对社区关系的影响有哪些?
焊缝的质量控制在生产中分别如何落实?
Excel工作表密码保护设置指南
赵丽颖起诉咖啡品牌"半糖攻势"侵权,索赔51万!公司竟已"跑路"?
如何检查电脑硬件是否有故障?
孕妇心理一定要重视!!
珠三角“三季报”:分化的8万亿,谁领跑谁承压?
西北方向在算命中意味着什么?从风水到命理的全方位解读
食道粘膜损伤怎么修
电脑键盘选购指南:从品牌到科技特点全方位解析
2025年UI设计的5大新趋势,你必须知道!
互征关税对我国经济、行业有多大影响?
智能制造知识一文了解
44LN材质的硬度标准
《沙尘暴》:再现西北悬疑美学魅力