admin管理员组文章数量:1530879
2023年12月24日发(作者:)
ESP8266连接公网,外网
注:本文用手机apk与电脑串口显示进行通信,接线我就不说了。
单片机上电后,对模块进行 初始化 设置ESP8266模块
Esp8266设置:
AT+CWMODE=3 ' AP兼Station模式
AT+CWJAP="ssid","password";连接WiFi
AT+CIPMUX=1 ' 设置多连接
AT+CIPSERVER=1,5566 ‘ 开启服务器,设置端口号
路由器设置:
找到esp8266对应的MAC地址,复制一下
IP与MAC绑定,并添加进去,这样每次esp8266连接路由器时,分配到的为固定的IP,不会变。
在路由转发中,把8266的ip与刚才分配的端口号添加进去,并使之生效。
这样,路由器的设定就完成了。
此时,手机通过外网连接, 路由器的外网 IP (不是192.168.1.***)+ 刚才设置端口号,就可以控制单片机了
手机上软件有“tcp连接”这个apk,自己去下载个就行。连接就好了,付一张我连接成功发送数据的图。
可以看出,手机上连接的是移动网络,电脑上已经收到信息了。
可是,8266做了服务器,不能再用透传了,这样只能手机向上位机发送消息,上位机怎么向电脑发送哪?
手机连接上8266的时候,电脑串口是不是显示了0,connect ?那个0就是客户端号,一般来说,只有一个客户端连接8266的话,就是0,connect,如果有多的,就是1,2,3了。
电脑上先发送:AT+CIPSEND=0,6;//客户端号,要发送字符长度
再发送字符:123456;//此时电脑就可以向手机发信息了
不过这种发送每次发送前都要发AT+CIPSEND=*,*;比较麻烦就是了。
--------------------------------------------分割线------------------------------------
1. Esp8266与电脑(单片机)通信波特率怎么调?
/cLapM6hNVTSQe (提取码:463b)
这个工具可以设置(想我花了一天才百度到这个,还以为要烧结固件哪)。360会报毒,添加信任就行了。
2. 付单片机调试程序:
#include
#define uint unsigned int
#define uchar unsigned char
#define RELOAD_COUNT 0xFA
sfr AUXR=0x8E;
sfr BRT=0x9C;
sfr AUXR1=0xA2;
uchar Receive,i;
uint n;
uchar Recive_table[15];
uchar data ledon[]="ononon";
uchar ledoff[]="off1";
void ms_delay(uint t)
{
uint i,j;
for(i=t;i>0;i--)
for(j=110;j>0;j--);
}
void us_delay(uchar t)
{
while(t--);
}
void Uart_Init()//初始化
{
SCON=0x50; //
PCON=0x80; //
TMOD=0x21;
TH1=RELOAD_COUNT;//
TL1=TH1;
EA=1;
//9600波特率,11.0592MHZ晶振
//
ES=0;
}
//
TR1=1;
/********************************************************************
发送一字节
********************************************************************/
void Send_Uart(uchar value)
{
ES=0;
TI=0;
//??????
//????????????
SBUF=value; //??
while(TI==0); //??????
TI=0;
ES=1;
}
/********************************************************************
发送字符串
********************************************************************/
void ESP8266_Set(uchar *puf) // ????*puf???????
{
while(*puf!='0') //????????
{
}
us_delay(5);
Send_Uart('r'); //??
us_delay(5);
Send_Uart('n'); //??
ms_delay(1000);
}
/****************************************************
向手机发信息要先设置字符长度“AT+CIPSEND=0,6”,才能再发送字符
*****************************************************/
void ESP8266_Sent(uchar *puf)
{
uchar i;
{
for(i=0;i<6;i++)
// ????*puf???????
Send_Uart(*puf); //?WIFI?????????
us_delay(5);
puf++;
//????????????
//??????
}
ledon[i]=puf[i]; //?WIFI?????????
ESP8266_Set("AT+CIPSEND=0,6");
ESP8266_Set(ledon);
us_delay(5);
Send_Uart('n'); //??
ms_delay(10);
}
/********************************************************************
主函数
********************************************************************/
void main()
{
Uart_Init();//???????????
ESP8266_Set("AT+CWMODE=3"); //??????? 1 station?? 2 AP
//? ????? 3 station+AP????
ESP8266_Set("AT+RST"); //????wifi??
ESP8266_Set("AT+CWSAP="562","tongji123"");
//????SSID:WIFI, PWD:?? ?????????(WPA2-PSK)
ESP8266_Set("AT+CIPMUX=1");//???????,??????????
ESP8266_Set("AT+CIPSERVER=1,5566"); //上面都是初始化
//开总中断
ES=1;
{
while(1)
if((Recive_table[0]=='+')&&(Recive_table[1]=='I')&&(Recive_table[2]=='P'))//MCU???????+IPD???????01???????
{
if((Recive_table[3]=='D')&&(Recive_table[6]==','))//收到的数据格式是:+IPD,0,3:123,
/*
{
{
//LED0=0; //0 ??
第九位才开始收到数据
}
else if (Recive_table[9]=='1')
if(Recive_table[9]=='0')
ESP8266_Set("AT+CIPSEND=0,2");
Send_Uart('o');
us_delay(5);
us_delay(5);*/
Send_Uart('n');
ESP8266_Set("hahaha");
}
}
}
}
{
ESP8266_Set("AT+CIPSEND=0,2");
Send_Uart('o');
us_delay(5);
us_delay(5);
Send_Uart('f');
//ESP8266_Sent(ledoff);
}
/*********************************************************************
串口中断
********************************************************************/
void Uart_Interrupt() interrupt 4
{
static uchar i=0;
if(RI==1)
{
RI=0;
Receive=SBUF; //
Recive_table[i]=Receive;
i++;
}
if((Recive_table[i-1]=='n'))i=0; //考虑一下前面i定义为static格式
else TI=0;
}
版权声明:本文标题:esp8266如何怎样连接公网外网设置 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1703362932a51635.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论