ESP8266
conf.h
#define HAL_MODULE_ENABLED
/* #define HAL_CRYP_MODULE_ENABLED /
/ #define HAL_ADC_MODULE_ENABLED /
/ #define HAL_CAN_MODULE_ENABLED /
/ #define HAL_CRC_MODULE_ENABLED /
/ #define HAL_CAN_LEGACY_MODULE_ENABLED /
/ #define HAL_DAC_MODULE_ENABLED /
//#define HAL_DCMI_MODULE_ENABLED
#define HAL_DMA2D_MODULE_ENABLED
/ #define HAL_ETH_MODULE_ENABLED /
/ #define HAL_ETH_LEGACY_MODULE_ENABLED /
/ #define HAL_NAND_MODULE_ENABLED /
/ #define HAL_NOR_MODULE_ENABLED /
/ #define HAL_PCCARD_MODULE_ENABLED /
#define HAL_SRAM_MODULE_ENABLED
#define HAL_SDRAM_MODULE_ENABLED
/ #define HAL_HASH_MODULE_ENABLED /
#define HAL_I2C_MODULE_ENABLED
/ #define HAL_I2S_MODULE_ENABLED /
/ #define HAL_IWDG_MODULE_ENABLED /
#define HAL_LTDC_MODULE_ENABLED
/ #define HAL_RNG_MODULE_ENABLED /
/ #define HAL_RTC_MODULE_ENABLED /
/ #define HAL_SAI_MODULE_ENABLED /
/ #define HAL_SD_MODULE_ENABLED /
/ #define HAL_MMC_MODULE_ENABLED /
#define HAL_SPI_MODULE_ENABLED
#define HAL_TIM_MODULE_ENABLED
#define HAL_UART_MODULE_ENABLED
/ #define HAL_USART_MODULE_ENABLED /
/ #define HAL_IRDA_MODULE_ENABLED /
/ #define HAL_SMARTCARD_MODULE_ENABLED /
/ #define HAL_SMBUS_MODULE_ENABLED /
/ #define HAL_WWDG_MODULE_ENABLED /
/ #define HAL_PCD_MODULE_ENABLED /
/ #define HAL_HCD_MODULE_ENABLED /
/ #define HAL_DSI_MODULE_ENABLED /
/ #define HAL_QSPI_MODULE_ENABLED /
/ #define HAL_QSPI_MODULE_ENABLED /
/ #define HAL_CEC_MODULE_ENABLED /
/ #define HAL_FMPI2C_MODULE_ENABLED /
/ #define HAL_FMPSMBUS_MODULE_ENABLED /
/ #define HAL_SPDIFRX_MODULE_ENABLED /
/ #define HAL_DFSDM_MODULE_ENABLED /
/ #define HAL_LPTIM_MODULE_ENABLED */
#define HAL_GPIO_MODULE_ENABLED
#define HAL_EXTI_MODULE_ENABLED
#define HAL_DMA_MODULE_ENABLED
#define HAL_RCC_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
#define HAL_PWR_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
ESP8266
1. 基础测试与模式设置(第一步)
| 指令功能 | 指令 | 示例指令 | 示例响应 | 说明 |
|---|---|---|---|---|
| 测试通讯 | AT | AT | OK | 检查模块是否正常 |
| 恢复出厂设置 | AT+RESTORE | AT+RESTORE | OK | 必做! 清除原有配置,避免奇怪问题。 |
| 设置工作模式 | AT+CWMODE=<mode> | AT+CWMODE=1 | OK | 1=Station (设备), 2=AP (热点), 3=混合模式。客户端模式选1。 |
| 查询当前模式 | AT+CWMODE? | AT+CWMODE? | +CWMODE:1 | 确认模式设置成功 |
2. 连接Wi-Fi网络(第二步)
| 指令功能 | 指令 | 示例指令 | 示例响应 | 说明 |
|---|---|---|---|---|
| 列出可用AP | AT+CWLAP | AT+CWLAP | +CWLAP:(4,"MyHome",...) | 扫描周围的Wi-Fi网络 |
| 连接AP | AT+CWJAP=<ssid>,<pwd> | AT+CWJAP="MyPhone","12345678" | OK | 连接到你手机或路由器的热点。 注意:SSID和密码需要加英文双引号 |
| 查询IP地址 | AT+CIFSR | AT+CIFSR | +CIFSR:STAIP,"192.168.1.101" | 连接成功后,获取模块被分配的IP地址 |
| 查询连接状态 | AT+CWJAP? | AT+CWJAP? | +CWJAP:"MyPhone" | 查看当前连接的Wi-Fi信息 |
3. TCP/UDP通信(第三步 - 核心)
| 指令功能 | 指令 | 示例指令 | 示例响应 | 说明 |
|---|---|---|---|---|
| 建立TCP连接 | AT+CIPSTART=<type>,<addr>,<port> | AT+CIPSTART="TCP","123.123.123.123",8080 | CONNECT OK | 连接到指定的服务器IP和端口 |
| 建立UDP连接 | AT+CIPSTART=<type>,<addr>,<port>[,<l_port>,<mode>] | AT+CIPSTART="UDP","123.123.123.123",8080,1112,0 | CONNECT OK | 1112是本地端口,0是固定远程IP模式 |
| 发送数据 | AT+CIPSEND=<length> | AT+CIPSEND=11 | > | 模块会返回 >,此时你输入11个字节的数据即可 |
| 进入透传模式 | AT+CIPMODE=<mode> | AT+CIPMODE=1 | OK | 1=开启透传,数据直接转发,不需指定长度 |
| 启动透传发送 | AT+CIPSEND | AT+CIPSEND | > | 进入透传模式后,发送此指令,之后所有串口数据都直接发送到服务器 |
| 退出透传模式 | +++ | 发送 +++ | 注意:不要带回车! 需要稍作延时后再发 | |
| 查询连接状态 | AT+CIPSTATUS | AT+CIPSTATUS | STATUS:3 | STATUS:3 表示已获得IP,STATUS:4 表示已连接TCP/UDP |
| 关闭连接 | AT+CIPCLOSE | AT+CIPCLOSE | CLOSED | 主动关闭TCP/UDP连接 |
4. 作为HTTP客户端(高级应用,基于TCP)
HTTP是基于TCP的应用层协议,你需要手动组装HTTP请求包。
步骤:
AT+CIPSTART="TCP","www.example.com",80(连接网站服务器,HTTP端口80)AT+CIPSEND=100(根据你下面请求的长度来定)在
>后,发送一个标准的HTTP GET请求:http
GET / HTTP/1.1 Host: www.example.com Connection: close(最后需要两个回车换行)
服务器就会返回网页的HTML代码。
实战流程示例:连接TCP服务器并透传
假设你要用STM32控制ESP8266连接并发送 "Hello"。
初始化配置:
at
AT+RESTORE AT+CWMODE=1//要连WIFI 模式 2是等别人连WIFI 热点模式连接Wi-Fi:
at
AT+CWJAP="MyPhone","12345678" // ... 等待几秒,返回 OK AT+CIFSR // 确认拿到IP连接TCP服务器并开启透传:
at
AT+CIPSTART="TCP","192.168.1.100",8080 // ... 返回 CONNECT OK AT+CIPMODE=1//透传 AT+CIPSEND // ... 返回 >

