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

@

正常情况下,使用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.....
");
	}
	else{
          
   USART1_Info("ESP01已连接.....
");}
	delay_ms(500);
	if(test.SetEspMode(3))  //wifi模式设置
	{
          
   
		USART1_Info("模式3已设置.....
");
	}
	
//	if(test.ConnectWiFi("Lab","laboratory"))//WiFi连接超时时间6s;
//	{
          
   
//		USART1_Info("wifi[lab]已连接.....
");
//	}
//	else{(USART1_Info("wifi[lab]连接失败.....
"));}
	delay_ms(500);	
	if(test.ConnectionMode(1))
	{
          
   
		USART1_Info("多连接模式已打开.....
");
	}
	else{
          
   (USART1_Info("多连接模式打开失败.....
"));}
	
	if(test.TCPserver("1","8080"))//默认ip为192.168.4.1
	{
          
   
		USART1_Info("服务器已开启.....
");
	}
	else{
          
   (USART1_Info("服务器开启失败.....
"));}
	
}

这段函数主要使用了test测试命令和usart发送命令,test执行相关的动作并用于对esp01s返回的信息进行分析并作出对应判断,如test.CheckESP(),指向了CHeckESP函数

u8 CheckEsp(void)
{
          
   
	SendEspCommand("AT
");
	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

经验分享 程序员 微信小程序 职场和发展