4G模块的使用

概述

产品介绍

EC03-DNC是亿佰特推出的LTECAT1数传模块产品,该产品软件功能完善,覆盖绝大多数常规应用场景,EC03-DNC是为实现串口设备与网络服务器,通过网络相互传输数据而开发的产品,该产品是一款带分集接收功能的LTE-FDD/LTE-TDD无线通信数传模块,支持LTE-FDD,LTE-TDD网络数据连接,用户只需通过简单的设置,即可实现串口到网络服务器的双向数据透明传输。模块使用2.0mm排针方便客户设备集成,使用5V~18V宽电压供电。支持移动、联通、电信4G卡,通信与LED指示采用兼容电平,默认3.3V可适用5V电平,具有抗干扰能力,能适应使用在一些电磁干扰强的环境当中,比如一些电力行业当中。

功能特点

  1. 采用最新4GCAT1方案;
  2. 支持数据透明传输,支持TCP、UDP网络协议,支持心跳包、注册包功能最大支持60个字节数;
  3. 支持MQTT协议,支持接入OneNet平台、百度云平台、阿里云平台的MQTT服务;
  4. 支持两路Socket链路同时收发;
  5. 支持ModbusRTU与ModbusTCP自动相互转换;
  6. 支持网络AT指令,可以通过网络,远程配置设备;
  7. LTE-FDD:最大下行速率10Mbps,最大上行速率5Mbps;LTE-TDD:最大下行速率7.5Mbps,最大上行速率1Mbps;
  8. 软件看门狗设计,系统稳定。
  9. 支持APN/VPN。

有两种工作模式,默认是透传模式,通过其他方式进入AT指令模式,后续有说明

注意插卡不要出错,下图红色位置为SIM卡状态灯,亮才是正常

image-20220728231458084
  • 软件和用户手册下载地址 https://www.ebyte.com/product-view-news.html?id=1102

开始使用

工具

​ 串口调试助手,网络调试助手,用户手册(AT指令),均可在以上网址中下载到

进入AT模式

在使用前:

将电源、天线、SIM 卡、串口线等硬件连接好。

  1. 进入AT指令模式在串口助手内发送+++(除了+++不需要勾选发送新行其他AT指令都需要勾选发送新行才有效)必须在发送+++指令3s内发送其他任意AT指令(除重启AT指令外)才能完全进入AT

  2. 进入AT指令模式后,使用AT+CPIN查看SIM卡接入情况:

    例如:

    AT+CPIN

    +OK=1

    表示SIM卡已接入,使用AT+CSQ查看当前信号强度:

    例如:

    AT+CSQ

    +OK=26表示当前信号强度正常. 26是信号强度 不是固定的 根据实际情况看

    如果回复99表示当前信号强度异常,请查看当前为天线是否连好,或周围基站存在异常。

  3. 接入服务器,AT+SOCK=TCPC,116.62.42.192,31687(参数之间使用英文字符逗号隔开,IP指令之间使用英文字符点隔开),如果是SOCK1,SOCK2,SOCK3,需要在前端加使能命令(具体查看AT指令说明部分)。

    SOCK设置

    例如:

    AT+SOCK=TCPC,116.62.42.192,31687

    +OK

    SOCK1、SOCK2、SOCK3设置

    例如:

    AT+SOCK1=0,TCPC,116.62.42.192,31687

    +OK 表示设置成功。

  4. 重启(所有AT指令修改参数后,设备重启后生效)执行指令AT+REBT返回OK后设备立即重启,此处IP只做演示,实际连接以需要连接的服务器IP为基准

image-20220728232806905

模块还有很多的AT指令 如心跳包内容的设置 心跳包的发送时间,MQTT服务器的设置等等。在官方的文档中有详细介绍。每一个指令都有详细的使用方法的介绍,返回值等。

image-20220728235152338
image-20220728234120429

连接socket 服务器

因为是4G通信,所以需要用到内网穿透功能,将电脑搭建的socket服务器 映射到公网

这里我使用的是花生壳内网穿透工具,

免费 学习使用和简单的场景足够

花生壳

  1. 注册账号
  2. 下载软件
屏幕截图 2022-07-28 233329

设置一个TCP服务器

image-20220728233431875

百度搜索网络调试助手很多

内网穿透

image-20220728233556556

这里的内网主机和内网端口 一定要和网络调试助手的保持一致

内网穿透测试

image-20220728233808140

通过外网地址访问成功

代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
//对应于课堂代码16文件夹 
//C51通过4g模块连接网络,收到数据包op开灯,收到数据包cl关灯
#include "reg52.h"
#include "intrins.h"
#include <string.h>
#define SIZE
12 sfr AUXR = 0x8E;
sbit D5 = P3 ^ 7;
char cmd[SIZE];
void UartInit(void) // 9600bps@11.0592MHz
{
AUXR = 0x01;
SCON = 0x50; //配置串口工作方式1,REN使能接收
TMOD &= 0xF0;
TMOD |= 0x20; //定时器1工作方式位8位自动重装
TH1 = 0xFD;
TL1 = 0xFD;
// 9600波特率的初值
TR1 = 1;
//启动定时器
EA = 1; //开启总中断
ES = 1; //开启串口中断
}
void Delay1000ms() //@11.0592MHz
{
unsigned char i, j, k;
_nop_();
i = 8;
j = 1;
k = 243;
do
{
do
{
while (--k)
;
} while (--j);
} while (--i);
}
void sendByte(char data_msg)
{
SBUF = data_msg;
while (!TI)
;
TI = 0;
}
void sendString(char *str)
{
while (*str != '\0')
{
sendByte(*str);
str++;
}
}
void main()
{
D5 = 1;
//配置C51串口的通信方式
UartInit();
while (1)
{
Delay1000ms();
//往发送缓冲区写入数据,就完成数据的发送
// sendString("xiaoliu tongxue shuai\r\n");
}
}
void Uart_Handler() interrupt 4
{
static int i = 0; //静态变量,被初始化一次
char tmp;
if (RI) //中断处理函数中,对于接收中断的响应
{
RI = 0; //清除接收中断标志位
tmp = SBUF;
if (tmp == ':')
{
i = 0;
}
cmd[i++] = tmp;
if (cmd[0] == ':' && cmd[1] == 'o' && cmd[2] == 'p')
{
D5 = 0; //点亮D5
i = 0;
memset(cmd, '\0', SIZE);
}
if (cmd[0] == ':' && cmd[1] == 'c' && cmd[2] == 'l')
{
D5 = 1; //熄灭D5
i = 0;
memset(cmd, '\0', SIZE);
}
if (i == 12)
i = 0;
}
if (TI)
;
}