引言:为什么选择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 UNO与Webman框架结合,构建了一个基础的智能家居控制中心。整个过程不需要昂贵的设备或高深的技术,只要跟着步骤操作,就能拥有一个属于自己的物联网项目。现在,你可以在此基础上发挥创意,打造更多实用功能!
请先登录后再发布评论