news 2026/5/19 5:27:35

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/5/15 21:04:52

Dify平台适配主流大模型:灵活调用Token资源的最佳实践

Dify平台适配主流大模型&#xff1a;灵活调用Token资源的最佳实践 在企业加速拥抱AI的今天&#xff0c;一个现实问题摆在面前&#xff1a;如何让大模型真正落地业务场景&#xff0c;而不是停留在技术演示或实验原型中&#xff1f;我们见过太多团队投入大量人力开发智能客服、知…

作者头像 李华
网站建设 2026/5/11 2:40:36

AUTOSAR网络管理编译与移植技术指南

AUTOSAR网络管理实战&#xff1a;从配置到移植的全链路解析一场“休眠”引发的系统性思考在一次车身控制器&#xff08;BCM&#xff09;项目调试中&#xff0c;团队遇到了一个典型问题&#xff1a;车辆熄火后&#xff0c;CAN总线始终无法进入低功耗状态&#xff0c;导致静态电流…

作者头像 李华
网站建设 2026/5/10 17:18:53

深入浅出讲解UDS协议NRC错误响应逻辑

深入理解UDS协议中的NRC错误响应机制&#xff1a;从原理到实战你有没有遇到过这样的场景&#xff1f;诊断仪发了一个读数据请求&#xff0c;ECU却只回了个“7F 22 XX”——三字节的否定响应&#xff0c;像一道谜题横在面前。这时候&#xff0c;是反复重试&#xff1f;还是抓耳挠…

作者头像 李华
网站建设 2026/5/16 12:22:30

如何制作一个 RAG 系统以获取对您数据的强大访问权限

原文&#xff1a;towardsdatascience.com/how-to-make-a-rag-system-to-gain-powerful-access-to-your-data-caf4bb9186ea RAG 系统是一种创新的信息检索方法。它结合了传统的信息检索方法&#xff0c;如向量相似度搜索&#xff0c;以及最先进的大语言模型技术。结合这些技术&a…

作者头像 李华
网站建设 2026/5/4 15:14:27

Dify平台的冷启动优化策略研究

Dify平台的冷启动优化策略研究 在大模型技术迅猛发展的今天&#xff0c;越来越多企业试图将LLM&#xff08;大语言模型&#xff09;融入实际业务场景。然而现实却常常令人沮丧&#xff1a;一个看似简单的智能客服或知识问答系统&#xff0c;从构思到可演示原型往往需要数周甚至…

作者头像 李华
网站建设 2026/5/10 9:53:57

Dify平台如何保障长时间运行任务的稳定性?

Dify平台如何保障长时间运行任务的稳定性&#xff1f; 在当今企业级AI应用日益复杂的背景下&#xff0c;一个常被忽视但至关重要的问题浮出水面&#xff1a;当AI系统需要持续运行数小时甚至跨天交互时&#xff0c;如何确保它不会“断片”、不会丢状态、不会因一次网络抖动而前功…

作者头像 李华