2020-12-07

本文详细介绍了如何使用STM32通过AT指令配置ESP8266模块,包括设置多连接模式、修改SSID和密码、开启服务器等步骤。此外,还讲解了电脑通过网络调试助手与ESP8266建立TCP连接的流程。在单片机实现数据收发部分,展示了如何用字符数组发送初始化命令,并提供了可能出现的错误及解决办法。最后,简述了ESP8266的透传模式工作原理。
摘要由CSDN通过智能技术生成

基于STM32的ESP8266使用教程

特别说明:

1.AT指令:指的是AT+...固定格式的指令(如AT+RST就是复位指令)

2.ESP8266使用的是USB转TTL接口

3.ESP8266使用固定波特率115200

开发资源:

Sscom42串口调试工具

USB转TTL模块(串口调试,3.3V或5V供电)

网络调试助手(TCP)

 

第一步:ESP8266连线及配置

ESP8266一共8个引脚:分别是UTXD、GND、CH_PD(使能)、RST、GPIO0、GPIO1、VCC、URXD

连线规则:

ESP8266                     stm32

UTXD---------------------------------------RX

URXD---------------------------------------TX

VCC-----------------------------------------3.3V

GND----------------------------------------GND

CH_PD-------------------------------------3.3V

连线完成之后,打开串口。

  1. 在字符串输入框中输入AT+RST。点击发送。
  2. 对模块进行配置,将模块配置成多连接模式,请输入AT+CWMODE=3,响应ok则成功。
  3. 修改模块名字和密码,最后两位是通道号和密码模式,默认1,3就行

AT+CWSAP=“模块名”,“密码”,1,3 响应ok则成功。

  1. 启动多连接,AT+CIPMUX=1 响应ok则成功。
  2. 建立SERVER,端口8080,AT+CIPSERVER=1,8080 响应ok则成功

此时我们建立的wifi热点就可以被连接。(建立TCP连接则AT+CIPSTART=“TCP”,“xxx.xxx.xxx.xxx”,xxxx)。

 

第二步:电脑连接到wifi后与其进行通信

  WIFI 直连

 

  1. 在网络调试助手中设置协议类型为“TCP Client”,服务器IP地址为“192.168.4.1”(IP地址固定),查询方法为AT+CIFSR,服务器端口为“8080”,点击连接后串口接收信息为0,connent

HEX显示为30 2C 43 4F 4E 45 43 54 0D 0A,特别注意是以“0D 0A”结尾。

  1. 此时连接已经建立,开始发送数据,命令为AT+CIPSEND=0,5(注意分割符为逗号),第一个数为多连接中的序号,即“0,connent”中的0,第二个数字5就是想要发送的字符个数,然后输入HELLO,点击发送,响应为SEND OK即为发送成功。
  2. 通过网络调试助手发送“HI”,在串口显示+IPD,0,2:HI 其中+IPD是固定部分,0是连接序号,2是字符数量,冒号后为接收内容。

 

第三步:通过单片机实现数据收发

  1. 将命令AT+RST(回车)用字符数组的形式表示出来

u8 at_rst[] = {0x41,0x54,0x2B,0x52,0x53,0x54,0x0D,0x0A};(用HexEditor查看字符的十六进制)

然后将AT+CWMODE  AT+CWSAP=“模块名”,“密码”,1,3  AT+CIPMUX=1  AT+CIPSERVER=1,8080都用字符数组表示出来。

  1. 然后写初始化函数

Void ESP8266_Init(void)

{

Int i = 0;

For(i = 0 ; i < 13 ; i ++)

{

USART1->DR = at_cwmode[i];//送出AT+CWMODE=3(回车)

While((USART->SR & 0x40) == 0);//直到发送成功

}

My_delay_ms(1000);

 

For(i = 0 ; i < 8 ; i ++)

{

USART1->DR = at_rst[i];//送出AT+RST(回车)

While((USART->SR & 0x40) == 0);//直到发送成功

}

My_delay_ms(2000);

 

For(i = 0 ; i < 42; i ++)

{

USART1->DR = at_cwsap[i];

While((USART->SR & 0x40) == 0);

}

My_delay_ms(1000);

 

For(i = 0 ; i < 13 ; i ++)

{

USART1->DR = at_cipmux[i];

While((USART->SR & 0x40) == 0);

}

My_delay_ms(1000);

 

For(i = 0 ; i < 21 ; i ++)

{

USART1->DR = at_cipserver;

While((USART->SR & 0x40) == 0);

}

 

}

注:USART1->DR是数据寄存器,USART1->SR是状态寄存器,与0x40做与运算时判断第6位,当第6位为1时,表示发送完成。

3.关闭连接,AT+CIPCLOSE=0

 

通讯基本原理:

STM32与esp8266(WIFI)通信原理实质就是通过串口通讯,单片机通过串口发送AT指令给esp8266,从而实现通讯。

透传模式:

透传就是指不需要关心wifi协议是如何实现的。所需要做的就是A通过串口发送数据,B通过串口接收数据,整个过程中A串口和B串口就像是用导线直连起来一样。则对于开发人员来看,就是完全透明的。透传模式在ESP8266中的具体表现在:如果不开启透传模式,我们发送数据前都必须先发送指令,如AT+CIPSEND=4,如果开启透传模式,我们就不需要在每次发送数据之前都发送指令,只需要开始发送一次,之后发送的所有内容全部当成数据,当我们想退出透传模式时,只需发送“+++”即可,注意此时+++后面不接回车。

自己出现的错误:

  1. Keil5报错"no source": Error:  #5: cannot open source input file "C:\Users\哟呵\AppData\Local\Temp\p45c-2": Permission denied

原因是自己的账户名为中文,重新创建了一个英文账户,问题解决。

  1. 注意wifi的密码必须是8位,否则提示ERROR。
  2. 在用网络调试助手连接ESP8266创建的wifi时,必须先打开自己电脑wifi热点连接功能,并连接上ESP6266创建的wifi,才能用网络调试助手进行TCP连接。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值