ESP8266作为一款轻量级的嵌入式WIFI芯片,因为其短小精悍被大家广泛应用,这里总结一下自己最近用这块芯片(确切的说,我只是拿来当WIFI模块用)的一些收获,如果有错误请不吝赐教,谢谢~
1. 基础知识
刚拿到这个模块时候,真的是不懂,因为没有了解过TCP/IP协议,所以对连接一头雾水,如果有其他小伙伴也是的话,不妨移步上一篇 《TCP/IP协议解读(1)—整体框架把握》,不想读的朋友也没问题,大致意思如下
:
而ESP8266这个模组,帮我们封装到网络层,即我们只需要知道我们知道WIFI用户名、WIFI密码、要传到哪个IP地址和哪个端口这四个信息,就可以将信息从ESP8266传到对应IP地址的对应程序中(一般调试的时候用网络调试助手)。
所以应该做的准备:
- 硬件:ESP8266模组或者开发板,杜邦线,MCU开发板;
- 软件:IDE,网络调试助手,串口调试助手;
2.连接步骤和AT命令:
我使用的是AT命令对ESP8266模组进行的操作,比较笨但是好用:AT指令是应用于终端设备与PC应用之间的连接与通信的指令,基本格式是:AT+cmd。
端口配置,采用STM32开发板;
static void ESP8266_GPIO_Config ( void );
static void ESP8266_USART_Config ( void );
static void ESP8266_USART_NVIC_Configuration ( void );
void ESP8266_Init ( void )
{
ESP8266_GPIO_Config (); //GPIO口初始化
ESP8266_USART_Config (); //与WIFI模组通信的usart口初始化
macESP8266_RST_HIGH_LEVEL(); //硬件复位
macESP8266_CH_DISABLE(); //CH口失能,使能时传输才有效
}
static void ESP8266_GPIO_Config ( void )
{
GPIO_InitTypeDef GPIO_InitStructure;
macESP8266_CH_PD_APBxClock_FUN ( macESP8266_CH_PD_CLK, ENABLE );
GPIO_InitStructure.GPIO_Pin = macESP8266_CH_PD_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init ( macESP8266_CH_PD_PORT, & GPIO_InitStructure );
macESP8266_RST_APBxClock_FUN ( macESP8266_RST_CLK, ENABLE );
GPIO_InitStructure.GPIO_Pin = macESP8266_RST_PIN;
GPIO_Init ( macESP8266_RST_PORT, & GPIO_InitStructure );
}
static void ESP8266_USART_Config ( void )
{
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
/* config USART clock */
macESP8266_USART_APBxClock_FUN ( macESP8266_USART_CLK, ENABLE );
macESP8266_USART_GPIO_APBxClock_FUN ( macESP8266_USART_GPIO_CLK, ENABLE );
/* USART GPIO config */
/* Configure USART Tx as alternate function push-pull */
GPIO_InitStructure.GPIO_Pin = macESP8266_USART_TX_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(macESP8266_USART_TX_PORT, &GPIO_InitStructure);
/* Configure USART Rx as input floating */
GPIO_InitStructure.GPIO_Pin = macESP8266_USART_RX_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(macESP8266_USART_RX_PORT, &GPIO_InitStructure);
/* USART1 mode config */
USART_InitStructure.USART_BaudRate = macESP8266_USART_BAUD_RATE;
USART_InitStructure.USART_WordLength