ESP8266WIFI模块使⽤说明模块简介
1. 模块引脚及⼯作⽅式
(1)引脚定义:
Function Description
URXD UART_RXD,接收
UTXD UART_TXD,发送
RST 外部Ret信号,低电平复位,⾼电平⼯作(默认⾼)
GND GND
VCC 3.3V,模块供电
中国传统十大名花GPIO 0 ⼯作模式选择:悬空:FlashBoot,⼯作模式;下拉:UARTDownload,下载模式
CH_PD ⾼电平⼯作;低电平模块供电关掉
GPIO 2 (1)开机上电时必须为⾼电平,禁⽌硬件下拉;(2)内部默认已拉⾼
2、接线说明:
(1)与串⼝连接
串⼝模块 ESP8266模块
VCC VCC(3.3V) &CH_PD
TXD URXD
RXD UTXD
GND GND
(2)接线⽅式
STM32F407如何与ESP8266连接
儿童的玩具注:本代码只使⽤了GND,VCC,CH_PD,RX,TX这些引脚
运⽤串⼝3实现与WIFI_ESP8266实现通信
usartT3_ RX --------------- PB.11 (该为串⼝3的引脚)
usartT3_ TX --------------- PB.10痔疮栓怎么用
如何穿鞋带连接⽅式
ESP8266 STM32F407
GND ---------------------> GND
VCC ---------------------> 3.3V
TX ---------------------> usartT3_ RX(PB.11)
RX ---------------------> usartT3_ TX(PB.10)
CH_PD ---------------------> 3.3V
具体连接⽅式如下图:
代码简介
1. 主函数
1. 延时函数初始化
delay_init(168);
1. ESP8266 GPIO串⼝初始化
Esp8266_GPIO_Init();
此处根据⼀中的连接⽅式可知,VCC、CH_PD分别接3.3V直流电压,GND与单⽚机共地即可需要配置的仅有TX和RX两个接⼝。其
中,TX配置在usartT3_ RX(PB.11),设置为浮空输⼊模式GPIO_OType_OD,⽤于串⼝输⼊指令;RX配置在usartT3_ TX(PB.10),设置为推挽输出模式GPIO_OType_PP,⽤于接收和查看WIFI模块的回复状态和配置情况。
1. 设置系统中断优先级分组
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
1. 串⼝初始化
uart_init(115200);
注:打开串⼝调试助⼿时需设置正确的波特率,否则串⼝将⽆法使⽤
1. ESP8266 连接配置及模式选择
ESP8266_InitMODE( ENUM_Net_ModeTypeDef ATMODE , ENUM_Net_Style_ModeTypeDef ATmodestyle , char * pSSID , char * pPassWord ,char * startclo,char *portnumber , char * IPADD)
例如:ESP8266_InitMODE(STA,Server,"DQXY","0745*******","1","8080","192.168.97.10")
ENUM_Net_ModeTypeDef ATMODE,为配置模式,共三种模式,模式⼀为STA(发送模式),模式⼆为AP(接收模式),模式三为STA\AP共存模式,此程序设置的为模式⼀STA模式。
ENUM_Net_Style_ModeTypeDef ATmodestyle为模式设置共两种模式,Server为设置服务器模式,也可设置为客户端(Client)模式即将Server改为Client即可。需要注意的是配置为服务器或客户端之后,WIFI模块将作为客体或主体被使⽤功能类似,看使⽤者需要进⾏选择。
pSSID为配置需要连接的WIFI名称,pPassWord 为配置需要连接的WIFI密码,设置正确之后能够接⼊需要连接的⽹络。
Startclo为开启或关闭Server模式bool ESP8266_CIPSERVER ( char * startclo,char *portnumber )
//AT+CIPSERVER= <mode> mode: 1 开启Server模式 0 关闭Server模式//AT+ CIPMUX=1时才开启服务器;关闭服务器时需要重启即AT+RST,服务器开启后需要设置本地端⼝号即*portnumber
portnumber为端⼝号,端⼝号作为信号连接的线路端⼝存在,使⽤⽹络调试助⼿调试时需设置正确的端⼝号才能够与模块建⽴连接,使⽤ver模式时,⾃⼰去配置端⼝号 如8080;\\使⽤client模式时 看⽹络助⼿的端⼝号 ,然后进⾏填写。
IPADD为IP地址,在Client模式下需要建⽴TCP连接,此时就要根据欲加⼊⽹络的IP地址填写输⼊数据建⽴连接,⽤⽹络调试助⼿形成的模拟ip:char * IPADD只有⽤client模式时需要\\启⽤ver模式时不需要填写 。
1. 开始while循环输出信号和接收信号
注:以下函数需要WIFI模块配置成功之后才能使⽤,即需与对应⽹络成功建⽴连接才能使⽤。
while(1)
{
if(ESP8266_ReceiveString()!=0)
{
Usart_SendString(USART1,ReceiveString);
receive_length = strlen(ReceiveString);
memt(ReceiveString,0,receive_length);
receive_length = 0;
}
ESP8266_SendString("123456");
}
Usart_SendString(USART1,ReceiveString)本函数⽤于将接收到的数据发送数据到串⼝,ReceiveString为接收内容的指针。
receive_length = strlen(ReceiveString),本函数⽤于获取发送内容的字节长度。
memt(ReceiveString,0,receive_length),⽤于将指针数据清空,以便下次继续接收数据。
receive_length = 0将数据长度置零。
ESP8266_SendString("123456")本函数⽤于发送数据给接⼊设备。“123456”为发送数据内容,可任意更改。
1. 主函数代码细化分析
初生牛犊不怕虎的意思
关于学习的四字词语(⼀)ESP8266_InitMODE( ENUM_Net_ModeTypeDef ATMODE , ENUM_Net_Style_ModeTypeDef ATmodestyle , char * pSSID , char * pPassWord ,char * startclo,char *portnumber , char * IPADD)函数细化:
进⼊本函数之后
(1)对WIFI模块进⾏测试,测试函数为ESP8266_AT_Test();
输⼊AT若输出OK说明测试成功
(2)AT测试成功直接之后开始复位WIFI模块,复位函数为ESP8266_ATRST_Test();
输⼊AT+RST若输出OK说明复位成功
(3)(1)和(2)两函数测试成功之后通过函memt(USART3_RX_BUF,0,USART3_RX_STA);
将串⼝接收指针置零,开始函数while(! ESP8266_ATCWMODE_Test( ATMODE))等待模式数据传⼊ATMODE为指针,在主函数中设置传⼊。
进⼊函数ESP8266_ATCWMODE_Test( ATMODE)之后根据写⼊数据,选择配置三种模式,对WIFI模块输⼊AT+CWMODE=1或AT+CWMODE=2或AT+CWMODE=3配置STA或AP或STA+AP模式,输出OK即为配置成功。如
(4)模式配置成功之后通过函memt(USART3_RX_BUF,0,USART3_RX_STA);
荷花淀派十步香草将串⼝接收指针置零。
判断模式进⾏配置如果为STA+AP或AP模式,如果是就开始函数while(! WIFI_ATCWSAP( pSSID, pPassWord)),等待WIFI模块创建WIFI。
进⼊函数WIFI_ATCWSAP( pSSID, pPassWord)之后,根据⾃⼰设置的WIFI名称pSSID和密码pPassWord对WIFI模块输⼊指令
AT+CWSAP="pSSID","pPassWord",1,4指令,输出OK说明设置成功。例如:AT+CWSAP="ESP_8266","123456789",1,4 设置模块的热点名称和密码,设置成功之后可通过⼿机、电脑等⽹络设备检索到名为ESP_8266的WIFI,并可以通过输⼊密码12345789连接
WIFI模块建⽴的WIFI。
(5)继续判断模式是否为STA+AP或STA模式如果是就开始函数while(! ESP8266_CWJAP ( pSSID, pPassWord))等待WIFI模块接⼊其他⽆线⽹络。
进⼊函数ESP8266_CWJAP ( pSSID, pPassWord)之后,根据主函数中输⼊的欲加⼊⽹络的WIFI名称和密码对模块输⼊AT+CWJAP ="pSSID","pPassWord"指令接⼊对应⽹络,
输出OK说明连接成功。例如:AT+CWJAP ="ESP_8266","123456789",1,4 设置模块需要连接的名称和密码,设置成功之后模块可连接到名为ESP_8266密码为123456789的⽹络。
(6)根据主函数中输⼊的Server或Client判断需要的模式进⾏配置
(6.1)如果是Server模式通过函数while(! ESP8266_ATCIPMUX())进⾏多线连接设置进⼊函数ESP8266_ATCIPMUX()之后对模块输⼊AT+CIPMUX=1或0指令,配置为多线连接模式输出OK说明配置成功。
(6.2)后根据主函数中输⼊的开关数字(startclo)以及端⼝号(portnumber),通过函数while(!
ESP8266_CIPSERVER(startclo,portnumber))配置Server打开与关闭以及端⼝号。进⼊函数
ESP8266_CIPSERVER(startclo,portnumber)之后
对模块输⼊指令AT+CIPSERVER=startclo,portnumber输出OK说明配置成功。
例如ESP8266_CIPSERVER(1,8080)即为设置打开服务器模式,端⼝号为8080
(7)判断是否设置为Client模式
(7.1)如果是通过函数while(! ESP8266_ATCIPMUX())配置为多线连接模式配置⽅式同(6.1)。
(7.2)配置成功后通过函数(! ESP8266_CIPSTART( IPADD, portnumber))配置所需要建⽴TCP连接的⽹络的IP地址和端⼝号,
进⼊函数ESP8266_CIPSTART( IPADD, portnumber)后对模块输⼊AT+CIPSTART=0,TCP,IPADD,portnumber指令输出OK说明配置成功,即可作为客户端接⼊IP地址为IPADD,端⼝号为portnumber的TCP
(7.3)连接成功后通过函数ESP8266_CIPSTO();设置超时时间对模块输⼊AT+CIPSTO=5000设置超时时间为5000,输出OK说明配置成功。
(7.4)超时时间设置成功后进⼊函数ESP8266_CIFSR();获取模块IP地址并将其打印到串⼝上,以便服务器检索与调配,通过对WIFI模块输⼊AT+CIFSR指令可输出本地IP地址
(8)判断模式是否为STA+AP或STA模式如果是通过函数while(ESP8266_CIPSTATUS()!=3);判断当前WIFI模块连接情况,(若⽆连接将⼀直循环直到连接成功)进⼊函数ESP8266_CIPSTATUS()对WIFI模块输⼊指令AT+CIPSTATUS获取当前连接情况,若有连接将输出STATUS:3,并输出对应连接的IP地址和端⼝号
以上配置通过说明成功建⽴连接!
while(1)内循环函数
1. WIFI建⽴连接后通过ESP8266_ReceiveString()判断是否接收到数据,进⼊ESP8266_ReceiveString()之后通过strstr (
USART3_RX_BUF, "+IPD" )判断是否有接收字符“+IPD”如果有,说明接收到数据通过函数 sizeof(ReceiveString)获取接收数据字符串长度否则字符串长度为0,数据接收成功后通过函数Usart_SendString(USART1,ReceiveString)将接收数据传给串⼝⼀,并打印在串⼝调试助⼿上,后通过 memt(ReceiveString,0,receive_length)以及receive_length = 0将指针清空,并将数据长度置零。
2. 发送函数ESP8266_SendString (char * shuju),其中“shuju”为发送内容指针,可根据需要更改。
3. (2.1)进⼊该函数之后,⾸先将shuzu指针的内容发送给串⼝三,后通过num_length = sizeof(shuju)得到发送数组长度
(2.2)通过sprintf ( cCmd, "AT+CIPSEND=0,%d\r\n",num_length )向WIFI模块输⼊AT+CIPSEND=0,num_length指令,其中0为第⼏个连接,num_length为数据长度,并开始输⼊发送内容并将串⼝三中收到的数据发送出去,输出OK说明发送完成
4. 注意事项:
(1)学习wifi——ESP8266时,请先掌握好基础知识,⽐如 AP,STA是⽤来⼲什么的、服务器和客户
端的区别(2)需要⼀定的C 语⾔基础,能看懂基本函数的⽤法,对STM32有⼀定接触和了解(3) 使⽤本代码时,请先掌握好⽹络调试助⼿的⽤法,懂得基本IP地址以及相关协议的意义(4) 使⽤client时,每⼀次更改了模式(AP STA),需要重新配置⼀遍⽹络调试助⼿的虚拟⽹络IP和端⼝号 (⽹络调试助⼿的模式应该选择为TCP ver)(5) 使⽤ver时,请记得去⾃⾏配置好⽹络调试助⼿,(⽹络调试助⼿的模式应该选择为TCP client ,远程主机IP看串⼝打印出来的IP ,端⼝号是⾃⼰写⼊程序的那⼀个)(6)由于代码编写程序员能⼒有限,基本功能可以实现,希望⼤家取其精华,弃其糟粕,不⾜之处还请见谅。