1.网络搭建
局域网和公网通讯采用内网穿透——花生壳软件
1.先搭建服务器
2.添加内网穿透-映射
3.就可以通过公网访问到这个内网的服务器
2.4G模块设置
采用USB串口驱动对4G模块进行设置(卡如图放置,别放错了)——线连接是错的
1.+++
2.AT+CSQ
3.AT+ICCID
4.AT+SOCK=TCPC,115.236.153.174,25186
5.AT+LINKSTA
5.1AT+HEARTINFONEW=1,ykyk //设置心跳包数据
5.2AT+HEARTM =3 //设置心跳吧发送时间
6.AT+REBT
更多AT指令查看:EC03-DNC 4G CAT1数传模块-亿佰特CAT1无线通信模块
连接完成后灯状态为:亮3个——且可以收到心跳包数据
3.通过4G网络对单片机进行控制
原理是公网发送数据——4G模块——串口——控制单片机
单片机代码:
#include "reg52.h"
#include "string.h"
#define SIZE 7
sfr AUXR=0x8e;
sbit led1=P3^6;
sbit led2=P3^7;
char buffer[SIZE];
int TCP_mark=0;
int other_land_mark=0;
int suceed_mark=0;
int error=1;
void init_usb(void);
void Delay500ms();
void main(void)
{
Delay500ms();
init_usb(); //串口初始化
while(1){
}
}
void UART_Pountine(void) interrupt 4
{
static int i=0;
char tmp;
if(RI){ //接受外部数据后产生中断 进入interrupt 4
RI=0;
tmp=SBUF;
if(tmp == ':' ){ //:始终放置在第0位
i=0;
}
buffer[i++] = tmp;
if(buffer[0] == ':' && buffer[1] == 'e' && buffer[2] == 'n'){ //其它操作接入成功 如果出现OK
led1=0;
memset(buffer,'\0',sizeof(buffer));
}
if(buffer[0] == ':' && buffer[1] == 'c' && buffer[2] == 'l'){ //其它操作接入成功 如果出现OK
led1=1;
memset(buffer,'\0',sizeof(buffer));
}
if(i==6)i=0; //存储数组恢复
}
}
void init_usb(void)
{
AUXR=0X01;
SCON=0x50;//采用工作方式1进行通讯
//PCON &= 0x7F; //要清0就 &上0 //是不是有问题
ET1=0;//串口用的定时器1,关闭中断。配置相同的波特率
//TCON 定时器控制寄存器
TR1=1; //打开定时器1
//TMOD? 定时器模式寄存器
TMOD &=0x0F; //&0就清0 这个和老陈不一样
TMOD |=0x20; // |1就变1
TH1=0xFD; //高位? ? ? 自动重装时TH1将自动装入TL1
TL1=0xFD; //低位
//TI 中断请求标志位 RI中断请求标志位
EA=1;ES=1; //总中断允许位 串口中断允许位
}
void Delay500ms() //@11.0592MHz
{
unsigned char i, j, k;
//_nop_();
i = 4;
j = 129;
k = 119;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
内网发送指令cmd:en 或者cmd:close就可以通过4G模块 远程控制单片机上的led或者IO