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=*,*;比较麻烦就是了。
--------------------------------------------分割线------------------------------------
8266与电脑(单片机)通信波特率怎么调?
/cLapM6hNVTSQe(提取码:463b)
这个工具可以设置(想我花了一天才百度到这个,还以为要烧结固件哪)。360会报毒,
添加信任就行了。
2.付单片机调试程序:
#include
#defineuintunsignedint
#defineucharunsignedchar
#defineRELOAD_COUNT0xFA//9600波特率,11.0592MHZ晶振
sfrAUXR=0x8E;
sfrBRT=0x9C;
sfrAUXR1=0xA2;
ucharReceive,i;
uintn;
ucharRecive_table[15];
uchardataledon[]="ononon";
ucharledoff[]="off1";
voidms_delay(uintt)
{
uinti,j;
for(i=t;i>0;i--)
for(j=110;j>0;j--);
}
voidus_delay(uchart)
{
while(t--);
}
voidUart_Init()//初始化
{
SCON=0x50;//
PCON=0x80;//
TMOD=0x21;
TH1=RELOAD_COUNT;//
TL1=TH1;
EA=1;//
ES=0;//
TR1=1;
}
/********************************************************************
发送一字节
********************************************************************/
voidSend_Uart(ucharvalue)
{
ES=0;//??????
TI=0;//????????????
SBUF=value;//??
while(TI==0);//??????
TI=0;//????????????
ES=1;//??????
}
/********************************************************************
发送字符串
********************************************************************/
voidESP8266_Set(uchar*puf)//????*puf???????
{
while(*puf!='0')//????????
{
Send_Uart(*puf);//?WIFI?????????
us_delay(5);
puf++;
}
us_delay(5);
Send_Uart('r');//??
us_delay(5);
Send_Uart('n');//??
ms_delay(1000);
}
/****************************************************
向手机发信息要先设置字符长度“AT+CIPSEND=0,6”,才能再发送字符
*****************************************************/
voidESP8266_Sent(uchar*puf)//????*puf???????
{
uchari;
for(i=0;i<6;i++)
{
ledon[i]=puf[i];//?WIFI?????????
}
ESP8266_Set("AT+CIPSEND=0,6");
ESP8266_Set(ledon);
us_delay(5);
Send_Uart('n');//??
ms_delay(10);
}
/********************************************************************
主函数
********************************************************************/
voidmain()
{
Uart_Init();//???????????
ESP8266_Set("AT+CWMODE=3");//???????1station??2AP
//??????3station+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???????+IP
D???????01???????
{
if((Recive_table[3]=='D')&&(Recive_table[6]==','))//收到的数据格式是:+IPD,0,3:123,
第九位才开始收到数据
{
if(Recive_table[9]=='0')
{
//LED0=0;//0??
/*ESP8266_Set("AT+CIPSEND=0,2");
Send_Uart('o');
us_delay(5);
Send_Uart('n');
us_delay(5);*/
ESP8266_Set("hahaha");
}
elif(Recive_table[9]=='1')
{
ESP8266_Set("AT+CIPSEND=0,2");
Send_Uart('o');
us_delay(5);
Send_Uart('f');
us_delay(5);
//ESP8266_Sent(ledoff);
}
}
}
}
}
/*********************************************************************
串口中断
********************************************************************/
voidUart_Interrupt()interrupt4
{
staticuchari=0;
if(RI==1)
{
RI=0;
Receive=SBUF;//
Recive_table[i]=Receive;
i++;
if((Recive_table[i-1]=='n'))i=0;//考虑一下前面i定义为static格式
}
elTI=0;
}
本文发布于:2023-03-07 10:50:00,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/1678157401171251.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:怎么连接外网.doc
本文 PDF 下载地址:怎么连接外网.pdf
留言与评论(共有 0 条评论) |