正点STM32F407核心板+ESP8266实现简单通信(详细讲解)

1.ESP8266固件库的烧录

如果用串口助手连上板子,给8266发送AT指令发现老是报错error,可以重新烧录一下固件库 。

正点的ESP8266资料下载网址:

http://www.openedv.com/thread-308397-1-1.html

 然后解压该文件夹下的解压包(我只用到了FLASH烧写工具和原子云固件):

 然后先打开烧写工具,选ESP8266DownloadTool:

接下来的窗口先选择烧写的两个bin文件

两个bin文件的位置如下 

 

其他几个配置看我的配置就行,注意:

ESP8266最好连开发板上的USB转TTL,感觉几块的这个USB转TTL模块没板子上的好用,我在后面固件库烧写成功后发送AT指令时也因为这个出了问题,所以后面直接用f407核心板子上的USB转TTL

 我的ESP8266开始烧写固件库的时候没有DETECTED INFO和MAC Address这些信息,一直失败

 原因就是没有供地!

所以我后面直接用f407上的USB转TTL就能检测到这些信息,然后烧写成功了。

给大家上图(我的ESP8266连接f407开发板):

 ESP8266的5v和GND就接板子上的5V、GND,RX、TX接板子的TX、RX

这里注意:io_0在烧写固件库的时候要接地,rst在少些固件库的时候可以先接地然后拔掉以复位(悬空为高电平)。

然后后面,电脑用串口助手跟ESP8266通信的时候,io_0和rst一定要悬空!

否则不能正常通信。

2.电脑用串口助手给ESP8266发送AT指令

首先ESP8266只连5V、GND,RX、TX四根线

指令如下,方便大家粘贴

AT
AT+CWMODE=0    //设置模块 WIFI 模式为 AP 模式  
AT+CWMODE=1    //设置模块 WIFI 模式为 STA 模式  
AT+CWMODE=2    //设置模块 WIFI 模式为 STA+AP 模式  
AT+RST        //重启生效
AT+CWJAP="iPhone","123456"    //加入 WIFI 热点:iPhone,密码为:123456
AT+CIPMUX=1        //开启多连接   1是多连接 0是单连接
AT+CWLIF            //查看已接入设备的 IP 这个是AP模式下的
AT+CIFSR            //查看本模块的 IP 地址 这个是STA模式下的
AT+CWMODE?        //查看本机配置模式
AT+CIPMUX?         //查询本模块是否建立多连接
AT+CIPMODE?        //查询本模块的传输模式
AT+CIPSTART="TCP","192.168.1.XXX",8086           //建立 TCP 连接到” 192.168.1.XXX”,8086
AT+CIPMODE=1        //开启透传模式
AT+CIPSEND           //开始传输 


电脑串口助手实操图:

 3.开发板通过串口连接ESP8266

我最开始看的正点原子ESP8266的例程,发现东西写的太多太杂了,他们的测试程序把三种模式写进去了,然后跟我实际情况出入太大。

因为我的板子是f407核心板,没有配套的例程,我用正点的探索者的例程做了一些修改,自己写了一个函数,实现串口发送给ESP8266AT指令实现通信。

主要代码如下

int main(void)
{      
	u8 key,fontok=0; 
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
	delay_init(168);  //初始化延时函数
	uart_init(115200);		//初始化串口波特率为115200
	usart3_init(115200);  //初始化串口3波特率为115200
	LED_Init();					//初始化LED  
 	LCD_Init();					//LCD初始化  
 	KEY_Init();					//按键初始化  
	
	while(1){
		esp8266_start_trans();
	}	
}

这个是common.c的

void esp8266_start_trans(void)
{
    atk_8266_send_cmd("AT+CWMODE=1","OK",50);//设置为STA模式
    atk_8266_send_cmd("AT+RST","ready",100);//重启并生效
	delay_ms(1000);
	delay_ms(1000);
	delay_ms(1000);
	delay_ms(1000);
	while(atk_8266_send_cmd("AT+CWJAP=\"TP0_LAB\",\"3+1cxsys\"","WIFI GOT IP",800));//WIFI
	//while(atk_8266_send_cmd("AT+CWJAP=\"iPhone\",\"123123123\"","WIFI GOT IP",800));	
	atk_8266_send_cmd("AT+CIPMUX=1","OK",20);
	
	atk_8266_send_cmd("AT+CIPSTART=\"TCP\",\"192.168.1.100\",8086","OK",200);
	//while(atk_8266_send_cmd("AT+CIPSTART=\"TCP\",\"192.168.1.100\",8086","OK",200));//WIFI
	//while(atk_8266_send_cmd("AT+CIPSTART=\"TCP\",\"172.20.10.10\",8086","OK",200));
	atk_8266_send_cmd("AT+CIPMODE=1","OK",200);
	atk_8266_send_cmd("AT+CIPSEND","ND",50);	
}

其他地方比如

函数atk_8266_send_cmd() 和u3_printf() ,我做了一点修改,把串口3的改成串口1了

(因为我的核心板PA9 PA10分别是串口1的TX 和RX)

如果代码运行出来电脑和SEP8266还不能互相通信,可以先用串口给ESP8266发送AT指令,后面再对代码进行调试更改

串口给ESP8266发送这几个条指令:


AT+CWMODE=1    //设置模块 WIFI 模式为 STA 模式  
AT+RST        //重启生效
AT+CWJAP="iPhone","123456"    //加入 WIFI 热点:iPhone,密码为:123456
AT+CIPSTART="TCP","192.168.1.XXX",8086           //建立 TCP 连接到” 192.168.1.XXX”,8086
AT+CIPMODE=1        //开启透传模式
AT+CIPSEND           //开始传输 

以下是电脑跟ESP8266通信的效果展示:

我选的是STA 模式,电脑端网络调试助手用本地ip登录,注意电脑和ESP8266要连接同一个WIFI

  • 4
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 使用STM32F407驱动ESP8266模块可以通过串口通信实现。以下是大致的步骤: 1. 首先,配置STM32F407的串口通信参数,包括波特率、数据位、停止位和校验位等。将其连接ESP8266模块的串口引脚上。 2. 设置STM32F407的GPIO引脚,用于控制ESP8266模块的复位和使能等功能。这些引脚可以通过STM32CubeMX进行配置。 3. 在代码中,使用STM32 HAL库的串口发送和接收函数,将指令发送到ESP8266模块,以控制其功能。例如,可以发送AT指令来检测ESP8266模块的回复,并获取其状态。 4. 处理ESP8266模块的回复数据。当ESP8266模块收到指令后,会通过串口将回复数据发送给STM32F407。我们可以使用串口中断或轮询的方式来接收和处理这些数据。 5. 解析ESP8266模块的回复数据,以获得所需的信息。例如,可以解析WiFi连接状态、接收到的数据等。 6. 根据需要,设计并实现额外的功能,例如WiFi模式切换、网络连接、数据传输等。 需要注意的是,ESP8266模块的固件版本可能会影响其指令集和功能支持。因此,您需要根据ESP8266模块的固件版本来选择合适的指令和协议。 实现STM32F407驱动ESP8266模块需要一定的嵌入式系统开发经验和对STM32ESP8266的了解。同时,还需要参考STM32F407ESP8266的官方文档和资料,以确保正确配置硬件和软件。 ### 回答2: 使用STM32F407驱动ESP8266模块需要进行以下步骤: 1. 准备硬件连接:将ESP8266模块的TX引脚连接STM32F407的串口RX引脚,将ESP8266模块的RX引脚连接STM32F407的串口TX引脚,同时将它们的地线连接起来。 2. 配置STM32F407串口:打开STM32F407开发环境,进入对应的配置界面,选择合适的串口(如USART1或USART2),设置波特率、数据位、停止位和校验位等参数。 3. 编写驱动程序:在STM32F407的固件库(或者CubeMX生成的初始化代码)中,找到串口相关函数,如初始化、发送和接收等函数,使用这些函数来实现ESP8266模块之间的通信。调用初始化函数来配置串口,通过发送函数将指令发送给ESP8266模块,通过接收函数接收来自ESP8266模块的响应。 4. 设置ESP8266模块:使用AT指令集来设置和控制ESP8266模块。通过串口向ESP8266发送AT指令,并通过串口从ESP8266接收响应。根据需要,可以发送指令来配置无线网络参数、连接到无线网络、发送或接收数据等。 5. 调试和测试:在代码编写完成后,将STM32F407ESP8266模块连接到计算机上,运行程序并检查输出结果。根据需要进行调试和修改代码,确保与ESP8266模块的通信正常。 总之,STM32F407驱动ESP8266主要包括串口配置、使用固件库函数实现ESP8266通信和使用AT指令设置和控制ESP8266模块。通过合适的硬件连接和正确的代码编写,可以实现STM32F407ESP8266模块之间的稳定通信

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值