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=2rn"},
{"AT+RSTrn"},
{"AT+CWSAP="},//这条指令用法参照AT指令用户手册
{"AT+CIPMUX=1rn"},
{"AT+CIPSERVER=1,8080rn"},
{"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!='