目录
[1、DHT22 温湿度传感器](#1、DHT22 温湿度传感器)
[3、UV-C 紫外杀菌](#3、UV-C 紫外杀菌)
[2、UV 杀菌逻辑](#2、UV 杀菌逻辑)
[十一、软件设计(.h / .c 多文件工程)](#十一、软件设计(.h / .c 多文件工程))
[2、config.h ------ 全局配置](#2、config.h —— 全局配置)
[3、env.h / env.c ------ 温湿度模块](#3、env.h / env.c —— 温湿度模块)
[4、fan.h / fan.c ------ 除湿控制模块](#4、fan.h / fan.c —— 除湿控制模块)
[5、uv.h / uv.c ------ 紫外杀菌与安全联锁](#5、uv.h / uv.c —— 紫外杀菌与安全联锁)
[6、door.h / door.c ------ 门磁模块](#6、door.h / door.c —— 门磁模块)
[7、cloud.h / cloud.c ------ 云端通讯模块](#7、cloud.h / cloud.c —— 云端通讯模块)
[8、display.h / display.c ------ OLED 显示模块](#8、display.h / display.c —— OLED 显示模块)
[9、main.c ------ 主程序](#9、main.c —— 主程序)
[十五、开题报告 & 答辩要点](#十五、开题报告 & 答辩要点)
难度定位 :★★☆☆☆(偏易控制型)|适合:想做一个「生活贴近、逻辑清晰、硬件不复杂」选题、基础一般的同学|预估周期:3 周
一、这个毕设是干什么的?
一句话:做一套能监测衣柜内温湿度、霉菌风险,自动除湿通风、定时紫外杀菌,还能手机上远程查看和控制的智能衣柜管理系统。
再展开说:衣柜里最怕的就是潮湿、发霉、有异味,尤其南方梅雨季,衣服放久了发霉、霉斑很难洗掉。这套系统在衣柜里放一个 ESP32 主控,接温湿度传感器实时监测柜内环境;湿度超过设定阈值,自动开风扇通风除湿(可加装半导体除湿片);同时配一个紫外杀菌灯,可定时杀菌除味;所有数据在 OLED 上显示,也能上传云端,手机上随时看柜内温湿度、开关除湿和杀菌。
二、它解决什么问题?
衣柜潮湿衣服发霉 → 实时监测湿度,超标自动除湿;
霉味、细菌滋生 → 定时紫外杀菌、通风换气;
不知道柜内到底潮不潮 → 数据可视化,湿度一目了然;
人不在家没法管 → 手机远程查看与手动控制;
开柜灯忘记关、除湿不知道效果 → 自动化管理,按阈值动作。
本质是: 把「衣柜就是放衣服的柜子」升级成「会感知、会调节、会杀菌、可远程管理」的智能微环境系统,这正是智能家居从「大场景」走向「细分小空间精细化控制」的方向,也是毕设里少见的实用选题。
三、核心功能?
| 功能 | 说明 |
|---|---|
| 温湿度监测 | DHT22/DHT11 实时采集柜内温度、湿度 |
| 自动除湿 | 湿度超阈值自动开风扇/除湿片 |
| 定时通风 | 按周期通风换气,防潮除味 |
| 紫外杀菌 | UV 灯定时杀菌,人开柜时自动断电(安全) |
| 本地显示 | OLED 显示温湿度、设备运行状态 |
| 手机远程 | 云端查看数据、远程开关除湿/杀菌 |
| 阈值可调 | 湿度阈值、杀菌时长可通过网页/手机设置 |
| 异常报警 | 湿度过高/设备异常推送提醒 |
四、用到哪些技术?
| 类别 | 具体 | 作用 |
|---|---|---|
| 主控 | ESP32 | 采集、控制、联网 |
| 温湿度 | DHT22(推荐,精度更高)/DHT11 | 测柜内温湿度 |
| 除湿执行 | 5V 小风扇 + 半导体除湿片(选配) | 通风/除湿 |
| 杀菌 | 紫外灯管 + 继电器 | 定时杀菌 |
| 人体/开门检测 | 门磁或红外(安全联锁) | 开柜即关 UV,防紫外伤害 |
| 通信 | ESP32 内置 WiFi + MQTT/HTTP | 远程查看与控制 |
| 显示 | SSD1306 OLED(I2C) | 本地数据显示 |
| 开发 | Arduino IDE + C 语言 | 编写烧录程序 |
安全提醒:UV-C 紫外灯对眼睛和皮肤有害,绝对不能在有人时开启,必须加入「开门/有人即断电」的安全联锁;直接照射衣物也易老化纤维,控制在短时定时杀菌即可。
五、系统是怎么工作的?
衣柜内环境
↓ DHT22 采集温度/湿度
ESP32 主控(阈值判断)
├── 湿度 > 阈值 → 开风扇/除湿片(除湿模式)
├── 定时到点 → 开 UV 灯定时杀菌
└── 门磁检测到开柜 → 立即关 UV(安全联锁)
↓
OLED 显示温湿度 + 设备状态
↓ WiFi
云平台 / 手机(看数据、远程控制、阈值设置)
一句话串起来:传感器采集 → 阈值判断自动除湿 → 定时杀菌且开柜断电 → 本地显示 + 云端远程管理。
这套「环境感知 + 执行调节 + 安全联锁 + 远程管理」的架构,是所有智能微环境类毕设的通用骨架,也可扩展成智能鞋柜、智能酒柜、智能药柜。
六、大概怎么做?
买硬件(ESP32 + DHT22 + 风扇 + UV 灯 + 继电器 + 门磁 + OLED);
调通 DHT22 读数、风扇与 UV 继电器控制、门磁检测;
写阈值判断逻辑:湿度超阈值开风扇,回落到正常关;
写 UV 定时逻辑 + 开柜断电联锁;
接 WiFi,把数据上传云端、接收远程指令;
加 OLED 显示;
联调:模拟潮湿环境(对着传感器哈气)触发除湿、定时 UV 点亮、开柜 UV 熄灭、手机看到数据并远程控制,链路跑通即完成。
核心难点是「UV 灯的安全联锁」和「多执行器的状态协调」,逻辑本身不难。下面逐步展开。
七、硬件清单与接线
1、硬件清单
| 器件 | 型号/规格 | 数量 |
|---|---|---|
| 主控板 | ESP32 DevKitC | 1 |
| 温湿度 | DHT22(或 DHT11) | 1 |
| 风扇 | 5V 小风扇(USB 风扇可改) | 1 |
| 半导体除湿片 | 选配,5V/12V | 1 |
| 紫外灯 | UV-C 灯管/模块 + 继电器 | 1 |
| 门磁 | 干簧管门磁 | 1 |
| 显示 | SSD1306 OLED 128×64 | 1 |
| 电源 | 5V 2A | 1 |
| 面包板 + 杜邦线 | --- | 若干 |
2、接线表
| ESP32 引脚 | 连接器件 | 说明 |
|---|---|---|
| GPIO4 | DHT22 DATA | 单总线读温湿度 |
| GPIO26 | 风扇继电器 IN | 低电平触发 |
| GPIO27 | UV 灯继电器 IN | 低电平触发 |
| GPIO5 | 门磁 | 上拉输入,开柜为高 |
| GPIO21 | OLED SDA | I2C 数据线 |
| GPIO22 | OLED SCL | I2C 时钟线 |
| 5V | 风扇/UV 灯 VCC | 按器件要求供电 |
| GND | 所有器件地线 | 必须共地 |
关键提醒 :UV 灯功率大,不要用 ESP32 引脚直驱,必须通过继电器/固态继电器隔离;强电部分(220V UV 灯)接线务必断电操作,毕设演示推荐用低压 UV 模块,避免强电风险。
八、核心器件原理简述
1、DHT22 温湿度传感器
数字单总线传感器,内部已校准,直接输出数字温度(-40~80℃,±0.5℃)与湿度(0~100%RH,±2%);
比 DHT11 精度高,读取间隔需 ≥2 秒,否则会读失败;
潮湿环境长期使用建议加防护(加透气防尘罩),避免水汽直接进入芯片。
2、半导体除湿片(帕尔贴)
通电后一侧变冷一侧变热,冷端结露把水汽凝成水,达到除湿效果;
需要散热片 + 风扇辅助,功率 5~12V 不等;
宿舍/衣柜体积小,用它比压缩机除湿更合适,但效率有限,配合通风效果更好。
3、UV-C 紫外杀菌
波长 200~280nm 的紫外光能破坏微生物 DNA,杀菌除味;
对人眼、皮肤有害,必须封闭运行,开门自动关闭;
定时 10~30 分钟即可,长时间照射会加速衣物纤维老化。
九、控制逻辑与安全联锁
1、除湿控制逻辑
| 条件 | 动作 |
|---|---|
| 湿度 > 阈值(如 65%RH) | 开风扇(+除湿片) |
| 湿度 < 阈值 − 迟滞(如 58%RH) | 关风扇 |
| 湿度 > 危险值(如 80%RH) | 推送提醒 |
2、UV 杀菌逻辑
| 条件 | 动作 |
|---|---|
| 定时到点(如每天 22:00)或手动开启 | 开 UV 灯,计时 15 分钟 |
| 计时结束 | 自动关 UV |
| 门磁检测开门 | 立即关 UV 并禁止开启 |
| 再次关门 | 需等 30 秒后才允许下一轮 |
3、安全联锁优先级
开门检测 → 最高优先级 → 立刻断 UV
除湿控制 → 次优先级
定时杀菌 → 最低优先级
十、开发环境搭建
安装 Arduino IDE(2.x);
添加 ESP32 板卡(开发板管理器搜索
esp32安装);安装库:
DHT sensor library、Adafruit SSD1306、Adafruit GFX、PubSubClient(MQTT);选择开发板
ESP32 Dev Module,烧录失败按住 BOOT 键重试。
十一、软件设计(.h / .c 多文件工程)
代码按功能拆分:头文件(.h)只放宏、结构体、函数声明,源文件(.c)放具体实现,职责清晰、符合正式工程规范。
1、工程文件结构
esp32_wardrobe/
├── config.h // 全局配置:引脚、阈值、WiFi、MQTT
├── env.h // 温湿度模块声明
├── env.c // DHT22 采集实现
├── fan.h // 风扇/除湿模块声明
├── fan.c // 除湿控制实现
├── uv.h // 紫外杀菌模块声明
├── uv.c // UV 控制与安全联锁实现
├── door.h // 门磁模块声明
├── door.c // 开门检测实现
├── cloud.h // 云端通讯模块声明
├── cloud.c // MQTT 上报与指令响应实现
├── display.h // OLED 显示模块声明
├── display.c // OLED 显示实现
└── main.c // 主程序:setup() / loop()
2、config.h ------ 全局配置
#ifndef CONFIG_H
#define CONFIG_H
/* 引脚 */
#define PIN_DHT 4
#define PIN_FAN 26
#define PIN_UV 27
#define PIN_DOOR 5
/* OLED */
#define PIN_SDA 21
#define PIN_SCL 22
/* 阈值 */
#define HUMI_ON 65 /* 湿度达到该值开风扇 */
#define HUMI_OFF 58 /* 湿度降到该值关风扇(迟滞) */
#define HUMI_ALARM 80 /* 危险湿度,推送提醒 */
/* UV 杀菌时长(毫秒) */
#define UV_RUN_MS (15UL * 60UL * 1000UL)
#define UV_LOCK_MS (30UL * 1000UL) /* 关门后延迟 30 秒才可再开 */
/* WiFi / MQTT */
#define WIFI_SSID "your_wifi"
#define WIFI_PASS "your_pass"
#define MQTT_SERVER "broker.example.com"
#define MQTT_PORT 1883
#define MQTT_TOPIC_UP "wardrobe/data"
#define MQTT_TOPIC_DN "wardrobe/cmd"
#endif
3、env.h / env.c ------ 温湿度模块
env.h(声明):
#ifndef ENV_H
#define ENV_H
#include <stdbool.h>
typedef struct { float temp; float humi; bool valid; } env_data_t;
void env_init(void);
env_data_t env_read(void);
#endif
env.c(实现):
#include "env.h"
#include "config.h"
#include <DHT.h>
static DHT dht(PIN_DHT, DHT22);
void env_init(void) { dht.begin(); }
env_data_t env_read(void) {
env_data_t d;
d.temp = dht.readTemperature();
d.humi = dht.readHumidity();
d.valid = !isnan(d.temp) && !isnan(d.humi);
return d;
}
4、fan.h / fan.c ------ 除湿控制模块
fan.h(声明):
#ifndef FAN_H
#define FAN_H
#include <stdbool.h>
void fan_init(void);
void fan_set(bool on); /* 直接开关 */
bool fan_control(float humi);/* 按湿度自动控制,返回是否开启 */
#endif
fan.c(实现,带迟滞):
#include "fan.h"
#include "config.h"
static bool running = false;
void fan_init(void) {
pinMode(PIN_FAN, OUTPUT);
digitalWrite(PIN_FAN, HIGH); /* 低电平触发,默认关 */
}
void fan_set(bool on) {
digitalWrite(PIN_FAN, on ? LOW : HIGH);
running = on;
}
/* 迟滞控制:高于阈值开,低于阈值-迟滞才关,避免反复跳动 */
bool fan_control(float humi) {
if (humi >= HUMI_ON) fan_set(true);
else if (humi <= HUMI_OFF) fan_set(false);
return running;
}
5、uv.h / uv.c ------ 紫外杀菌与安全联锁
uv.h(声明):
#ifndef UV_H
#define UV_H
#include <stdbool.h>
void uv_init(void);
bool uv_start(void); /* 请求开启,返回是否成功(开柜时拒绝) */
void uv_stop(void); /* 立即关闭 */
void uv_tick(bool doorOpen); /* 循环调用:处理计时与开门断电 */
bool uv_is_on(void);
#endif
uv.c(实现):
#include "uv.h"
#include "config.h"
static bool on = false;
static uint32_t startMs = 0;
static uint32_t doorClosedMs = 0;
void uv_init(void) {
pinMode(PIN_UV, OUTPUT);
digitalWrite(PIN_UV, HIGH); /* 默认关 */
doorClosedMs = millis();
}
bool uv_start(void) {
if (on) return true;
/* 关门不足锁定时长,拒绝开启 */
if (millis() - doorClosedMs < UV_LOCK_MS) return false;
digitalWrite(PIN_UV, LOW);
on = true;
startMs = millis();
return true;
}
void uv_stop(void) {
digitalWrite(PIN_UV, HIGH);
on = false;
}
/* 最高优先级安全逻辑:一开门立刻关灯 */
void uv_tick(bool doorOpen) {
if (doorOpen) {
if (on) uv_stop();
doorClosedMs = millis();
return;
}
if (!on) return;
if (millis() - startMs >= UV_RUN_MS) uv_stop(); /* 到时长自动关 */
}
bool uv_is_on(void) { return on; }
6、door.h / door.c ------ 门磁模块
door.h(声明):
#ifndef DOOR_H
#define DOOR_H
#include <stdbool.h>
void door_init(void);
bool door_is_open(void);
#endif
door.c(实现,含去抖):
#include "door.h"
#include "config.h"
void door_init(void) { pinMode(PIN_DOOR, INPUT_PULLUP); }
/* 连续 3 次读到高电平才算开,滤掉抖动 */
bool door_is_open(void) {
int cnt = 0;
for (int i = 0; i < 3; i++) {
if (digitalRead(PIN_DOOR) == HIGH) cnt++;
delay(20);
}
return (cnt >= 3);
}
7、cloud.h / cloud.c ------ 云端通讯模块
cloud.h(声明):
#ifndef CLOUD_H
#define CLOUD_H
#include <stdbool.h>
#include "env.h"
void cloud_init(void);
void cloud_loop(void);
void cloud_report(const env_data_t *e, bool fan, bool uv); /* 上报数据 */
bool cloud_cmd_fan(void); /* 平台下发的最近一次风扇指令(可扩展) */
#endif
cloud.c(实现):
#include "cloud.h"
#include "config.h"
#include <WiFi.h>
#include <PubSubClient.h>
static WiFiClient wifiCli;
static PubSubClient mqtt(wifiCli);
static bool pendingFan = false;
/* 收到平台指令:fan:on/off、uv:on/off */
static void on_message(char *topic, byte *payload, unsigned int len) {
char buf[16] = {0};
if (len >= sizeof(buf)) len = sizeof(buf) - 1;
memcpy(buf, payload, len);
if (strcmp(buf, "fan:on") == 0) pendingFan = true;
/* uv 指令交给主程序调 uv_start(需检查门状态) */
}
void cloud_init(void) {
WiFi.begin(WIFI_SSID, WIFI_PASS);
while (WiFi.status() != WL_CONNECTED) delay(500);
mqtt.setServer(MQTT_SERVER, MQTT_PORT);
mqtt.setCallback(on_message);
}
void cloud_loop(void) {
if (!mqtt.connected()) mqtt.connect("esp32_wardrobe");
mqtt.loop();
}
void cloud_report(const env_data_t *e, bool fan, bool uv) {
if (!mqtt.connected()) return;
char buf[96];
snprintf(buf, sizeof(buf),
"{\"t\":%.1f,\"h\":%.1f,\"fan\":%d,\"uv\":%d}",
e->temp, e->humi, fan ? 1 : 0, uv ? 1 : 0);
mqtt.publish(MQTT_TOPIC_UP, buf);
}
bool cloud_cmd_fan(void) {
bool v = pendingFan;
pendingFan = false;
return v;
}
8、display.h / display.c ------ OLED 显示模块
display.h(声明):
#ifndef DISPLAY_H
#define DISPLAY_H
#include "env.h"
void display_init(void);
void display_show(const env_data_t *e, bool fan, bool uv, bool door);
#endif
display.c(实现):
#include "display.h"
#include "config.h"
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
static Adafruit_SSD1306 oled(128, 64, &Wire, -1);
void display_init(void) {
Wire.begin(PIN_SDA, PIN_SCL);
oled.begin(SSD1306_SWITCHCAPVCC, 0x3C);
oled.clearDisplay();
oled.setTextColor(SSD1306_WHITE);
}
void display_show(const env_data_t *e, bool fan, bool uv, bool door) {
oled.clearDisplay();
oled.setCursor(0, 0);
oled.print("T:"); oled.print(e->temp, 1); oled.println(" C");
oled.print("H:"); oled.print(e->humi, 1); oled.println(" %");
oled.print("Fan:"); oled.print(fan ? "ON " : "OFF");
oled.print(" UV:"); oled.println(uv ? "ON" : "OFF");
oled.print("Door:"); oled.println(door ? "OPEN" : "CLOSED");
oled.display();
}
9、main.c ------ 主程序
#include "config.h"
#include "env.h"
#include "fan.h"
#include "uv.h"
#include "door.h"
#include "cloud.h"
#include "display.h"
static bool uvRequest = false; /* 手动/定时请求开启 UV */
static uint32_t lastReportMs = 0;
void setup() {
env_init();
fan_init();
uv_init();
door_init();
display_init();
cloud_init();
}
void loop() {
/* ① 门状态优先:最高安全优先级 */
bool doorOpen = door_is_open();
uv_tick(doorOpen);
/* ② 采集环境 */
env_data_t e = env_read();
/* ③ 自动除湿 */
bool fanOn = false;
if (e.valid) {
fanOn = fan_control(e.humi);
if (e.humi >= HUMI_ALARM) {
/* 湿度过高,可加推送;这里仅串口提示 */
Serial.println("humidity alarm");
}
}
/* ④ UV 请求处理:门关着才允许 */
if (uvRequest && !doorOpen) {
if (uv_start()) uvRequest = false;
}
if (doorOpen) uvRequest = false;
/* ⑤ 平台指令 */
if (cloud_cmd_fan()) fan_set(true);
/* ⑥ 显示 + 上报(每 5 秒) */
display_show(&e, fanOn, uv_is_on(), doorOpen);
if (millis() - lastReportMs > 5000) {
lastReportMs = millis();
cloud_report(&e, fanOn, uv_is_on());
}
cloud_loop();
delay(200);
}
以上为核心模块代码。需要时可继续扩展:
schedule.c(定时 UV/通风任务表)、record.c(环境历史曲线)、servo.c(自动开合柜门),主程序只调用接口,逻辑一目了然。
十二、代码要点讲解
.h/.c分离 :.h只放宏、结构体、函数声明,.c放实现隐藏细节,模块独立便于扩展,是论文「模块化设计」的要点;
config.h集中配置:引脚、阈值、UV 时长、WiFi/MQTT 都收在一个文件;DHT22 读间隔 ≥2 秒:读太快会返回 NaN,主循环加延时保证;
迟滞控制 :
HUMI_ON/HUMI_OFF双阈值,避免在临界值反复开关风扇;
uv_tick安全优先 :开门立刻uv_stop,再判断计时,安全逻辑放在最前面;UV 关锁
UV_LOCK_MS:关门后 30 秒内禁止开灯,防止频繁开关柜门导致误开;门磁去抖:连续 3 次采样,避免柜门轻微震动误判开门;
MQTT 上报精简 JSON:字段短、体积小,云端解析简单。
十三、功能测试与验收
| 功能 | 实现方式 | 测试方法 |
|---|---|---|
| 温湿度采集 | env_read |
OLED 显示合理温湿度 |
| 自动除湿 | fan_control |
对传感器哈气,湿度升高风扇开;降下来风扇停 |
| 除湿迟滞 | HUMI_ON/HUMI_OFF |
在 58~65 之间风扇不反复开关 |
| UV 定时杀菌 | uv_start + uv_tick |
手动请求,UV 亮 15 分钟后自动关 |
| 开门断电联锁 | uv_tick(doorOpen) |
UV 亮时开门磁,UV 立即熄灭 |
| 关门锁定 | UV_LOCK_MS |
关门后立刻请求开 UV,被拒绝;30 秒后可开 |
| 远程数据 | cloud_report |
云平台/手机看到温湿度与状态 |
| 远程控制 | cloud_cmd_fan |
手机下发 fan:on,风扇启动 |
分步验收清单:
-
上电 OLED 显示温湿度 → 采集显示 OK;
-
哈气让湿度升高,风扇自动转 → 除湿 OK;
-
湿度回落,风扇自动停 → 迟滞 OK;
-
手动开 UV,灯亮并 15 分钟后自动灭 → 定时杀菌 OK;
-
UV 亮时开门,灯立刻熄灭 → 安全联锁 OK;
-
云平台看到数据、手机能控制风扇 → 远程 OK。
十四、能给你什么启发?
1、选题优势:生活场景贴近、人人都懂,答辩容易讲清;硬件便宜(传感器 + 风扇 + UV 模块百元内)、逻辑简单好调试,基础一般的同学也能稳过;智能衣柜、鞋柜、酒柜这类细分选题重复率低,容易做出差异化。
2、想冲更高分数,随便往这几个方向扩:
加衣物管理:给每件衣服加 RFID/NFC 标签,手机查「这件衣服在哪」;
加香薰/除味:定时喷香或负离子净化,提升体验;
加柜内照明:开门自动亮灯、关门熄灭;
加湿度历史曲线:云端记录一个月湿度变化,分析发霉风险;
加语音控制:接入小爱/天猫精灵,语音开关杀菌;
加多柜联动:主卧/次卧衣柜统一管理,一个 APP 看全部。
十五、开题报告 & 答辩要点
1、开题报告可直接改用的表述
1、选题依据(背景):衣柜内环境潮湿易导致衣物发霉、滋生细菌、产生异味,尤其在南方梅雨季节问题突出。传统衣柜缺乏环境感知与调节能力,用户只能被动发现。利用温湿度传感器实时监测柜内环境,并结合自动除湿、紫外杀菌与远程管理,构建智能衣柜环境管理系统具有现实意义。
2、研究意义:本课题将环境传感、执行机构控制、安全联锁与无线通信技术相结合,一方面实现衣柜微环境的自动调节与杀菌除味,提升衣物保存质量与居家生活品质;另一方面完整覆盖传感器采集、阈值迟滞控制、继电器驱动、MQTT 通信等物联网关键技术,对巩固专业知识、锻炼软硬件综合开发能力有重要意义。
3、系统功能概述:系统以 ESP32 为主控,通过 DHT22 采集柜内温湿度,湿度超过阈值自动开启风扇除湿、回落后自动关闭;配置 UV-C 杀菌灯支持定时与手动杀菌,并通过门磁实现开门立即断电的安全联锁;数据经 OLED 本地显示并上传云平台,用户可远程查看环境数据与控制设备。
4、创新点(按实际情况选取):
针对衣柜这一细分微环境做精细化控制,选题差异化明显;
采用迟滞阈值控制,避免执行机构频繁启停;
引入开门即断电的 UV 安全联锁,兼顾功能与人身安全。
5、技术难点:
潮湿环境下传感器稳定性与读数准确性;
多执行器状态协调与安全联锁优先级设计;
远程指令与本地安全逻辑的冲突处理。
2、答辩常见问题(参考回答要点)
| 可能被问 | 回答要点 |
|---|---|
| 为什么选衣柜这个场景? | 潮湿发霉是真实痛点,细分空间控制有实用价值,选题差异化 |
| 湿度怎么控制? | DHT22 采集,超过 65% 开风扇,低于 58% 关,迟滞避免频繁启停 |
| 为什么用迟滞? | 单阈值会在临界点反复开关,双阈值给缓冲区间更稳定 |
| UV 灯安全怎么保证? | 门磁检测开门立即断电,关门后锁定 30 秒才允许再开,绝不在有人时点亮 |
| UV 杀菌多久合适? | 15 分钟即可,长时间照射会加速衣物纤维老化 |
| 数据怎么远程看? | ESP32 通过 MQTT 上报云端,手机/网页订阅查看 |
| 传感器潮湿环境可靠吗? | 加防尘透气罩,定期校准,避免水汽直接进芯片 |
| 系统有哪些改进空间? | 衣物 RFID 管理、香薰除味、照明联动、历史曲线、语音控制等 |