如何用ESP32 UNO和Webman框架打造智能家居控制中心?手把手教你从零开始

引言:为什么选择ESP32 UNO与Webman?

智能家居是物联网(IoT)最热门的方向之一,但很多教程要么过于复杂,要么只针对单一平台。今天,我们将使用ESP32 UNO(以TTGO ESP32为例)作为硬件核心,搭配PHP的Webman框架,打造一个简单却功能完整的智能家居控制中心。ESP32自带Wi-Fi和蓝牙,价格低廉(约30-50元),而Webman作为高性能PHP框架,能轻松处理HTTP请求与WebSocket通信。两者结合,让你用熟悉的PHP语言控制真实世界。

硬件准备:你需要什么?

  • TTGO ESP32开发板(兼容ESP32 UNO引脚)
  • LED灯、电阻(220Ω)和面包板
  • Micro USB数据线
  • 电脑(Windows/Mac/Linux均可)

如果你只有普通ESP32开发板,也可以直接使用。TTGO ESP32的优势在于内置OLED屏幕和电池管理,但核心功能相同。

环境搭建:从零开始

1. 安装Arduino IDE

首先,下载并安装Arduino IDE(建议使用1.8.x版本)。安装后,打开IDE,进入“文件”->“首选项”,在“附加开发板管理器网址”中添加:

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

然后,通过“工具”->“开发板管理器”搜索并安装“esp32”包。选择开发板为“ESP32 Dev Module”。

2. 安装PHP与Webman

确保你的电脑已安装PHP 8.0+和Composer。在终端中运行:

composer create-project workerman/webman smart-home

进入项目目录,启动Webman:

php start.php start

访问http://127.0.0.1:8787,看到欢迎页面即成功。

核心实现:ESP32与Webman通信

1. ESP32端代码

在Arduino IDE中编写以下代码,实现Wi-Fi连接和HTTP请求接收:

#include 
#include 

const char* ssid = "你的WiFi名称";
const char* password = "你的WiFi密码";

WebServer server(80);
int ledPin = 2; // 内置LED

void setup() {
  Serial.begin(115200);
  pinMode(ledPin, OUTPUT);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("连接中...");
  }
  Serial.println("连接成功,IP地址:");
  Serial.println(WiFi.localIP());

  server.on("/on", []() {
    digitalWrite(ledPin, HIGH);
    server.send(200, "text/plain", "LED已打开");
  });

  server.on("/off", []() {
    digitalWrite(ledPin, LOW);
    server.send(200, "text/plain", "LED已关闭");
  });

  server.begin();
}

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

上传代码后,打开串口监视器,记下ESP32获取到的IP地址(例如192.168.1.100)。

2. Webman后端API

在Webman项目app/controller目录下创建SmartHomeController.php

get('action');
        $espIp = '192.168.1.100'; // 替换为实际IP
        $url = "http://$espIp/$action";
        $result = file_get_contents($url);
        return json(['status' => 'ok', 'message' => $result]);
    }

    public function index()
    {
        return view('smart_home/index');
    }
}

然后,添加路由。编辑config/route.php

use support\Route;
use app\controller\SmartHomeController;

Route::get('/control', [SmartHomeController::class, 'control']);
Route::get('/', [SmartHomeController::class, 'index']);

3. 前端控制页面

创建视图文件app/view/smart_home/index.html

智能家居控制中心

ESP32 LED控制

状态:未知

测试与调试

重启Webman,访问http://127.0.0.1:8787,点击按钮即可控制ESP32上的LED。如果遇到问题:

  • 确保ESP32和电脑在同一个Wi-Fi网络。
  • 检查ESP32的IP地址是否正确。
  • 查看Webman日志(runtime/logs目录)。

进阶扩展:让项目更强大

  • 添加传感器:连接DHT11温湿度传感器,通过Webman读取数据并显示在网页上。
  • WebSocket实时通信:使用Webman的WebSocket功能,实现无刷新状态更新。
  • 多设备控制:通过数据库存储多个ESP32设备信息,实现批量管理。

结语

通过本文,你已经成功将ESP32 UNOWebman框架结合,构建了一个基础的智能家居控制中心。整个过程不需要昂贵的设备或高深的技术,只要跟着步骤操作,就能拥有一个属于自己的物联网项目。现在,你可以在此基础上发挥创意,打造更多实用功能!

上一篇
如何用ESP32 Mini和PHP从零搭建MySQL数据采集系统?
下一篇
没有更多了

评论 (0)

暂无评论,快来抢沙发吧~