ML307A模组连接ONENET平台(AT指令步骤教程)

废话不多说,先上连接源码

这里配置的为缓存模式,是指在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 接口调用,方便开发者快速构建应用。

注册流程:

  1. 访问 OneNET 官网(https://open.iot.10086.cn/)。
  2. 使用手机号码或邮箱注册账号。
  3. 完善个人信息,包括企业或个人认证信息
连接AT指令步骤

有需要的可以联系要参考手册。

  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值