esp8266设置sta失败_51单片机与ESP8266EX模块相互通信;注意事项及常见问题解决办法;使用单片机串口将ESP8266设置为AP,STA.AP+STA模式教程及C程序源码编写;单片机发送...

本文介绍了如何使用51单片机驱动ESP8266,包括ESP8266的STA, AP, AP+STA三种模式,以及设置AP模式的步骤。在单片机与ESP8266的串口通信中,需要注意波特率设置、数据格式和中断处理。文章提供了程序源码和视频教程链接,帮助读者理解并实现单片机与ESP8266的交互。" 103277128,318867,Spring集成Kafka配置与Kerberos认证实践,"['Spring框架', 'Kafka集成', 'Kerberos认证', 'Java开发', '消息队列']
摘要由CSDN通过智能技术生成

使用51单片机驱动ESP8266相关问题讲解

ESP8266有三种模式:STA,AP,AP+STA

通过单片机的串口将ESP8266EX模块设置AP模式,然后通过手机网络调试助手(连接上ESP8266)发送数据,单片机收到以后,处理数据,并点灯

举例:AP模式

注意事项:

1,ESP8266与单片机串口连接,即交叉连线:RX-TX TX-RX

2,ESP8266与单片机的波特率设置为一样

注意:单片机串口(实际中晶振11.0592M or 12M)波特率不能设置为115200

需要通过AT指令将ESP8266的波特重新设置(一般设置为9600),单片机串口波特率也设置为9600

3,程序中,单片机发送的数据要有换行符

4,单片机下载程序的时候,需要将ESP8266断开,(简单方法:就是ESP8266的电源线拔掉或拔掉串口的某根线)

5,注意观察ESP8266的指示灯,(蓝色灯会闪烁)

6,手机网络调试助手 协议类型:TCP client 服务器IP地址:192.168.4.1 服务器端口:8080

7,ESP8266的数据处理,收到数据格式:+IPD,X,X:有效数据

8,ESP8266接收的数字是数字ASCII码,需要处理数字时,需要将接收的数据-0x30,即减去该0的ASCII码

一般情况:

ESP8266:正常模式(运行模式)115200

单片机串口波特率:9600

因此需要使用AT指令将ES8266的波特率重新设置,设置视频教程:

设置ESP8266的波特率

详细的视频教程及演示:

视频教程中的程序源码:

/*

*作者:逗比小憨憨

*说明:程序只是基础使用单片机+ESP8266EX,还可以进一步扩展使用

*程序中ESP8266模式设置为AP模式,设置其它模式所需的AT指令,即单片机串口需要发送的字符串

*可以看这里面相关ESP8266的讲解,链接:https://space.bilibili.com/314404732

*/

#include

unsigned char code str[][30]={

{"AT+CWMODE=2\r\n"},

{"AT+RST\r\n"},

{"AT+CWSAP="},//这条指令用法参照AT指令用户手册

{"AT+CIPMUX=1\r\n"},

{"AT+CIPSERVER=1,8080\r\n"},

{"AT+CIPSEND=0,10"}

};

unsigned char dat[10],cnt=0,flag=66;

//函数声明区

void delay_ms(unsigned int i);

void init(void);

void send_char(unsigned char d);

void send_str(unsigned char *str);

/

void delay_ms(unsigned int i)

{

unsigned int j,k;

for(j=i;j>0;j--)

for(k=118;k>0;k--);

}

void init(void)//串口初始化

{

TMOD=0x20; //定时器1工作在模式2,自动重装模式

SCON=0x50; //串口工作在模式1

TH1=0xfd; //计算定时器重装值//11.0592 9600

TL1=0xfd;

PCON=0x00; //串口波特率加倍

ES=0; //串行中断关闭

TR1=1; //启动定时器1

REN=1; //允许接收

EA=1; //允许中断

}

void send_char(unsigned char d) //发送一个字节的数据

{

SBUF=d; //将数据写入到串口缓冲

while(!TI); //等待发送完毕

TI=0;

RI=0;

}

void send_str(unsigned char *str)

{

while(*str!='\0') //发送字符串

{

send_char(*str); //发送一个字符

str++; //移动到下一个字符

}

//send_char(0x0A);

//send_char(0x0D);

}

//mode: 1:STA 2:AP 3:AP+STA

void esp8266_init(char mode)

{

char i=0;

ES=0;

if(mode==2)

{

for(i=0;i<4;i++)

{

send_str(str[3]);

delay_ms(1000);

send_str(str[4]);

delay_ms(1000);

}

}

ES=1;

}

void main(void)

{

int i=0;

init();

send_str(str[2]);

delay_ms(1000);

esp8266_init(2);

delay_ms(100);

while(1)

{

//for(i=0;i

//{

//if(dat[i]==':')

//{

//flag=dat[i+1]-0x30;

//break;

//}

//dat[i]=0;

//}

flag=dat[cnt-1]-0x30; // 位‘0’

//2 ESP8266 +IPD,0,X: 2

if((flag>=0)&&(flag<=9))

{

cnt=0;

ES=0;

switch(flag)

{

case 0:P1=0;

break;

case 1:P1=0XAA;

break;

case 2:P1=0X55;

break;

case 3:P1=0XFF;

break;

case 4:P1=0X0F;

break;

case 5:P1=0XF0;

break;

default:

break;

}

ES=1;

}

}

}

void uart(void) interrupt 4 //串口发送中断

{

if(RI) //收到数据

{

RI=0; //清中断请求

dat[cnt++]=SBUF;

}

else //发送完一字节数据

{

TI=0;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值