1. 项目概述:当传统衣柜遇上物联网技术
每次换季整理衣柜时,你是否也经历过"明明有衣服却找不到"的尴尬?三年前我帮妻子改造传统衣柜时,意外发现这个痛点远比想象中普遍。通过给衣柜加装传感器和控制系统,我们不仅实现了衣物数字化管理,还能自动调节存储环境——这就是智能衣柜系统的雏形。
这个基于ESP32的物联网系统,核心在于用硬件感知+云端管理重构传统储物场景。通过重量传感器记录衣物存取,温湿度模块监测环境数据,配合手机APP就能远程查看衣柜状态。最实用的功能是"衣物定位"——输入要找的连衣裙,APP会亮起对应的储物格LED灯。毕业设计选择这个方向,正是因为其兼具技术创新和生活实用性。
2. 系统架构设计解析
2.1 硬件层:传感器选型与布局
主控选用ESP32-C3而非传统Arduino,看中的是其内置Wi-Fi/蓝牙双模和RISC-V架构的低功耗特性(实测待机电流仅8μA)。每个储物格底部安装HX711模块配合薄膜压力传感器,精度可达±10g,足以检测单件T恤的存取。
环境监测采用SHT30温湿度传感器,其±2%RH的精度比DHT11高出一个数量级。为准确反映不同区域的微环境,我在衣柜顶部、中部和背板各部署一个监测点,通过I2C总线级联。曾尝试用摄像头做衣物识别,后发现普通RGB摄像头在弱光环境下误判率高,最终改用RFID标签方案——每件衣物缝制硬币大小的无源标签,通过间距5cm的天线阵列定位。
2.2 通信协议设计
在Wi-Fi和蓝牙Mesh间做过对比测试:普通公寓环境下,2.4GHz Wi-Fi穿墙后信号衰减达12dB,而蓝牙Mesh通过中继节点可将传输距离延伸至15米。最终采用混合方案:柜内传感器用蓝牙Mesh组网,网关设备通过Wi-Fi连接云端。为降低功耗,所有终端设备采用事件触发式通信,静止状态下每小时仅发送1次心跳包。
MQTT协议选用3.1.1版本,设置QoS=1保证消息必达。遇到过Wi-Fi频繁重连的问题,后通过以下配置优化:
cpp复制// ESP32 Wi-Fi配置优化
WiFi.setSleep(false); // 禁用睡眠模式
WiFi.setTxPower(WIFI_POWER_19_5dBm); // 提高发射功率
2.3 云端服务架构
放弃直接使用公有云IoT平台,选择自建MQTT broker(Mosquitto)+时序数据库(InfluxDB)组合。这样做的优势是能自定义数据存储策略,比如设置温湿度数据保留365天,而开关门事件只保留30天。前端采用Vue.js+ECharts构建的管理后台,关键代码如下:
javascript复制// 衣物存取频率热力图渲染
this.chart.setOption({
series: [{
type: 'heatmap',
data: this.formatData(weightSensorHistory),
itemStyle: { opacity: 0.8 }
}]
});
3. 核心功能实现细节
3.1 动态重量校准算法
初始方案直接读取HX711原始值,发现不同位置放置相同衣物时读数差异可达15%。通过引入动态校准系数矩阵解决该问题:
- 在每个储物格均匀放置500g砝码,记录9个测试点的ADC值
- 计算位置补偿系数k=标准值/实测值
- 实际测量时应用公式:W_corrected = k(x,y) * W_raw
实测显示校准后误差降至3%以内。存储校准数据时需要注意:ESP32的NVS存储区有擦写次数限制,应避免频繁写入。我们采用"首次校准+手动触发重校准"的策略。
3.2 衣物推荐引擎
基于历史存取数据构建衣物使用特征向量,包含:
- 季节系数(夏季服装在7月权重+0.2)
- 最近使用频率(LRU算法)
- 搭配关联度(西装裤与衬衫的共现次数)
用余弦相似度计算推荐得分,前端展示时特别处理了连续多天未使用的衣物(标记为"可能遗忘")。曾尝试用TensorFlow Lite做图像风格分类,后发现嵌入式设备推理耗时过长(>800ms),改用预先标记的品类标签。
3.3 环境智能调节
当检测到湿度持续>65%时,系统会:
- 启动衣柜顶部的PTC加热器(50℃恒温)
- 通过蓝牙Mesh广播唤醒所有除湿盒的半导体冷凝模块
- 向APP推送提醒:"检测到高湿度,已开启防潮模式"
温度控制采用PID算法,参数整定过程发现衣柜这类大惯性系统需要特别设置:
python复制# PID参数经验值
Kp = 2.0 # 比例系数较常规系统降低
Ki = 0.05 # 积分时间延长
Kd = 8.0 # 微分作用增强
4. 开发中的典型问题与解决方案
4.1 传感器数据漂移
现象:连续运行72小时后,重量传感器出现±50g的零点漂移。排查发现是HX711芯片温度特性导致,解决方案:
- 在初始化时读取环境温度T0
- 每次测量前读取当前温度T1
- 应用温度补偿公式:ΔW=0.05*(T1-T0)^2
4.2 蓝牙Mesh组网不稳定
测试中发现边缘节点时有掉线,通过以下措施改善:
- 修改网络拓扑为"星形+中继"混合结构
- 将广播间隔从100ms调整为300ms
- 添加信号强度RSSI监测,低于-85dBm时触发路由切换
4.3 云端数据同步冲突
多设备同时操作时出现状态不一致,最终采用操作日志+版本号的解决方案:
- 每个修改操作生成带时间戳的日志项
- 本地保存最后同步版本号lastSyncedVersion
- 同步时上传lastSyncedVersion,服务端返回所有新版本日志
5. 系统优化与实测数据
经过三个月的迭代,关键指标达到:
- 重量检测平均误差:±2.8%(校准后)
- 温湿度采样精度:±0.3℃/±1.5%RH
- 云端指令延迟:Wi-Fi环境下<300ms
- 整机待机功耗:0.15W(约合年耗电1.3度)
在衣物查找效率测试中,与传统衣柜对比:
| 测试场景 | 传统衣柜平均耗时 | 智能衣柜平均耗时 |
|---|---|---|
| 定位特定上衣 | 82秒 | 8秒 |
| 搭配全套正装 | 210秒 | 35秒 |
| 找季节性衣物 | 180秒 | 自动推送 |
功耗优化方面,通过以下策略使电池续航提升3倍:
- 将温湿度采样间隔从5分钟调整为10分钟
- 重量传感器采用中断唤醒模式
- 蓝牙广播包长度压缩至31字节
这套系统最让我意外的收获是发现了衣物使用规律:用户实际常穿的衣物只占总数量的28%,剩余72%的衣物年均使用次数不足5次。这为后续开发"智能衣橱精简建议"功能提供了数据基础。