2. Wi-Fi 基础与 ESP8266 入门
这一章,我们聊聊 Wi-Fi 和 ESP8266。说实话,Wi-Fi 协议栈看起来挺复杂,但实际用起来,你只需要抓住几个关键点就行。ESP8266 这块芯片,我用了好多年,从最早的 AT 固件到现在的 Arduino 生态,踩过不少坑,也积累了一些经验。今天一次性分享给你。
2.1 Wi-Fi 协议栈(802.11 b/g/n)
Wi-Fi 协议栈,说白了就是一套通信规则。它定义了设备怎么连、怎么传数据、怎么避免冲突。我们最常接触的是 802.11 b/g/n 这三个标准。
为什么是这三个?因为 802.11 a 用的是 5GHz 频段,穿透力差,早期物联网设备很少用。而 802.11 ac/ax 虽然快,但对芯片要求高、功耗大,不适合低成本的嵌入式方案。所以 b/g/n 成了 IoT 的主流。
| 标准 | 频段 | 最大速率 | 调制方式 | 典型场景 |
|---|---|---|---|---|
| 802.11b | 2.4 GHz | 11 Mbps | DSSS / CCK | 老旧设备、低速率传感器 |
| 802.11g | 2.4 GHz | 54 Mbps | OFDM | 兼容 b 的升级场景 |
| 802.11n | 2.4 / 5 GHz | 最高 600 Mbps | OFDM + MIMO | 当前 IoT 主流 |
我个人习惯,新项目一律选 802.11n。原因很简单:兼容性好、速率够用、芯片便宜。802.11b 太慢,传个固件升级包能急死人。802.11g 虽然快,但很多廉价模块不支持。802.11n 是当前最稳妥的选择。
2.2 ESP8266 模块介绍
ESP8266 是乐鑫(Espressif)在 2014 年推出的一款 Wi-Fi SoC。当时一出来就把整个行业震住了——一颗芯片集成了 32 位 MCU、Wi-Fi MAC/基带/射频、TCP/IP 协议栈,价格才几块钱。
我记得第一次拿到 ESP8266 的样品,第一反应是「这玩意儿能跑 TCP/IP?」结果试了一下,还真能。后来它成了物联网开发者的标配,几乎人手一块。
市面上常见的 ESP8266 模块有几种:
- ESP-01:最早期的版本,8 个引脚,2MB Flash。适合做简单的 Wi-Fi 透传。
- ESP-12F:目前最常用的版本,16 个引脚,4MB Flash。天线性能好,IO 口多。
- ESP-07:带陶瓷天线和 IPEX 座,适合需要外接天线的场景。
- NodeMCU:不是模块,是开发板。集成了 USB 转串口,插上电脑就能用。
选型时我有个原则:能用 ESP-12F 就别用 ESP-01。ESP-01 的 Flash 太小,固件升级空间有限,而且 IO 口太少,稍微复杂点的项目就不够用。ESP-12F 贵不了几块钱,但省心很多。
2.3 AT 指令集基础
AT 指令,全称 Attention Command。最早是给调制解调器用的,后来被 Wi-Fi 模块继承了下来。ESP8266 出厂默认就烧录了 AT 固件,你只需要通过串口发指令就能控制它。
AT 指令的格式很简单:
AT+<命令名>=<参数1>,<参数2>,...
每条指令以 AT 开头,以 \r\n 结尾。模块收到后会返回 OK 或 ERROR。
常用的 AT 指令有这些:
| 指令 | 功能 | 示例 |
|---|---|---|
AT |
测试连接 | 返回 OK |
AT+RST |
复位模块 | 重启 |
AT+CWMODE=1 |
设置 Wi-Fi 模式(Station) | 设为客户端模式 |
AT+CWJAP="SSID","PWD" |
连接 Wi-Fi | 连入指定热点 |
AT+CIFSR |
查看 IP 地址 | 显示本机 IP |
AT+CIPSTART="TCP","192.168.1.100",8080 |
建立 TCP 连接 | 连接服务器 |
AT+CIPSEND=<长度> |
发送数据 | 发送指定长度的数据 |
实际项目中,我一般不会手动敲 AT 指令。而是用单片机(比如 STM32)通过串口自动发送。但调试阶段,用串口助手手动敲指令非常有用,能快速验证模块是否正常。
2.4 固件烧录
ESP8266 出厂自带 AT 固件,但如果你想用 Arduino 或 SDK 开发,就得自己烧录固件。烧录本身不复杂,但有几个细节容易出错。
烧录需要准备:
- USB 转 TTL 模块(推荐 CP2102 或 CH340)
- ESP8266 模块(比如 ESP-12F)
- 烧录软件(乐鑫官方 Flash Download Tool)
- 固件文件(.bin 格式)
接线方式:
| ESP8266 引脚 | USB 转 TTL | 备注 |
|---|---|---|
| VCC | 3.3V | 绝对不能接 5V |
| GND | GND | 共地 |
| TX | RX | 交叉连接 |
| RX | TX | 交叉连接 |
| GPIO0 | GND | 拉低进入烧录模式 |
| EN / CH_PD | 3.3V | 使能引脚 |
烧录步骤:
- 将 GPIO0 拉低到 GND,然后给模块上电或按复位键。
- 打开 Flash Download Tool,选择正确的串口号和波特率(一般 115200)。
- 加载固件文件,填写对应的 Flash 地址(AT 固件通常从 0x0 开始)。
- 点击 START,等待烧录完成。
- 烧录完成后,断开 GPIO0 的 GND 连接,重新上电。
烧录完成后,用串口助手打开,发一个 AT,如果返回 OK,就说明固件烧录成功了。
2.5 本章知识体系
下面这张图,把 Wi-Fi 协议栈、ESP8266 模块、AT 指令和固件烧录的关系串了起来。你可以把它当作本章的思维导图。
嗯,这张图把本章的四个核心模块串在了一起。你可以看到,Wi-Fi 协议栈是理论基础,ESP8266 模块是硬件载体,AT 指令是控制手段,固件烧录是开发前提。四者缺一不可。
我个人建议,初学者先别急着写代码。花点时间把 AT 指令玩熟,用串口助手手动连一次 Wi-Fi、发一次 TCP 数据。这个过程能帮你建立对 Wi-Fi 通信的直观理解。等你把 AT 指令摸透了,再去看 SDK 或 Arduino 库,会发现很多东西都是相通的。