基于stm32f1的esp01s的驱动库及使用

@基于stm32f1的esp01s的驱动库及使用

基于用户zero_rose的驱动改进,文章来源STM32的ESP01驱动库_面向对象的形式

正常情况下,使用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

你可能感兴趣的:(基于stm32f1的esp01s的驱动库及使用)