跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
C++

基于 Arduino IDE 的 ESP32 智能家居开发入门

基于 Arduino IDE 配置 ESP32 开发环境的步骤,包括安装 IDE、添加板卡管理器及驱动设置。通过硬件连接继电器、传感器等模块,利用 C++ 代码构建本地 Web 服务器实现远程控制。内容涵盖基础接线、核心代码解析(含 Wi-Fi 连接、HTTP 请求处理)以及 OTA 升级、深度睡眠等进阶优化技巧,适合嵌入式初学者快速上手物联网项目开发。

ServerBase发布于 2026/4/5更新于 2026/5/2231 浏览

项目概述

本文介绍使用 Arduino IDE 搭建 ESP32 开发环境并构建智能插座原型的方法。

ESP32 特性分析

ESP32 是乐鑫科技推出的一款高度集成的 Wi-Fi/蓝牙双模 SoC 芯片,内置 Tensilica LX6 双核处理器,主频高达 240MHz,自带 520KB SRAM,支持多种低功耗模式。它解决了无线控制的痛点:

功能需求ESP32 能否胜任
能连 Wi-Fi 吗?✅ 支持 802.11 b/g/n,轻松接入家庭路由器
能远程控制吗?✅ 可建 Web 服务器或 MQTT 客户端,实现手机控制
能本地感应环境吗?✅ 内置 ADC、I²C、SPI 等接口,接 DHT11、OLED 毫无压力
要不要外接蓝牙模块?❌ 不需要!原生支持 BLE 和经典蓝牙
多任务处理卡不卡?✅ 双核 CPU,一个跑网络通信,一个管传感器采集

相比 ESP8266 单核架构易卡顿,STM32 工具链复杂,ESP32 在能力与易用性之间取得了平衡。配合 Arduino IDE,底层驱动工作被封装成简洁 API。

开发环境搭建

第一步:下载并安装 Arduino IDE

前往官网 https://www.arduino.cc 下载最新版 Arduino IDE(建议使用 2.x 版本)。

第二步:配置板卡管理器

操作路径:文件 → 首选项 → 附加开发板管理器网址。粘贴以下链接:

https://dl.espressif.com/dl/package_esp32_index.json
第三步:安装 ESP32 支持包

点击菜单栏:工具 → 开发板 → 开发板管理器。搜索'ESP32',安装由 Espressif Systems 发布的条目。

第四步:选择开发板型号

常见型号包括 ESP32 Dev Module、NodeMCU-32S、WEMOS LOLIN32 等,根据实物选择。

第五步:设置端口和上传参数

将 ESP32 插入电脑,在'工具 → 端口'选中设备。推荐参数:

参数推荐值说明
上传速率921600越高越快
Flash 频率80MHz匹配大多数模块
Flash 模式QIO四线读取
分区方案Default 4MB with spiffs默认文件系统

硬件与电路设计

硬件清单
模块数量作用
ESP32 开发板1 块主控大脑
继电器模块(5V)1 个控制交流负载
DHT11 温湿度传感器1 个监测环境
OLED 显示屏(0.96 寸 I²C)1 个本地显示
按键按钮1 个物理开关

安全提示:继电器涉及强电,非专业人士建议仅用于低压测试。

接线指南
模块连接到 ESP32 的 GPIO
继电器 IN 脚GPIO2
DHT11 数据脚GPIO4
OLED SDA/SCLGPIO21/GPIO22
按键一端GPIO15

注意避坑:避免使用 GPIO6~11,它们内部用于连接 Flash 芯片。

核心代码实现

#include <WiFi.h>
#include <WebServer.h>

const char* ssid = "your_wifi_ssid";
const char* password = "your_wifi_password";

WebServer server(80);

const int relayPin = 2;
const int buttonPin = 15;

String htmlPage = R"(
<!DOCTYPE html>
<html>
<head>
<title>智能插座</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
body { font-family: Arial; text-align: center; margin-top: 50px; }
button { padding: 15px 30px; font-size: 18px; margin: 10px; cursor: pointer; }
.on { background-color: #4CAF50; color: white; }
.off { background-color: #f44336; color: white; }
</style>
</head>
<body>
<h1>ESP32 智能插座</h1>
<button onclick="setRelay('on')">开启</button>
<button onclick="setRelay('off')">关闭</button>
<script>
function setRelay(state) {
  fetch('/' + state).then(() => location.reload());
}
</script>
</body>
</html>
)";

void handleRoot() { server.send(200, "text/html", htmlPage); }
void handleOn() { digitalWrite(relayPin, HIGH); server.send(200, "text/plain", "已开启"); }
void handleOff() { digitalWrite(relayPin, LOW); server.send(200, "text/plain", "已关闭"); }

void IRAM_ATTR onButtonPress() {
  delay(50);
  if (digitalRead(buttonPin) == LOW) {
    bool currentState = digitalRead(relayPin);
    digitalWrite(relayPin, !currentState);
  }
}

void setup() {
  Serial.begin(115200);
  pinMode(relayPin, OUTPUT);
  pinMode(buttonPin, INPUT_PULLUP);
  digitalWrite(relayPin, LOW);
  attachInterrupt(digitalPinToInterrupt(buttonPin), onButtonPress, FALLING);

  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) { delay(500); }
  Serial.println("已连接 Wi-Fi");
  Serial.print("IP 地址:"); Serial.println(WiFi.localIP());

  server.on("/", HTTP_GET, handleRoot);
  server.on("/on", HTTP_GET, handleOn);
  server.on("/off", HTTP_GET, handleOff);
  server.begin();
}

void loop() {
  server.handleClient();
}

关键点:

  1. R"(...) 原始字符串语法嵌入 HTML。
  2. server.on 映射 URL 到处理函数。
  3. handleClient() 轮询处理请求。
  4. attachInterrupt 绑定物理按键中断。

设备接入与控制

部署成功后,在手机或浏览器输入 ESP32 获取的局域网 IP 地址即可访问控制页面。同一 Wi-Fi 下均可远程操控。

安全增强建议:添加登录验证、使用 HTTPS 或 Token 令牌。

进阶优化

异步 Web 服务器

改用 ESPAsyncWebServer 库可实现非阻塞响应,提升并发性能。

OTA 在线升级

加入 ArduinoOTA.h 支持,可通过 Wi-Fi 远程更新固件。

深度睡眠

对于电池供电节点,使用 esp_deep_sleep_start() 降低功耗至 <10μA。

目录

  1. 项目概述
  2. ESP32 特性分析
  3. 开发环境搭建
  4. 第一步:下载并安装 Arduino IDE
  5. 第二步:配置板卡管理器
  6. 第三步:安装 ESP32 支持包
  7. 第四步:选择开发板型号
  8. 第五步:设置端口和上传参数
  9. 硬件与电路设计
  10. 硬件清单
  11. 接线指南
  12. 核心代码实现
  13. 设备接入与控制
  14. 进阶优化
  15. 异步 Web 服务器
  16. OTA 在线升级
  17. 深度睡眠
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Qwen3-VL 结合 LLaMA-Factory 进行 Grounding 任务 LoRA 微调
  • C++11 核心新特性详解:初始化、引用与移动语义
  • 金仓数据库与 InfluxDB 时序性能对比及 SQL 兼容性分析
  • Vue 3 最佳实践总结与开发技巧
  • GitNexus:纯本地代码知识图谱与可视化关系网工具
  • Git LFS 安装教程:Linux、macOS 与 Windows 全平台指南
  • Mac Mini 本地部署 OpenClaw 智能体实战指南
  • Mac 抹除重装卡在激活锁的两种解锁方案
  • 2026年,我整理了中国 200 多家机器人(具身智能)公司名单
  • AI 提示词工程:原理、策略与精通之道
  • MySQL 表操作及查询
  • 银河麒麟服务器版 Nginx Web 服务部署实战
  • AgentScope-Java 配置参数详解附录 B
  • 工作中常用的几种设计模式实战
  • 双指针算法进阶:从三角形计数到四数之和
  • 基于开源鸿蒙(OpenHarmony)的【智能家居综合应用】系统
  • Whisper-turbo 速度实测:云端 GPU 7 倍加速
  • Virt-A-Mate 虚拟实境交互软件技术特性解析
  • ChatGPT 插件生态爆发:自动写书玩法与插件知识库构建方法
  • Linux 常用命令大全:系统管理与文件操作指南

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online