提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
**
STM32+AIR724UG模块利用EDP协议连接ONENET云平台(只适用于多协议接入中EDP接入)
**
源码链接
https://download.csdn.net/download/qq_52487591/89578705
前言
软硬件条件:已创建的ONENET云平台EDP设备、STM32F103系列开发板一块、AIR724UG模块、物联网卡一张
合宙的AIR724UG模块支持DTU指令和AT指令。DTU指令有着方便快捷易开发的优势,但有的时候我们想要将STM32和AIR724UG模块结合起来,利用AT指令连接到云平台,完成相应的物联操作。网上已有的免费资源很少,因毕业设计需要,研究一段时间后,成功解决该问题,故撰写此篇博客进行分享交流。
一、AIR724UG模块
AIR724UG模块是一款高性能的4G LTE无线通信模块,专为满足现代物联网应用的高速数据传输需求而设计。它结合了先进的4G LTE技术,提供了快速、可靠的无线连接,使得设备能够在各种环境中实现远程访问和数据交换。
二、创建云平台设备
ONENET云平台在这一年内频繁进行技术架构更新,许多原有的功能已经消失。本项目依托于多协议接入平台开发,网上已有很多教程,故不再赘叙。值得注意的是,多协议开发平台从今年上半年已经停止新增协议和设备,所以没有创建设备的同学可以直接划走,不用继续交流学习。
三、需要修改的内容
四、需要的AT指令
_Bool NET_DEVICE_Init(void)
{
switch(netDeviceInfo.initStep)
{
case 0:
printf("STA Tips: AT\r\n");
if(!NET_DEVICE_SendCmd("AT\r\n","OK")) //握手测试
netDeviceInfo.initStep++;
delay_ms(150);
NET_DEVICE_ClrData();
netDeviceInfo.initStep++;
break;
case 1:
printf("STA Tips: AT+CPIN?\r\n");
if(!NET_DEVICE_SendCmd("AT+CPIN?\r\n", "+CPIN: READY")) //确保SIM卡PIN码解锁,返回READY,表示解锁成功
netDeviceInfo.initStep++;
break;
case 2: //自动判断卡类型
if(!NET_DEVICE_SendCmd("AT+CREG?\r\n", "0,1")) //确认网络搜索成功,
netDeviceInfo.initStep++;
break;
case 3:
printf("STA Tips: AT+CSQ\r\n");
if(!NET_DEVICE_SendCmd("AT+CSQ\r\n","OK")) //查询信号强度,OK
netDeviceInfo.initStep++;
break;
case 4:
printf("STA Tips: AT+CGREG?\r\n"); //检查网络注册状态
if(!NET_DEVICE_SendCmd("AT+CGREG?\r\n","OK"))
netDeviceInfo.initStep++;
break;
case 5:
printf("STA Tips: AT+CGATT? \r\n");
if(!NET_DEVICE_SendCmd("AT+CGATT? \r\n","OK")) //查询当前GPRS附着状态
netDeviceInfo.initStep++;
break;
case 6:
printf("STA Tips: AT+CIPMODE=0\r\n"); //设置为非透传
if(!NET_DEVICE_SendCmd("AT+CIPMODE=0\r\n","OK"))
netDeviceInfo.initStep++;
break;
case 7:
printf("STA Tips: AT+CSTT=\"CMNET\"\r\n");
if(!NET_DEVICE_SendCmd("AT+CSTT=\"CMNET\"\r\n","OK")) //设置移动卡的APN
netDeviceInfo.initStep++;
break;
case 8:
printf("STA Tips: AT+CIICR\r\n");
if(!NET_DEVICE_SendCmd("AT+CIICR \r\n","OK")) //激活移动场景
netDeviceInfo.initStep++;
break;
case 9:
printf("STA Tips: AT+CIFSR\r\n");
if(NET_DEVICE_SendCmd("AT+CIFSR\r\n","ERROR")) //查询分配的IP地址
netDeviceInfo.initStep++;
break;
case 10:
printf("STA Tips: AT+CIPHEAD=1\r\n");
if(!NET_DEVICE_SendCmd("AT+CIPHEAD=1\r\n","OK")) //显示IP头
netDeviceInfo.initStep++;
break;
case 11:
printf("STA Tips: AT+CIPSTART=\"TCP\",\"183.230.40.39\",876\r\n");
if(!NET_DEVICE_SendCmd("AT+CIPSTART=\"TCP\",\"183.230.40.39\",876\r\n","CONNECT OK")) //连接平台
{
Led0_Set(GPIO_OFF);
netDeviceInfo.initStep++;
}
break;
case 12:
printf("STA Tips: AT+CIPSTATUS\r\n");
if(!NET_DEVICE_SendCmd("AT+CIPSTATUS\r\n", "CONNECT OK")) //检查连接状态
netDeviceInfo.initStep++;
else
{
NET_DEVICE_SendCmd("AT+CIPCLOSE\r\n", "CLOSE OK");
delay_ms(100);
NET_DEVICE_ReConfig(11);
}
break;
default:
break;
}
if(netDeviceInfo.initStep == 13)
return 0;
else
return 1;
}