news 2026/4/23 20:43:07

C51_ML307C_4G

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C51_ML307C_4G

文章目录

  • 一、ML307C
  • 二、ML307C
    • 1、波特率
    • 2、注意事项
    • 3、模块测试
  • 三、ML307C串口调试
    • 1、TCP
    • 2、UDP
    • 3、PING
    • 4、DNS
  • 四、实例代码

一、ML307C

中移物联(比邻智联) ML307C是新一代小尺寸国产化Cat.1 无线通信模组,采用翱捷科技ASR1605 芯片平台,专为物联网应用设计,具备高集成度、低功耗和强大扩展性。
采用行业通用LCC+LGA 封装,可前向兼容ML307系列Cat.1模组,部分型号的外设接口。
ML307C可广泛应用于金融支付、定位追踪、电动两轮车、视频监控等领域。
官方资料: http://onemo10086.com/#/product/detail/729

二、ML307C

1、波特率

模组为自适应波特率模式时,无+MATREADY上报,串口需先输入AT命令,返回OK后可执行后续操作。
(多发送几次AT命令)

2、注意事项

每条AT命令执行完毕后,才能执行下一条命令,不能同时发送多条AT命令。
模组开机返回+MATREADY后,间隔至少2s才能执行AT+CFUN=0或AT+CFUN=1,AT+CFUN=[,]命令默认值为1。

3、模块测试

设备上电,无+MATREADY ,输入 AT,可看到返回信息。

三、ML307C串口调试

1、TCP

AT\r\n
AT\r\n
ATE0\r\n
AT+CPIN?\r\n
AT+CEREG?\r\n
//先尝试关闭0号socket,不需要判断返回
AT+MIPCLOSE=0\r\n
//使用0号socket连接TCP服务器, 服务器地址47.92.31.46(也可以填写域名,域名由于内部需要先DNS域名解析,所以需要等待约8S才可以连接), 服务器端口号 10002
AT+MIPOPEN=0,“TCP”,“112.125.89.8”,33927\r\n
//告诉模组我要使用0号socket发送5字节数据
AT+MIPSEND=0,5\r\n
等待模组返回 >
发送要发送的5字节数据: 11111 (也可以填写16进制数)
模块接收数据,假设0号socket接收到16字节
+MIPURC: “rtcp”,0,16,1111111111111111
//创建连接的时候还可以指定本地socket端口号
AT+MIPOPEN=0,“TCP”,“47.92.31.46”,10002,5,0,1000\r\n //指定本地端口号为1000

2、UDP

AT\r\n
AT\r\n
ATE0\r\n
AT+CPIN?\r\n
AT+CEREG?\r\n
//先尝试关闭0号socket,不需要判断返回
AT+MIPCLOSE=0\r\n
//使用0号socket连接UDP服务器, 服务器地址47.92.31.46(也可以填写域名), 服务器端口号 10002
AT+MIPOPEN=0,“UDP”,“47.92.31.46”,10002\r\n
//告诉模组我要使用0号socket发送5字节数据
AT+MIPSEND=0,5\r\n
等待模组返回 >
发送要发送的5字节数据: 11111 (也可以填写16进制数)
模块接收数据,假设0号socket接收到16字节
+MIPURC: “rudp”,0,16,1111111111111111

3、PING

AT+MPING=“www.baidu.com”\r\n
+MPING: 0,“2409:8C54:870:34E:0:FF:B024:1916”,16,60,49
[12:19:52.019]收←◆
+MPING: 0,“2409:8C54:870:34E:0:FF:B024:1916”,16,60,49
[12:19:52.099]收←◆
+MPING: 0,“2409:8C54:870:34E:0:FF:B024:1916”,16,75,49
[12:19:52.180]收←◆
+MPING: 0,“2409:8C54:870:34E:0:FF:B024:1916”,16,75,49
+MPING: “statistics”,4,0,60,75,67

4、DNS

AT+MDNSGIP=“www.baidu.com”\r\n
+MDNSGIP: “www.baidu.com”,“2409:8C54:870:34E:0:FF:B024:1916”,“2409:8C54:870:67:0:FF:B0C2:AD75”,“120.232.145.185”,“120.232.145.144”

四、实例代码

ML307C,TCP连接,并发送 “EST_ML307C”

#include<REGX52.H>#include<string.h>sbit LED1=P2^0;sbit LED2=P2^1;sbit LED3=P2^2;sbit LED4=P2^3;sbit LED5=P2^4;sbit LED6=P2^5;sbit LED7=P2^6;sbit LED8=P2^7;unsignedcharAT_OK_Flag=0;unsignedcharInData_OK_Flag=0;#defineSIZE12charbuffer[SIZE];// 串口中断======================================================voidUART_init()// 设置串行通信 本晶振为11.0592MHZ{TMOD=0x20;TH1=0xfd;TL1=0xfd;// 波特率9600SM0=0;SM1=1;// 串口工作方式1 10位异步REN=1;// 串口允许接收TR1=1;EA=1;ES=1;// 串口中断}voidUART_SendByte(unsignedcharByte)// 字节的发送{SBUF=Byte;while(TI==0);// 当数据发送完成时,TI会变为一TI=0;}voidUART_INTERRUPT()interrupt4{staticinti=0;// 静态变量,初始化1次chartmp;if(RI){// 中断函数中对接收中断的响应RI=0;// RI为接受中断数据标志位,接收完数据硬件置1,需要软件置0tmp=SBUF;if(tmp=='>'){InData_OK_Flag=1;}if(tmp=='+'||tmp=='O'||tmp=='L'){i=0;// 强制W字符为第一位}buffer[i++]=tmp;// 数据偏移}if(buffer[0]=='O'&&buffer[1]=='K'){// 连接服务器等OK返回值指令的判断AT_OK_Flag=1;memset(buffer,'\0',SIZE);}if(buffer[0]=='L'&&buffer[1]=='1'){// 指令L1灯亮LED1=0;memset(buffer,'\0',SIZE);}if(buffer[0]=='L'&&buffer[1]=='0'){// 指令L0灯灭LED1=1;memset(buffer,'\0',SIZE);}}// 延时函数======================================================voidDelay10us(unsignedchart)//@11.0592MHz{while(t--){unsignedchari;i=2;while(--i);}}voidDelay(unsignedintxms)//@12.000MHz{unsignedchari,j;while(xms){i=2;j=239;do{while(--j);}while(--i);xms--;}}// ML307C======================================================// ML307C发送AT指令// pbuf:AT指令,字符串格式,如:"AT"voidML307C_SendCmd(unsignedchar*pbuf){while(*pbuf)// 遇到空格跳出循环{UART_SendByte(*pbuf);pbuf++;}UART_SendByte('\r');// 回车UART_SendByte('\n');// 换行}// ML307C发送数据到APP// pbuf:数据voidML307C_SendData(unsignedchar*pbuf){while(*pbuf)// 遇到空格跳出循环{UART_SendByte(*pbuf);pbuf++;}}//ML307C模块TCP工作模式初始化voidML307C_TCPModeInit(void){UART_init();Delay(1000);LED1=0;ML307C_SendCmd("AT");while(!AT_OK_Flag);// OK返回值的标志位AT_OK_Flag=0;LED2=0;Delay(1500);ML307C_SendCmd("AT");while(!AT_OK_Flag);// OK返回值的标志位AT_OK_Flag=0;LED3=0;ML307C_SendCmd("ATE0");while(!AT_OK_Flag);// OK返回值的标志位AT_OK_Flag=0;LED4=0;ML307C_SendCmd("AT+CPIN?");while(!AT_OK_Flag);// OK返回值的标志位AT_OK_Flag=0;LED5=0;ML307C_SendCmd("AT+CEREG?");while(!AT_OK_Flag);// OK返回值的标志位if(AT_OK_Flag){LED8=0;// 点亮LED8灯,代表连接服务器初始化成功}}voidmain(){LED1=1;LED2=1;LED3=1;LED4=1;LED5=1;LED6=1;LED7=1;LED8=1;Delay(1000);ML307C_TCPModeInit();while(1){Delay(1000);ML307C_SendCmd("AT+MIPCLOSE=0");Delay(1000);ML307C_SendCmd("AT+MIPOPEN=1,\"TCP\",\"112.125.89.8\",34586");while(!AT_OK_Flag);// OK返回值的标志位AT_OK_Flag=0;ML307C_SendCmd("AT+MIPSEND=1,13");while(!InData_OK_Flag);// 可以输入字符串ML307C_SendData("TEST_ML307C\r\n");InData_OK_Flag=0;}}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 13:34:46

Zabbix监控系统入门:从零到一搭建企业级监控平台

监控系统的重要性&#xff1a;你的IT基础设施需要“守护者”当你的服务器数量从1台增加到10台、100台时&#xff0c;如何确保每一个系统都在正常运行&#xff1f;如何在问题发生前收到预警&#xff1f;如何在故障发生时快速定位问题根源&#xff1f;这就是监控系统存在的意义—…

作者头像 李华
网站建设 2026/4/23 12:14:07

利用Dify开源平台实现低代码RAG系统开发的完整指南

利用Dify开源平台实现低代码RAG系统开发的完整指南 在企业纷纷拥抱大模型的今天&#xff0c;一个现实问题摆在面前&#xff1a;如何让非算法背景的开发者也能快速构建出稳定、可维护的AI应用&#xff1f;尤其是面对知识库问答、智能客服这类依赖外部数据的场景&#xff0c;传统…

作者头像 李华
网站建设 2026/4/23 10:45:49

快速理解Driver Store Explorer对系统性能的影响方式

为什么你的C盘越来越慢&#xff1f;可能是驱动仓库在“吃”性能 你有没有遇到过这样的情况&#xff1a;一台原本流畅的Windows电脑&#xff0c;用着用着系统启动变慢了&#xff0c;新设备插上去老半天才识别&#xff0c;甚至C盘空间莫名其妙少了几个GB&#xff1f;很多人第一反…

作者头像 李华
网站建设 2026/4/23 12:10:11

Dify平台的在线协作编辑功能使用指南

Dify平台的在线协作编辑功能使用指南 在企业加速拥抱大模型的今天&#xff0c;一个现实问题日益凸显&#xff1a;如何让产品、运营和算法团队高效协同&#xff0c;快速把AI想法变成可运行的应用&#xff1f;传统的开发模式中&#xff0c;提示词由工程师手写、知识库由业务方整理…

作者头像 李华
网站建设 2026/4/23 10:45:11

会话控制超时处理策略完整指南

会话控制超时处理&#xff1a;从原理到实战的完整技术指南你有没有遇到过这样的情况&#xff1f;一台ECU在产线下线刷写后&#xff0c;突然无法响应常规诊断命令——仪表通信正常&#xff0c;但读不到关键状态数据。排查半天才发现&#xff0c;原来是上位机工具崩溃退出前没发送…

作者头像 李华
网站建设 2026/4/23 10:46:26

CANFD协议与传统CAN对比:新手一看就懂

CANFD协议与传统CAN对比&#xff1a;从入门到实战的深度解析 你有没有遇到过这样的情况&#xff1f; 在调试车载网络时&#xff0c;总线负载刚到40%就频繁出现延迟&#xff1b;想给ECU刷个固件&#xff0c;几分钟都传不完&#xff1b;ADAS系统需要融合多个传感器数据&#xff…

作者头像 李华