基于用户zero_rose的驱动改进,文章来源STM32的ESP01驱动库_面向对象的形式
源码似乎丢了,https://download.csdn.net/download/TorrowWillrain/11995080
这个之前上传的不确定是不是
正常情况下,使用AT命令即可配置esp01s,因此当我们需要用stm32对esp01s进行配置时,我们只需要让单片机按照固定的规则向esp01s发送指令即可。
AT指令原贴主已经配置的差不多了,大部分可以直接拿过来用,想在stm32f1上面使用的话,我们只需要将USART端口简单修改一下即可,修改方式不在另行赘述。
代码中的连接方式:usart1连接电脑端,usart2连接esp01s;
下面讲下我做的一些修改:
第一部分就是自连接WiFi
/*
-------------------------------------------------------------------------------
函数ATcall:自动配置atcall模块,并通过usart1发送结果
配置过程:
1,检测at模块
2,wifi模式配置为3
3,打开多链接模式
4,打开tcp服务器,ip192.168.4.1:8080
-------------------------------------------------------------------------------
*/
void ATcall(void)
{
esp8266 test;
esp8266Init(&test);
uart_init(115200);
delay_init();
if(!test.CheckESP()) //检测ESP01
{
USART1_Info("无法检测到ESP01.....\r\n");
}
else{USART1_Info("ESP01已连接.....\r\n");}
delay_ms(500);
if(test.SetEspMode(3)) //wifi模式设置
{
USART1_Info("模式3已设置.....\r\n");
}
// if(test.ConnectWiFi("Lab","laboratory"))//WiFi连接超时时间6s;
// {
// USART1_Info("wifi[lab]已连接.....\r\n");
// }
// else{(USART1_Info("wifi[lab]连接失败.....\r\n"));}
delay_ms(500);
if(test.ConnectionMode(1))
{
USART1_Info("多连接模式已打开.....\r\n");
}
else{(USART1_Info("多连接模式打开失败.....\r\n"));}
if(test.TCPserver("1","8080"))//默认ip为192.168.4.1
{
USART1_Info("服务器已开启.....\r\n");
}
else{(USART1_Info("服务器开启失败.....\r\n"));}
}
这段函数主要使用了test测试命令和usart发送命令,test执行相关的动作并用于对esp01s返回的信息进行分析并作出对应判断,如test.CheckESP(),指向了CHeckESP函数
u8 CheckEsp(void)
{
SendEspCommand("AT\r\n");
delay();
if(CheckResponse())
{
return 1;
}
return 0;
}`
通过usart2发送at命令,然后通过CheckResponse()对返回信息进行判断,成功返回1,失败返回0
char CheckResponse()
{
if(strstr(ESPBuffer,SendResponse) == NULL)
{
return 0;
}
return 1;
ClearESPBuffer();
}
相关代码在https://github.com/zhanglu-2001/esp01s/blob/master/HARDWARE/AT/AT_ESP.c中
相关指令配置好后,我们只需要在main函数里进行调用即可
int main(void)
{
ATcall();//配置esp01s,此处配置的为多路连接tcp模式
WiFiSendData(0,'a');//通过esp01s向0号客户端发送数据‘a’
while(1)
{
delay_ms(500);
WiFiReadData();//通过esp01s读取客户端发送的数值,并通过usart1发送出去
}
}
此时我们就成功的通过esp创建了一个多路连接的服务器并对数据进行收发;但是既然是使用stm32配置,我们最主要的目的还是通过esp32给单片机进行联网,并进行远程控制。控制方法同传统的蓝牙,串口方法没什么区别,我们只需要对usart2端口接收到的数据进行分析并完成相应判断即可,具体的代码及方法以后会慢慢更新。
完整代码在我的github里,下载后](https://github.com/zhanglu-2001/esp01s),可以直接烧录到stmf103c8t6中使用。
github地址:https://github.com/zhanglu-2001/esp01s
这里推荐安信可的AT工程,链接https://docs.ai-thinker.com/esp8266/examples/at_demo