e580af79654d2f6d23e7dc5b12cf43ce32db1698
PetIO 控制系统
一个基于 ESP8266 的智能引脚定时控制系统,支持 Web 界面管理和 WiFi 配置。
功能特性
🎯 定时器管理
- ✅ 设置任意引脚在指定时间点开启指定时长
- ✅ 支持多个定时器同时运行
- ✅ 可启用/禁用单个定时器
- ✅ 每天重复功能 - 可设置定时器每天自动重复
- ✅ 单次执行功能 - 执行一次后自动禁用
- ✅ 定时器状态实时显示
- ✅ 持久化配置储存
- ✅ NTP 时间同步 - WiFi 连接时自动同步网络时间
🔌 引脚控制
- ✅ 支持所有 ESP8266 可用引脚 (0,1,2,3,4,5,12,13,14,15,16)
- ✅ 实时显示引脚状态
- ✅ 手动开关控制
- ✅ 定时开启功能
- ✅ 引脚占用状态提示
📶 WiFi 管理
- ✅ 自动连接已保存的 WiFi
- ✅ 无密码 AP 模式 - 无配置时自动启动无密码热点
- ✅ Web 界面配置 WiFi
- ✅ 支持重置为 AP 模式
- ✅ 连接状态监控和自动重连
- ✅ 智能功能限制 - AP 模式下自动隐藏定时器功能
🌐 Web 界面
- ✅ 响应式设计,支持手机和电脑
- ✅ 实时数据更新
- ✅ 现代化 UI 设计
- ✅ 多标签页管理
- ✅ 操作反馈和状态提示
- ✅ 改进的时间选择器 - 使用 HTML5 time 输入控件
- ✅ 智能功能显隐 - 根据连接状态自动调整界面
硬件要求
- ESP8266 开发板 (ESP-12E/NodeMCU/Wemos D1 等)
- 连接到引脚的负载设备(继电器、LED、水泵等)
快速开始
1. 编译和上传
# 使用 PlatformIO 编译并上传
pio run --target upload
# 或使用 Arduino IDE
# 选择板子: ESP8266 -> Generic ESP8266 Module
# 上传速度: 921600
# Flash Size: 4MB
2. 首次配置
- 上传程序后,ESP8266 会自动启动 AP 模式
- 用手机或电脑连接热点:
- SSID:
PetIO_Setup - 密码: 无密码(开放网络)
- SSID:
- 打开浏览器访问:
http://192.168.4.1 - 在 "WiFi 设置" 标签页配置你的 WiFi
- 配置成功后设备会自动重启并连接到你的 WiFi
3. 正常使用
- WiFi 连接成功后,可通过设备的 IP 地址访问控制界面
- 串口监视器会显示设备的访问地址
- 注意: 只有在 WiFi 连接状态下,定时器功能才能正常工作(需要 NTP 时间同步)
API 接口文档
系统状态
GET /api/status
返回: {
"wifiConnected": boolean,
"localIP": "192.168.1.100",
"apIP": "192.168.4.1",
"isAPMode": boolean,
"currentTime": "12:30",
"activeTimers": 2,
"totalTimers": 5
}
定时器管理
# 获取所有定时器
GET /api/timers
# 添加定时器
POST /api/timers
Body: {
"pin": 2,
"hour": 12,
"minute": 30,
"duration": 60,
"repeatDaily": true
}
# 更新定时器
PUT /api/timers/{index}
Body: {
"pin": 2,
"hour": 12,
"minute": 30,
"duration": 60,
"enabled": true,
"repeatDaily": true
}
# 删除定时器
DELETE /api/timers/{index}
# 清除所有定时器
POST /api/timers/clear
引脚控制
# 获取引脚状态
GET /api/pins
# 手动控制
POST /api/manual
Body: {
"pin": 2,
"duration": 0 // 0=切换状态,>0=开启指定秒数
}
WiFi 配置
# 保存WiFi配置
POST /api/wifi
Body: {
"ssid": "My_WiFi",
"password": "password123"
}
# 重置为AP模式
POST /api/wifi/reset
引脚说明
ESP8266 可用引脚
| 引脚 | 说明 | 注意事项 |
|---|---|---|
| 0 | GPIO0 | 启动时需要为 HIGH |
| 1 | TX | 串口发送,调试时避免使用 |
| 2 | GPIO2 | 启动时需要为 HIGH,有板载 LED |
| 3 | RX | 串口接收,调试时避免使用 |
| 4 | GPIO4 | 安全的通用 IO |
| 5 | GPIO5 | 安全的通用 IO |
| 12 | GPIO12 | 安全的通用 IO |
| 13 | GPIO13 | 安全的通用 IO |
| 14 | GPIO14 | 安全的通用 IO |
| 15 | GPIO15 | 启动时需要为 LOW |
| 16 | GPIO16 | 无中断功能,适合简单输出 |
推荐用法
- GPIO 4, 5, 12, 13, 14: 最安全的选择,适合连接继电器等设备
- GPIO 2: 适合连接 LED 指示灯
- GPIO 16: 适合简单的开关控制
项目结构
src/
├── main.cpp # 主程序入口
├── config.h # 配置文件和常量定义
├── wifi_manager.h/cpp # WiFi 连接管理
├── timer_manager.h/cpp # 定时器功能管理
├── time_manager.h/cpp # NTP 时间同步管理
├── web_server.h/cpp # Web 服务器和 API
└── web_pages.h # HTML 页面模板
自定义配置
修改默认 AP 信息
在 config.h 中修改:
#define DEFAULT_AP_SSID "Your_AP_Name"
#define DEFAULT_AP_PASSWORD "" // 保持为空表示无密码
调整时间同步设置
#define NTP_SERVER "your.ntp.server"
#define TIME_ZONE 8 // 修改为你的时区
#define NTP_UPDATE_INTERVAL 3600000 // 同步间隔(毫秒)
调整定时器数量
#define MAX_TIMERS 20 // 增加到 20 个定时器
添加新引脚
const int AVAILABLE_PINS[] = {0, 1, 2, 3, 4, 5, 12, 13, 14, 15, 16, 17};
故障排除
1. 无法连接 WiFi
- 检查 SSID 和密码是否正确
- 确认路由器是 2.4GHz 频段
- 尝试重置为 AP 模式重新配置
2. 定时器不工作
- 检查系统时间是否正确(当前为简化版本,基于运行时间)
- 确认定时器已启用
- 检查引脚连接
3. 网页无法访问
- 确认设备已连接到正确的网络
- 检查 IP 地址是否正确
- 尝试重启设备
4. 引脚无响应
- 检查硬件连接
- 确认引脚编号正确
- 检查负载是否正常
开发和扩展
添加新功能
项目采用模块化设计,可以轻松添加新功能:
- 定时功能: 修改
timer_manager.cpp - 网页界面: 修改
web_pages.h - API 接口: 修改
web_server.cpp - WiFi 功能: 修改
wifi_manager.cpp
调试模式
启用详细日志输出:
// 在 Serial.begin() 后添加
Serial.setDebugOutput(true);
许可证
MIT License - 可自由使用、修改和分发。
贡献
欢迎提交 Issue 和 Pull Request!
享受你的智能 PetIO 控制系统! 🐾
Languages
C++
98.7%
C
1.3%