当前位置:   article > 正文

正点STM32F407核心板+ESP8266实现简单通信(详细讲解)_esp8266与stm32连接原理图

esp8266与stm32连接原理图

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四根线

指令如下,方便大家粘贴

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

电脑串口助手实操图:

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

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

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

主要代码如下

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

这个是common.c的

  1. void esp8266_start_trans(void)
  2. {
  3. atk_8266_send_cmd("AT+CWMODE=1","OK",50);//设置为STA模式
  4. atk_8266_send_cmd("AT+RST","ready",100);//重启并生效
  5. delay_ms(1000);
  6. delay_ms(1000);
  7. delay_ms(1000);
  8. delay_ms(1000);
  9. while(atk_8266_send_cmd("AT+CWJAP=\"TP0_LAB\",\"3+1cxsys\"","WIFI GOT IP",800));//WIFI
  10. //while(atk_8266_send_cmd("AT+CWJAP=\"iPhone\",\"123123123\"","WIFI GOT IP",800));
  11. atk_8266_send_cmd("AT+CIPMUX=1","OK",20);
  12. atk_8266_send_cmd("AT+CIPSTART=\"TCP\",\"192.168.1.100\",8086","OK",200);
  13. //while(atk_8266_send_cmd("AT+CIPSTART=\"TCP\",\"192.168.1.100\",8086","OK",200));//WIFI
  14. //while(atk_8266_send_cmd("AT+CIPSTART=\"TCP\",\"172.20.10.10\",8086","OK",200));
  15. atk_8266_send_cmd("AT+CIPMODE=1","OK",200);
  16. atk_8266_send_cmd("AT+CIPSEND","ND",50);
  17. }

其他地方比如

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

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

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

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

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

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/718160
推荐阅读
相关标签
  

闽ICP备14008679号