手里攥着ESP32开发板,却总觉得“没传感器、没屏幕就玩不转”?其实大可不必——ESP32板载资源藏着太多惊喜,仅凭芯片自带的WiFi、GPIO、触摸引脚甚至内部传感器,就能实现实用又酷炫的功能。本文分享5个零外设、低代码的创意项目,不用花钱买配件,跟着步骤走就能快速出成果,让你的开发板瞬间“活”起来。
一、基础级:3分钟搞定“板载呼吸灯”,入门必练
刚拿到开发板?先从这个项目练手,它能帮你快速熟悉GPIO和PWM信号的基本用法,成就感秒出。
原理
ESP32几乎所有开发板都自带LED(常见接GPIO2或GPIO13),利用PWM(脉冲宽度调制)技术调节LED的亮度变化,就能模拟出“呼吸”效果——亮度从暗到亮再渐变到暗,像灯光在“喘气”一样。
实操步骤(Arduino IDE)
1. 打开Arduino IDE,选择对应开发板(如 ESP32 Dev Module )和串口;
2. 直接复制以下代码(仅15行,引脚按实际修改):
const int ledPin = 2; // 板载LED常用引脚,若不亮换13
PWM led(ledPin, 1000); // 初始化PWM,频率1000Hz
int duty = 0; // 亮度值(0-1023)
int step = 5; // 亮度变化步长
void setup() {}
void loop() {
led.setDuty(duty); // 设置亮度
duty += step;
// 亮度到极值时反向变化
if (duty >= 1023 || duty <= 0) step *= -1;
delay(10); // 控制呼吸速度
}
3. 点击上传,30秒后就能看到LED开始“呼吸”,修改 step 值可调整呼吸快慢。
二、实用级:10分钟搭“微型Web服务器”,手机控制设备
这是物联网入门的经典项目,不用下APP,仅凭手机浏览器就能和ESP32互动,比如远程看状态、控制点灯。
原理
让ESP32工作在WiFi Station模式(连家里的路由器),同时在板上搭建一个微型Web服务器。手机连接同一WiFi后,通过浏览器访问ESP32的IP地址,就能加载自定义网页,点击网页按钮即可发送控制指令。
实操步骤(Arduino IDE)
1. 准备工作:在代码中替换你的WiFi名称和密码;
2. 代码核心逻辑(利用Arduino的WiFi库,无需额外安装):
#include <WiFi.h>
const char* ssid = "你的WiFi名称";
const char* password = "你的WiFi密码";
WiFiServer server(80); // 端口80
const int ledPin = 2;
void setup() {
pinMode(ledPin, OUTPUT);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) delay(500);
server.begin(); // 启动服务器
Serial.println("访问地址:" + WiFi.localIP().toString());
}
void loop() {
WiFiClient client = server.available();
if (client) {
String req = client.readStringUntil('\r');
// 收到"on"指令开灯,"off"指令关灯
if (req.indexOf("on") != -1) digitalWrite(ledPin, HIGH);
if (req.indexOf("off") != -1) digitalWrite(ledPin, LOW);
// 返回控制网页
client.print("<!DOCTYPE html><button href='/on'>开灯</button><button href='/off'>关灯</button>");
client.stop();
}
}
3. 上传后打开串口监视器,找到ESP32的IP地址(如192.168.1.100);
4. 手机连同一WiFi,浏览器输入该IP,点击按钮就能控制LED开关,还能扩展成显示温湿度、控制继电器等功能。
三、趣味级:5分钟做“触摸唤醒器”,挥手就能触发动作
ESP32自带电容触摸引脚(如GPIO4、GPIO12),不用接触摸模块,用手指碰一下引脚对应的排针,就能触发预设动作,玩起来像“魔法”。
原理
电容触摸引脚能检测周围电场变化,当手指靠近时,人体电容会改变引脚的电容量,芯片通过识别这种变化判断“是否被触摸”。阈值可根据环境调整,避免误触发。
实操步骤(MicroPython)
如果用MicroPython开发,代码更简洁,适合快速验证:
1. 给ESP32刷好MicroPython固件,用Thonny连接开发板;
2. 编写代码(以触摸GPIO4触发LED亮灭为例):
from machine import TouchPad, Pin
import time
touch_pin = TouchPad(Pin(4)) # 触摸引脚GPIO4
led_pin = Pin(2, Pin.OUT)
touch_threshold = 100 # 阈值,需实际调试
while True:
# 读取触摸值,数值越小说明触摸越灵敏
if touch_pin.read() < touch_threshold:
led_pin.value(not led_pin.value()) # 切换LED状态
time.sleep(0.2) # 防抖动
time.sleep(0.1)
3. 运行代码后,用手指碰一下GPIO4对应的排针,LED就会切换亮灭状态,还能改成触发蜂鸣器、发送通知等。
四、监测级:零外设做“CPU温度计”(仅限ESP32-S2/S3)
ESP32-S2、ESP32-S3等型号自带内部温度传感器,不用外接任何模块,就能直接读取芯片温度,可用于监测设备运行状态。
原理
芯片内部集成了简易温度传感器,能感知核心温度变化(精度约±2℃),通过专用API读取原始数据后,转换为摄氏度即可使用,适合做设备过热报警的原型。
实操步骤(MicroPython)
1. 适用开发板:ESP32-S3-DevKitC-1、ESP32-S3-EYE等带内部传感器的型号;
2. 代码(仅5行核心逻辑):
import esp32
import time
while True:
# 原始数据转摄氏度:(华氏度-32)/1.8
temp = (esp32.raw_temperature() - 32) / 1.8
print(f"芯片温度:{temp:.1f}℃")
time.sleep(1)
3. 运行后在Thonny终端就能看到实时温度,当设备长时间运行导致CPU发热时,数值会明显上升,可扩展成温度超过阈值时点亮警示灯。
五、极客级:15分钟搭“Web无线U盘”,手机直传文件
不用插数据线,通过WiFi就能往ESP32的Flash里传文件、读文件,把开发板变成一个微型“无线U盘”,传个代码片段、日志文件超方便。
原理
利用ESP32的Flash存储和Web服务器功能,搭建支持文件上传的网页界面。手机或电脑通过浏览器访问ESP32,就能上传TXT、图片等小文件(受Flash容量限制,一般8MB Flash可存几MB文件)。
实操步骤(Arduino IDE)
1. 安装依赖库:在“项目→加载库→管理库”中搜索并安装 ESP8266WebServer (ESP32也兼容);
2. 核心代码逻辑:
#include <WiFi.h>
#include <ESP8266WebServer.h>
#include <SPIFFS.h>
const char* ssid = "你的WiFi名称";
const char* password = "你的WiFi密码";
ESP8266WebServer server(80);
void setup() {
SPIFFS.begin(true); // 初始化文件系统
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) delay(500);
// 处理文件上传请求
server.on("/upload", HTTP_POST, [](){
HTTPUpload& upload = server.upload();
if(upload.status == UPLOAD_FILE_START) {
File file = SPIFFS.open(upload.filename, "w");
file.close();
} else if(upload.status == UPLOAD_FILE_WRITE) {
File file = SPIFFS.open(upload.filename, "a");
file.write(upload.buf, upload.currentSize);
file.close();
}
server.send(200, "text/plain", "上传成功");
});
server.begin();
}
void loop() { server.handleClient(); }
3. 上传代码后,访问ESP32的IP地址,配合简单的上传网页代码,就能实现文件无线传输,还能扩展成查看文件列表、下载文件等功能。
避坑提醒:零外设项目最容易踩的3个雷
1. LED不亮?先查引脚:不同开发板LED引脚不同,ESP32-DevKitC常用GPIO2,ESP32-S3-EYE可能用GPIO13,查原理图或用万用表测一下最稳妥。
2. 触摸不灵敏?调阈值:触摸值受环境湿度、温度影响大,可先打印 touch_pin.read() 的基准值,再把阈值设为基准值的70%左右。
3. Web服务器连不上?看WiFi:确保ESP32和手机连同一WiFi,若路由器开了5G/2.4G双频,ESP32只支持2.4G,手机别连错频段。
最后说句实在话
ESP32的强大之处,从来不是需要堆多少外设,而是芯片本身的“全能性”。这5个零成本项目只是入门,等你上手后,还能基于它们扩展:给Web服务器加个温湿度显示(后期加DHT11)、把触摸唤醒改成手势识别(用ESP-DL库)、给无线U盘加密码保护……
你用ESP32做过哪些不用外设的创意项目?欢迎在评论区晒出你的作品,让更多人知道“开发板的潜力远不止于此”!

被折叠的 条评论
为什么被折叠?



