“连接ESP8266和PC端/单片机的优化方案”
PC端连接ESP8266
硬件:ESP8266模块,USB转TTL
连接方式 : esp8266的TX接转串口的RX,RX接TX
安装阿信可的esp8266调试工具
[ESP8266网络调试工具]ESP8266网络调试工具 提取码:djsz
什么是AT指令:
AT指令集是从终端设备(Terminal Equipment,TE)或数据终端设备(Data Terminal
Equipment,DTE)向终端适配器(Terminal Adapter,TA)或数据电路终端设备(Data Circuit
Terminal Equipment,DCE)发送的。
其对所传输的数据包大小有定义:即对于AT指令的发送,除AT两个字符外,最多可以接收1056个
字符的长度(包括最后的空字符)。
每个AT命令行中只能包含一条AT指令;对于由终端设备主动向PC端报告的URC指示或者response
响应,也要求一行最多有一个,不允许上报的一行中有多条指示或者响应。AT指令以回车作为结尾,响应或上报以回车换行为结尾。
联网操作
0.上电观察ESP8266指示灯闪烁一会后不再闪烁
1.ESP-01s出厂波特率正常是115200, 注意:AT指令,控制类都要加回车,数据传输时不加回车(上电后,通过串口输出一串系统开机信息,购买的部分模块可能电压不稳,导致乱码,以 ready 为准
2.0上电后发送AT指令测试通信及模块功能是否正常
3.通过一下命令配置成9600波特率
AT+UART=9600,8,1,0,0
4.入网设置(设置工作模式)
AT+CWMODE=3 //1. 是station(设备)模式 2.是AP(路由)模式 3.是双模
5.以设备模式接入家中路由器配置
6.查询IP地址
AT+CIFSR //指令
7. 连接到 TCP server( 开关网络助手,设立TCP服务器)
!!!!!把本地端口号设置为 8880
如何查询自己电脑的ip地址
win + r 打开命令行
输入ipconfig
192.168.31.216就是我们需要的地址
7. 连接到服务器
AT+CIPSTART="TCP","192.168.31.216",8880//指令,注意双引号逗号都要半角(英文)输入
8.发送数据
AT+CIPSEND=4 // 设置即将发送数据的长度 (这里是4个字节)
>CLCA // 看到大于号后,输入消息,CLCA,不要带回车
Response :SEND OK //结果:成功
//注意,这种情况下,每次发送前都要先发送AT+CIPSEND=长度 的指令,再发数据!
9.设置透传模式(不受上面发送数据的约束,和麻烦)
AT+CIPMODE=1 //开启透传模式
Response :OK
AT+CIPSEND //带回车
Response: > //这个时候随意发送接收数据咯
10.退出透传模式
//在透传发送数据过程中,若识别到单独的⼀包数据 “+++”,则退出透传发送
既 单独发送+++
利用51单片机接通esp8266
串口初始化函数
void UartInit(void) //9600bps@11.0592MHz
{
PCON &= 0x7F; //波特率不倍速
SCON = 0x50; //8位数据,可变波特率
AUXR &= 0xBF; //定时器时钟12T模式
AUXR &= 0xFE; //串口1选择定时器1为波特率发生器
TMOD &= 0x0F; //设置定时器模式
TMOD |= 0x20; //设置定时器模式
TL1 = 0xFD; //设置定时初始值
TH1 = 0xFD; //设置定时重载值
ET1 = 0; //禁止定时器%d中断
TR1 = 1; //定时器1开始计时
}
发送字节和字符串函数
void SendByte(char sum)
{
SBUF = sum;
while(!TI);
TI = 0;
}
void SendString(char *str)
{
while(*str != '\0'){
SendByte(*str);
str++;
}
}
包装命令字符串
code char LJWL[] = "AT+CWJAP=\"Xiaomi_70B6\",\"dianke513\"\r\n";
code char LJFWQ[] = "AT+CIPSTART=\"TCP\",\"192.168.31.216\",8880\r\n";
char TCMS[] = "AT+CIPMODE=1\r\n";
char SJCS[] = "AT+CIPSEND\r\n";
在主函数中调用
int main()
{
UartInit();
Uart_exit();
Delay(5000);
SendString(LJWL);
Delay(5000);
SendString(LJFWQ);
Delay(5000);
SendString(TCMS);
Delay(5000);
SendString(SJCS);
Delay(5000);
while(1)
{
SendString("RIGHT CONNECT\r\n");
Delay(1000);
}
}
(要给定足够的延时时间)
观察网络端口的数据
同时可以加命令,让网络端口发数据指挥单片机工作