mirror of
https://git.beihong.wang/wangbeihong/iot-bedroom-environment-controller.git
synced 2026-04-23 11:43:04 +08:00
增加补充相关资料和小程序源码
This commit is contained in:
403412
相关资料/PCB相关/3D_智能家居监测系统_2026-01-13.step
Normal file
403412
相关资料/PCB相关/3D_智能家居监测系统_2026-01-13.step
Normal file
File diff suppressed because one or more lines are too long
BIN
相关资料/PCB相关/3D_智能家居监测系统_2026-01-13.step:Zone.Identifier
Normal file
BIN
相关资料/PCB相关/3D_智能家居监测系统_2026-01-13.step:Zone.Identifier
Normal file
Binary file not shown.
BIN
相关资料/PCB相关/BOM价格.xlsx
Normal file
BIN
相关资料/PCB相关/BOM价格.xlsx
Normal file
Binary file not shown.
BIN
相关资料/PCB相关/C2911374_WIFI模块_ESP32-C3-MINI-1U-N4_规格书_WJ1389032.PDF
Normal file
BIN
相关资料/PCB相关/C2911374_WIFI模块_ESP32-C3-MINI-1U-N4_规格书_WJ1389032.PDF
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
相关资料/PCB相关/Gerber_智能家居监测系统_2026-01-13.zip
Normal file
BIN
相关资料/PCB相关/Gerber_智能家居监测系统_2026-01-13.zip
Normal file
Binary file not shown.
26613
相关资料/PCB相关/SCH_智能家居监测系统_2026-01-13.pdf
Normal file
26613
相关资料/PCB相关/SCH_智能家居监测系统_2026-01-13.pdf
Normal file
File diff suppressed because it is too large
Load Diff
BIN
相关资料/PCB相关/毕设-2026寒假_智能家居监测系统_20260114_131132-立创_20260114.xls
Normal file
BIN
相关资料/PCB相关/毕设-2026寒假_智能家居监测系统_20260114_131132-立创_20260114.xls
Normal file
Binary file not shown.
Binary file not shown.
BIN
相关资料/pic/AHT30_Layout.png
Normal file
BIN
相关资料/pic/AHT30_Layout.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 37 KiB |
BIN
相关资料/pic/CH32V003F4U6引脚定义.png
Normal file
BIN
相关资料/pic/CH32V003F4U6引脚定义.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 75 KiB |
BIN
相关资料/pic/emqx.png
Normal file
BIN
相关资料/pic/emqx.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 33 KiB |
195
相关资料/系统设计.md
Normal file
195
相关资料/系统设计.md
Normal file
@@ -0,0 +1,195 @@
|
||||
# 智能家居监测系统
|
||||
|
||||
## 原始需求
|
||||
|
||||
硬件部分:ESP32 开发板、温湿度传感器 DHT22、光敏电阻、舵机、蜂鸣器、OLED 显示器、LED 灯、空气质量传感器
|
||||
|
||||
软件部分:使用微信小程序平台对智能卧室环境监测系统进行应用开发,构建用户交互界面(UI),提供与硬件通信的 API,ESP32 设备端通过 WiFi 连接到云平台,手机端 APP 直接与云平台通信,查询设备状态和发送指令,实现远程监控和智能联动。
|
||||
|
||||
功能设计:
|
||||
当用户回家,连接上家里 WiFi 后,系统触发“到家状态”;当监测不到用户连接到 WiFi 时,暂停当前模式的继续运行,进入“待机状态”。
|
||||
|
||||
ESP32 在传感器数据发生 变化时 或 达到阈值时 主动上报数据到云平台,获取当前环境监测数据,执行对应的模式。当该系统正在运行的模式与当前监测环境相符时,不会中断模式继续运行,直到接收到下一信号。
|
||||
每次手机端 APP 发送指令后,APP 应等待 ESP32 通过云平台返回的“执行成功”确认消息,再更新 UI 状态,避免误操作。
|
||||
|
||||
到家状态:激活“到家状态”会进行 5000ms 的入户等待时间,然后在进行模式判断。
|
||||
待机状态:每经过 500ms 会监测用户是否通过手机控制端进行远程操控。
|
||||
|
||||
1. 起床模式:用户可以在移动控制端设置起床时间,舵机会在用户预设时间的前 3 分钟打开窗帘,到了起床时间蜂鸣器会发出声音提醒用户起床。初始值设置在早上 8 点。
|
||||
2. 白天模式:在早上六点到晚上六点之间,光敏电阻获取当前光照强度判断是否关闭窗帘和是否打开 LED 灯。用户可以在手机控制端进行时间设置。
|
||||
3. 夜间模式:在晚上六点到早上六点之间,舵机控制窗帘关闭,并且打开 LED 灯进行照明。用户可以在手机控制端进行时间设置。
|
||||
4. 降温模式:用户可以设置预期的开启降温模式的温度,通过温湿度传感器获取当前环境温度,读取到的当前温度与用户设定的目标温度进行比较,当温度不在预期范围内,自动打开风扇进行降温。如果当前温度高于 目标温度,ESP32 会发送开启降温指令给风扇,风扇开启吹风模式进行物理降温。
|
||||
5. 高温提醒模式:当温湿度传感器监测到室内温度高于 35°C 时,手机端 APP 弹出室内高温警告,并且蜂鸣器发出提示音。
|
||||
6. 显示屏常亮模式:当在“回家状态”时打开显示屏,在“待机模式”时关闭显示屏。屏幕里实时显示温度、湿度、空气质量和当地时间。触发某种模式的时候,屏幕出现三秒钟模式名称。
|
||||
7. 自动通风控制模式模块:空气质量检测 CO2>1000ppm 时,ESP32 上报事件,触发自动通风控制模式,打开风扇转动进行空气流通,蜂鸣器发出轻微提示音,小程序发送通知告诉用户卧室需要通风。
|
||||
|
||||
手机控制端:实时显示卧室参数,如温度、湿度、光照强度、空气质量等,用户可以对不同的模式进行私人设置。手机端 APP 小程序可以远程操控窗帘开关、灯光开关和亮度百分比(小程序用滑块)、风扇开关、蜂鸣器闹钟开关和可设置蜂鸣器闹钟时间。功能模块的都有开关按钮和可以设置时间。
|
||||
物理端:需要按钮对硬件控制器进行物理开关。
|
||||
OLED 显示器:屏幕里实时显示温度、湿度和当地时间。触发某种模式的时候,屏幕出现三秒钟模式名称。
|
||||
|
||||
网络断开时,ESP32 应能依靠本地传感器继续执行部分核心自动化,按钮开关。
|
||||
每种模式都互不冲突。
|
||||
判断窗帘当前状态:每次舵机运行前进行读取控制角度判断窗帘开关状态。
|
||||
|
||||
## 硬件需求
|
||||
|
||||
| 组件名称 | 数量 | ESP32 连接引脚 | 通信协议/类型 | 电源需求 | 备注 |
|
||||
| ---------------------------- | ---- | -------------------------------------- | ------------- | -------- | ---------------------------- |
|
||||
| **ESP32 开发板** | 1 | - | - | 5V/1A | 主控制器 |
|
||||
| **DHT22 温湿度传感器** | 1 | **GPIO 4** | 单总线 | 3.3V | 需 4.7KΩ 上拉电阻 |
|
||||
| **光敏电阻** | 1 | **GPIO 34** | ADC 输入 | 3.3V | ADC1_CH6,配合 10KΩ 分压电阻 |
|
||||
| **舵机(窗帘控制)** | 1 | **GPIO 13** | PWM | 5V | 频率 50Hz,需外部供电 |
|
||||
| **蜂鸣器(有源)** | 1 | **GPIO 12** | 数字输出 | 3.3V | 高电平触发 |
|
||||
| **OLED 显示屏** | 1 | **GPIO 21 (SDA)**<br>**GPIO 22 (SCL)** | I2C | 3.3V | 地址 0x3C,SSD1306 |
|
||||
| **LED 灯(PWM 调光)** | 1 | **GPIO 14** | PWM | 3.3V | 频率 1000Hz,串联 220Ω 电阻 |
|
||||
| **空气质量传感器(MQ-135)** | 1 | **GPIO 32** | ADC 输入 | 5V | ADC1_CH4,需加热电压 |
|
||||
| **物理按钮 1(窗帘控制)** | 1 | **GPIO 25** | 数字输入 | 3.3V | 内部上拉,按下接地 |
|
||||
| **物理按钮 2(灯光控制)** | 1 | **GPIO 26** | 数字输入 | 3.3V | 内部上拉,按下接地 |
|
||||
| **物理按钮 3(风扇控制)** | 1 | **GPIO 27** | 数字输入 | 3.3V | 内部上拉,按下接地 |
|
||||
|
||||
- 测量时 I2C 频率在 10K~400KHz 之间,不宜过高,且采集数据周期应大于 1 秒/1 次
|
||||
- 1,要接外部 32.768khz 晶振,否则系统不会进入 stop 状态,省电效果不大
|
||||
- 2,在 config 中,要把 freertos 的时基调整到 1000,开启 rtos, 还要开启 32.768khz
|
||||
|
||||
## 软件架构设计
|
||||
|
||||
### 整体架构
|
||||
|
||||
┌─────────────────────┐
|
||||
│ 第一层:微信小程序 │
|
||||
│ (用户交互层) │
|
||||
│ 功能:控制/展示 │
|
||||
└──────────┬──────────┘
|
||||
│ MQTT/HTTP
|
||||
┌──────────▼──────────┐
|
||||
│ 第二层:物联网云平台 │
|
||||
│ (核心中转层) │
|
||||
│ 功能:转发/存储 │
|
||||
└──────────┬──────────┘
|
||||
│ MQTT
|
||||
┌──────────▼──────────┐
|
||||
│ 第三层:ESP32 设备 │
|
||||
│ (感知执行层) │
|
||||
│ 功能:采集/执行 │
|
||||
└─────────────────────┘
|
||||
|
||||
### 通信协议设计
|
||||
|
||||
1. MQTT 主题设计
|
||||
|
||||
home/bedroom/state # 设备状态上报
|
||||
home/bedroom/command # 设备指令下发
|
||||
home/bedroom/sensor # 传感器数据
|
||||
home/bedroom/response # 执行响应
|
||||
|
||||
2. JSON 消息格式
|
||||
|
||||
```json
|
||||
// 传感器数据上报
|
||||
{
|
||||
"device_id": "bedroom_001",
|
||||
"timestamp": 1640995200,
|
||||
"temperature": 25.5,
|
||||
"humidity": 60,
|
||||
"light": 300,
|
||||
"air_quality": 800,
|
||||
"curtain_position": 90
|
||||
}
|
||||
|
||||
// 指令下发
|
||||
{
|
||||
"cmd_id": "CMD_001",
|
||||
"command": "set_mode",
|
||||
"mode": "daytime",
|
||||
"params": {
|
||||
"curtain_auto": true,
|
||||
"light_threshold": 200
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## ESP32 固件设计
|
||||
|
||||
1. 程序结构
|
||||
|
||||
1. WiFi 管理模块
|
||||
2. MQTT 通信模块
|
||||
3. 传感器读取模块
|
||||
4. 执行器控制模块
|
||||
5. 状态机管理模块
|
||||
6. OLED 显示模块
|
||||
7. 本地存储模块
|
||||
|
||||
2. 核心状态机设计
|
||||
|
||||
```C
|
||||
enum SystemState {
|
||||
STATE_HOME, // 到家状态
|
||||
STATE_STANDBY, // 待机状态
|
||||
STATE_MORNING, // 起床模式
|
||||
STATE_DAYTIME, // 白天模式
|
||||
STATE_NIGHT, // 夜间模式
|
||||
STATE_COOLING, // 降温模式
|
||||
STATE_VENT // 通风模式
|
||||
};
|
||||
|
||||
enum DeviceState {
|
||||
CURTAIN_OPEN,
|
||||
CURTAIN_CLOSED,
|
||||
LIGHT_ON,
|
||||
LIGHT_OFF,
|
||||
FAN_ON,
|
||||
FAN_OFF
|
||||
};
|
||||
```
|
||||
|
||||
## 微信小程序设计
|
||||
|
||||
### 界面布局
|
||||
|
||||
首页(仪表盘):
|
||||
├── 顶部:房间名称、网络状态
|
||||
├── 中部:环境数据卡片(温度、湿度、光照、空气质量)
|
||||
├── 底部:模式切换卡片
|
||||
└── 浮动按钮:设备控制面板
|
||||
|
||||
控制面板:
|
||||
├── 窗帘控制:开关、百分比滑块
|
||||
├── 灯光控制:开关、亮度滑块、色温选择
|
||||
├── 风扇控制:开关、风速档位
|
||||
├── 蜂鸣器:开关、闹钟设置
|
||||
└── 模式设置:各模式的参数配置
|
||||
|
||||
设置页面:
|
||||
├── WiFi 配置
|
||||
├── 设备管理
|
||||
├── 时间设置
|
||||
└── 阈值配置
|
||||
|
||||
## 配网
|
||||
|
||||
1. ESP32 上电 → 自动开启【WiFi 热点】(名称如:卧室智能设备\_配网)
|
||||
2. 手机/电脑 连接这个 WiFi 热点(无密码)
|
||||
3. 打开手机/电脑浏览器 → 输入地址:192.168.4.1 → 弹出配置网页
|
||||
4. 网页填写:WiFi 名称、WiFi 密码、MQTT 服务器地址、MQTT 端口
|
||||
5. 点击【保存配置】,配置自动写入 ESP32 闪存,永久保存
|
||||
6. ESP32 自动重启 → 读取配置 → 自动连接家里的 WiFi → 自动接入填写的 MQTT 服务器
|
||||
7. 完成!后续上电全自动化运行,想换参数/服务器,重复 1-5 步即可
|
||||
|
||||
- 大概界面
|
||||
┌────────────────────────────────────────┐
|
||||
│ ESP32 智能卧室 配置页面 │
|
||||
│ (无需登录,连接热点即可访问 192.168.4.1)│
|
||||
├────────────────────────────────────────┤
|
||||
│ WiFi 配置: │
|
||||
│ WiFi 名称(SSID) :□**\*\*\*\***\_\_\_\_**\*\*\*\*** │
|
||||
│ WiFi 密码(PWD) :□**\*\*\*\***\_\_\_\_**\*\*\*\*** │
|
||||
├────────────────────────────────────────┤
|
||||
│ MQTT 服务器配置:(自由填写任意服务器) │
|
||||
│ 服务器地址 :□**\*\*\*\***\_\_\_\_**\*\*\*\*** │
|
||||
│ 服务器端口 :□ 1883 │
|
||||
│ 用户名 :□**\*\*\*\***\_\_\_\_**\*\*\*\*** │
|
||||
│ 密码 :□**\*\*\*\***\_\_\_\_**\*\*\*\*** │
|
||||
├────────────────────────────────────────┤
|
||||
│ [保存配置] [重启设备] │
|
||||
└────────────────────────────────────────┘
|
||||
Reference in New Issue
Block a user