单片机根据应答发送AT指令控制ESP8266(AP模式)
在明白了串口发送AT指令控制ESP8266设置为AP模式并用客户端连接通信后,将手动发送AT指令控制ESP8266的活交给单片机来做,程序跟之前设置Station模式差不多,只是AT指令和应答判断稍有不同
(若不明白设置ESP8266为AP模式可参考文章:https://blog.csdn.net/weixin_46251230/article/details/126217770)
1.编写好代码后,把程序烧录到单片机中,也是使用之前分线的测试方法,能清晰看到单片机AT指令的发送情况,同时也能看到ESP8266的应答信息
2.接线接好后,ESP8266上电,单片机上电,可通过安信可串口助手看到指令发送和应答信息
AT+CWMODE=2 //设置为AP模式
OK
AT+CIPMUX=1 //设置为多连接
OK
AT+CIPSERVER=1 //开启多连接后,才能建立TCP server
OK
void main()
{
Uart_Init();
//初始化之后延时1秒让ESP8266输出初始化信息
Delay1ms(1000);
//设置成双模
Uart_SendString(CWMODE);
while(!AT_OK_Flag);
AT_OK_Flag = 0;
//开启多连接
Uart_SendString(CIPMUX);
while(!AT_OK_Flag);
AT_OK_Flag = 0;
//建立TCP Server
Uart_SendString(CIPSERVER);
while(!AT_OK_Flag);
//客户端连接上来
while(!Client_Connect_Flag);
AT_OK_Flag = 0;
if(Client_Connect_Flag)
{
LED1 = 0; //灯亮表示客户端连接成功
LED2 = 0;
}
while(1)
{
Uart_SendString(CIPSEND);
Delay1ms(2000);
Uart_SendString("hello");
Delay1ms(2000);
}
}
但信息卡在最后一个OK应答后就不再显示了,说明建立TCP Server后,单片机在等待客户端的连接,卡死在了while循环里面,此时要打开网络调试助手(电脑提前连接好ESP8266的WIFI),选择客户端模式,选择与ESP8266同一个网段的主机地址,服务器端口默认333,
点击连接按钮,连接上服务器(ESP8266),则安信可助手中可看到"0,CONNECT"的应答信息,说明客户端连接上来了,单片机获取到了连接标志,跳出了循环,继续向下执行
3.发送数据,单片机先发送AT指令AT+CIPSEND=0,5,说明要向通道0发送5个字符的数据,ESP8266应答OK,则单片机便把字符串“hello”发送给ESP8266,ESP8266再通过网络传给客户端,可在网络调试助手(客户端)看到ESP8266(服务器)发来的数据“hello”,如果想继续发送,则要再次输入AT指令AT+CIPSEND=0,5,然后发送数据(注意:这样是服务器向客户端发送数据)
4.如果客户端想向服务器发送数据,则直接在网络调试助手的发送区发送数据即可,可无限发送
ESP8266接收到客户端的信息后,经过分线,一根传到了电脑助手上查看,另一根传到单片机RX上
5.最后可以实现客户端发送 op 和 cl 特殊字符串控制单片机的LED开启和关闭,只需在程序的串口中断函数中判断接收的字符串是否是开关灯指令,是就对LED灯进行开关操作,一个简单的通过网络点灯的实验就完成了,只要连接到局域网,都能通过网络与单片机通信,从而控制单片机