MiaoMint 4dcbb9c05b init
2025-08-12 04:24:15 +08:00
2025-08-12 04:24:15 +08:00
2025-08-12 04:24:15 +08:00
2025-08-12 04:24:15 +08:00
2025-08-12 04:24:15 +08:00
2025-08-12 04:24:15 +08:00
2025-08-12 04:24:15 +08:00
2025-08-12 04:24:15 +08:00
2025-08-12 04:24:15 +08:00
2025-08-12 04:24:15 +08:00

PetIO 控制系统

一个基于 ESP8266 的智能引脚定时控制系统,支持 Web 界面管理和 WiFi 配置。

功能特性

🎯 定时器管理

  • 设置任意引脚在指定时间点开启指定时长
  • 支持多个定时器同时运行
  • 可启用/禁用单个定时器
  • 每天重复功能 - 可设置定时器每天自动重复
  • 单次执行功能 - 执行一次后自动禁用
  • 定时器状态实时显示
  • 持### 3. 定时器不工作
  • 确认设备已连接 WiFiAP 模式下定时器功能受限)
  • 检查系统时间是否已同步(状态页面会显示时间来源)
  • 确认定时器已启用且设置正确
  • 检查引脚连接

4. 时间不准确

  • 确认设备已连接到互联网
  • 检查时区设置是否正确
  • 尝试手动触发时间同步(重启设备)配置
  • 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. 首次配置

  1. 上传程序后ESP8266 会自动启动 AP 模式
  2. 用手机或电脑连接热点:
    • SSID: PetIO_Setup
    • 密码: 无密码(开放网络)
  3. 打开浏览器访问:http://192.168.4.1
  4. 在 "WiFi 设置" 标签页配置你的 WiFi
  5. 配置成功后设备会自动重启并连接到你的 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. 引脚无响应

  • 检查硬件连接
  • 确认引脚编号正确
  • 检查负载是否正常

开发和扩展

添加新功能

项目采用模块化设计,可以轻松添加新功能:

  1. 定时功能: 修改 timer_manager.cpp
  2. 网页界面: 修改 web_pages.h
  3. API 接口: 修改 web_server.cpp
  4. WiFi 功能: 修改 wifi_manager.cpp

调试模式

启用详细日志输出:

// 在 Serial.begin() 后添加
Serial.setDebugOutput(true);

许可证

MIT License - 可自由使用、修改和分发。

贡献

欢迎提交 Issue 和 Pull Request


享受你的智能 PetIO 控制系统! 🐾

Description
No description provided
Readme MIT 140 KiB
Languages
C++ 98.7%
C 1.3%