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 是当前最稳妥的选择。

小提示: 802.11n 支持 20MHz 和 40MHz 两种带宽。40MHz 速率更高,但干扰也大。在密集部署的场景(比如智能楼宇),我建议锁 20MHz,稳定性会好很多。

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 贵不了几块钱,但省心很多。

注意: ESP8266 的工作电压是 3.3V,绝对不能直接接 5V!我曾经有一次接反了,芯片直接冒烟。另外,它的 GPIO 口也是 3.3V 电平,驱动 5V 的外设需要加电平转换。

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)通过串口自动发送。但调试阶段,用串口助手手动敲指令非常有用,能快速验证模块是否正常。

避坑指南: 我曾经遇到一个奇怪的问题——AT+CWJAP 总是返回 ERROR。查了半天,发现是 Wi-Fi 密码里有个特殊字符「#」,串口工具把它当成了控制字符。解决办法:用 URL 编码,把 # 替换成 %23。

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 使能引脚

烧录步骤:

  1. 将 GPIO0 拉低到 GND,然后给模块上电或按复位键。
  2. 打开 Flash Download Tool,选择正确的串口号和波特率(一般 115200)。
  3. 加载固件文件,填写对应的 Flash 地址(AT 固件通常从 0x0 开始)。
  4. 点击 START,等待烧录完成。
  5. 烧录完成后,断开 GPIO0 的 GND 连接,重新上电。
重要: 烧录时如果一直显示等待同步,八成是 GPIO0 没拉低,或者 EN 引脚没接高电平。还有一种情况——你的 USB 转 TTL 供电不足,ESP8266 启动瞬间电流很大,换个带独立供电的模块试试。

烧录完成后,用串口助手打开,发一个 AT,如果返回 OK,就说明固件烧录成功了。

2.5 本章知识体系

下面这张图,把 Wi-Fi 协议栈、ESP8266 模块、AT 指令和固件烧录的关系串了起来。你可以把它当作本章的思维导图。

第2章知识体系图 第2章:Wi-Fi基础与ESP8266入门 - 知识体系 ESP8266 入门 Wi-Fi 协议栈 ESP8266 模块 AT 指令集 固件烧录 802.11 b/g/n 2.4 GHz 频段 ESP-01 ESP-12F 连接Wi-Fi TCP通信 Flash工具 GPIO0拉低 核心思路 理解协议 → 选对模块 → 掌握指令 → 学会烧录

嗯,这张图把本章的四个核心模块串在了一起。你可以看到,Wi-Fi 协议栈是理论基础,ESP8266 模块是硬件载体,AT 指令是控制手段,固件烧录是开发前提。四者缺一不可。

我个人建议,初学者先别急着写代码。花点时间把 AT 指令玩熟,用串口助手手动连一次 Wi-Fi、发一次 TCP 数据。这个过程能帮你建立对 Wi-Fi 通信的直观理解。等你把 AT 指令摸透了,再去看 SDK 或 Arduino 库,会发现很多东西都是相通的。