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

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

基于用户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

  • 10
    点赞
  • 83
    收藏
    觉得还不错? 一键收藏
  • 24
    评论
STM32F1是意法半导体公司推出的一款32位Cortex-M3内核的微控制器系列产品。而ESP01S是乐鑫公司推出的一款低功耗、成本较低的Wi-Fi模块。 要驱动ESP01S模块,我们首先需要了解ESP01S模块的接口和通信协议。ESP01S模块通过串口与主控进行通信,提供了AT指令集控制模块的功能。因此,我们需要在STM32F1的固件上实现串口通信,并编写代码发送相应的AT指令给ESP01S模块。 首先,我们需要在STM32F1的开发环境中配置串口通信模块,设置波特率、数据位、校验位等参数。然后,我们可以使用HAL提供的函数来实现串口数据的发送和接收。通过串口发送AT指令给ESP01S模块,并通过串口接收模块返回的响应。 在编写代码的过程中,我们需要注意串口数据的发送和接收时机,以及错误处理。例如,在发送AT指令后,需要等待模块的响应,并根据响应内容来判断操作是否成功。如果出现错误,我们需要相应地处理错误信息,并重新发送指令或者采取其他措施。 此外,为了方便使用,可以封装一些函数或者类来简化驱动的操作。例如,可以编写一个函数用于发送AT指令并返回响应结果,一个函数用于连接无线网络等。 总的来说,驱动ESP01S模块需要在STM32F1上实现串口通信,并编写代码发送和接收AT指令。需要注意处理错误和封装函数以简化操作。这样就可以实现STM32F1ESP01S模块的驱动

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值