EC03-DNC4G通信模块

3.6.1 模块使用

说明
  • 基于串口AT指令的开发方式
  • 有两种工作模式,默认是透传模式,通过其他方式进入AT指令模式,后续有说明
  • 注意插卡不要出错,下图红色位置为SIM卡状态灯,亮才是正常

  • 软件和用户手册下载地址 https://www.ebyte.com/product-view-news.html?id=1102  
开始使用
        工具
        串口调试助手,网络调试助手,用户手册(AT 指令),均可在以上网址中下载到

3.6.2 公网IP的服务器地址

     借助花生壳软件
        1. 注册花生壳账号
        2. 下载花生壳软件
1. 设置一个 TCP 服务器
1. 内网穿透

测试

 3.6.3 AT指令控制模块联网

在测试之前,将电源、天线、SIM 卡、串口线等硬件连接好。

        1. 打开串口连接 4G 模块,串口出产默认波特率是 115200 ,可以自行根据用户手册修改
        2. 进入 AT 指令模式,在串口助手内发送 +++ (不要勾选发送新行),必须在发送 +++ 指令 3s 内发送其
他任意 AT 指令,比如 AT+CPIN
        3. 观察 SIM 卡灯是否亮起, AT+ICCID 获得 SIM 卡信息,确认 SIM 卡安装完好 返回数据:
+OK=89860116838013413419
检查信号是否正常,通过 AT+CSQ 指令检查信号值,建议插入信号天线,返回数据: +OK=31
        4. AT+SOCK=TCPC,103.46.128.21,52541 连接 socket 服务器,
103.46.128.21 是公网 IP 地址,通过花生壳获得, 26532 是端口号,参数之间逗号隔开
        5. AT+LINKSTA查看连接状态,如果第四步没有问题,此时串口返回 +OK=Connect
使用
重启后,模块自动进入透传模式,直接可以和服务器进行通信
踩坑
        1. SIM卡方向装反了
        2. 进入 AT 指令,认真操作哦
        3. AT+SOCK=TCPC,103.46.128.21,26532是正确连接socket 服务器的方式,官方给的文档有错误引导
有效使用的样子

 

3.6.4 代码实现 

//通过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("chenlichen 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);
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值