ESP32 入门教程(一):使用 GPIO 控制 LED 亮灭

一、前言

点亮 LED 是单片机开发的Hello World,也是入门硬件交互的第一课。通过本实验,你能搞懂电压、电流、回路三大基础电路概念,掌握 GPIO 输出控制逻辑,建立软件代码控制物理硬件的思维,为后续电机、传感器、物联网项目打下基础。

ESP32 是集成 WiFi + 蓝牙的 3.3V 单片机,相比传统 51 单片机,自带无线通信功能,是物联网开发首选。本文从零讲解电路原理、硬件接线、Arduino 代码、烧录全流程,零基础新手也能一次成功。 本篇目标:使用 ESP32 GPIO5 引脚驱动 LED,实现 0.5 秒周期循环闪烁。

二、硬件准备

本次实验所需全部元器件清单:

  1. ESP32-WROOM/S3 开发板 ×1
  2. USB 数据线(数据传输款,仅充电线无法烧录)×1
  3. 红色直插 LED 灯珠 ×1
  4. 220Ω 色环限流电阻 ×1
  5. 830 孔面包板 ×1
  6. 公对母杜邦线若干

三、核心原理简析

1. 硬件基础

LED硬件构造

LED 是一种将电能转化为光能的半导体器件:

  • 极性:LED 具有正负极之分。长脚为正极(阳极),短脚为负极(阴极)。电流只能从正极流向负极,反向连接时不导通。

  • 正向压降:不同颜色的LED具有不同的导通电压。

  • 电流限制:LED 对电流非常敏感。当电压超过其正向导通电压后,微小的电压增加都会导致电流急剧上升。

1.4 限流电阻的作用

(1)LED 发光三大必要条件

LED 想要正常点亮,必须同时满足三点:存在电位差、形成完整闭合回路、回路电流受控。

  1. 电压:两点电位差值,ESP32 高电平输出 3.3V,GND 接地为 0V,二者形成驱动电压;
  2. 电流:电荷定向移动,是 LED 发光根本,无电流则灯不亮;
  3. 闭合回路:电流从 GPIO 流出,经过电阻、LED,最终回到 GND,线路断开直接灭灯。
水路类比通俗理解电路逻辑

把电路等效成供水系统,快速理解抽象电学概念:

  • 3.3V GPIO = 高处水塔(高电位),GND = 低处水池(0V 低电位)
  • 电流 = 水流,只会从高电位流向低电位
  • GPIO 输出HIGH= 打开水龙头,产生电流;LOW= 关闭水龙头,切断电流
  • 220Ω 限流电阻 = 管道节流阀,限制电流大小,防止烧毁 LED
(2)ESP32 关键硬件特性
  1. 逻辑电压3.3V,禁止外接 5V 电压,否则烧毁引脚;上电默认引脚为高阻输入,不会自动输出电压,必须代码配置输出模式;
  2. GPIO:通用输入输出引脚,负责外接外设;GND 为公共负极,是回路必备;
  3. 引脚避坑:
    • 禁用输出引脚:GPIO6/7/8/9/11(Flash 引脚)、34/35/36/39(仅输入)、0/2/12/15(启动配置脚);
    • 推荐安全引脚:4、5、13、14、16、17、18、19、21、22、23、25、26、27、32、33,本实验使用 GPIO5。
(3)LED 与限流电阻规则
  1. LED 有极性:长脚 = 正极,短脚 = 负极,电流只能正进负出,接反不亮;正极必须串联电阻再接 GPIO,负极接 GND;
  2. 限流电阻不可省略:推荐 220Ω~330Ω,将回路电流限制在 5~10mA 安全区间,无电阻会瞬间击穿 LED、烧坏开发板引脚。
(4)面包板使用规则
  • 中间区域:同一竖列金属片连通,元件插同一列即导通;
  • 两侧电源轨:红线为正极、蓝线为负极,整条导轨互通,统一供电。

2. 核心 API 函数解析

Arduino 框架控制 LED 仅需 3 个核心函数,同时包含程序固定双函数结构:

(1)程序基础结构
  1. void setup():初始化函数,上电只执行 1 次,用于配置引脚模式、串口初始化;
  2. void loop():主循环函数,setup 执行完成后无限循环运行,实现持续闪烁逻辑。
(2)三大硬件控制函数

表格

函数作用参数说明
pinMode(pin, mode)配置引脚工作模式pin:引脚编号;mode 填OUTPUT设为数字输出
digitalWrite(pin, value)输出高低电平HIGH=3.3V 高电平(亮灯);LOW=0V 低电平(灭灯)
delay(ms)程序阻塞延时ms 单位毫秒,delay(1000)= 暂停 1 秒

四、接线指南

接线前置要求:全程断电操作,避免短路烧板

接线顺序:

  1. ESP32 GPIO5 引脚 → 杜邦线接入面包板任意一列;
  2. 同列插入 220Ω 限流电阻,电阻另一端接入面包板另一列;
  3. 电阻另一端列位插入 LED长脚(正极)
  4. LED 短脚(负极)用杜邦线连接 ESP32 任意 GND 引脚,闭合完整回路。

电路示意图:

  • GPIO5 → 220Ω 电阻 → LED 长脚 (+) → LED 短脚 (-) → GND

电路接线图

五、代码实现

cpp

运行

// 宏定义LED控制引脚,后期修改引脚仅需改此处,方便维护 #define LED_PIN 5 // 上电仅执行一次的初始化函数 void setup() { // 将GPIO5配置为数字输出模式,才能输出高低电平 pinMode(LED_PIN, OUTPUT); } // 无限循环主函数,重复执行亮灭逻辑 void loop() { digitalWrite(LED_PIN, HIGH); // 输出3.3V高电平,产生电流,LED点亮 delay(500); // 保持点亮状态0.5秒(500毫秒) digitalWrite(LED_PIN, LOW); // 输出0V低电平,无电位差,LED熄灭 delay(500); // 保持熄灭状态0.5秒 }

代码注释完整,每一步操作都标注原理,新手可直观理解每一行代码作用。

六、编译与烧录步骤

1. Arduino IDE 环境配置

  1. 文件→首选项,添加 ESP32 开发板管理器地址;
  2. 工具→开发板→开发板管理器,搜索ESP32完成安装;
  3. 工具栏开发板选择:ESP32S3 Dev Module(根据自己开发板型号选择);
  4. 端口选择:设备管理器查看 USB 对应 COM 端口,IDE 工具栏选中对应端口。

2. 烧录操作与 BOOT 键注意事项

  1. 将 USB 数据线连接电脑与 ESP32 开发板;
  2. 粘贴上方代码,点击左上角对勾图标编译,无报错即可下一步;
  3. 点击向右箭头上传烧录
    • 部分 ESP32 开发板烧录时需要按住BOOT按键,等待进度条走动后松开;
  4. 进度条 100% 提示上传完成,代表代码已写入单片机。

七、实验现象与总结

1. 预期实验现象

烧录完成后,开发板上电,LED 持续循环闪烁:亮 0.5s → 灭 0.5s,无限往复。 拓展修改:将delay(500)改为delay(100),闪烁速度明显加快;修改LED_PIN为 4 并更换接线,LED 同样正常闪烁。

2. 核心知识点回顾

  1. LED 点亮三要素:3.3V 电位差、完整闭合回路、串联 220Ω 限流电阻;
  2. ESP32 为 3.3V 系统,区分引脚可用 / 禁用列表,避免硬件损坏;
  3. Arduino 程序固定结构:setup()初始化、loop()循环执行;
  4. GPIO 输出核心三函数:pinMode配置模式、digitalWrite输出电平、delay延时控制灯光时长;
  5. 硬件接线核心要点:LED 长脚接电阻、短脚接 GND,极性不可接反。