智能鞋柜—脚气终结者,内置温湿度传感器和紫外线灯,晚上回家,把鞋放进去,自动检测湿度,湿度超标就启动烘干+紫外线杀菌,第二天穿鞋干燥无异味。

智能鞋柜------脚气终结者系统

下面是一个基于Python的智能鞋柜控制系统,集成了温湿度传感器和紫外线杀菌功能,能够自动检测鞋子湿度并在超标时启动烘干和杀菌功能。

import time

import random

import threading

from datetime import datetime, timedelta

import RPi.GPIO as GPIO # 树莓派GPIO控制库

import Adafruit_DHT # 温湿度传感器库

硬件配置

class HardwareConfig:

传感器引脚配置

DHT_SENSOR = Adafruit_DHT.DHT22

DHT_PIN = 4 # GPIO4

紫外线灯控制引脚

UV_LED_PIN = 17 # GPIO17

烘干风扇控制引脚

FAN_PIN = 18 # GPIO18

红外人体感应引脚(检测是否有人靠近)

PIR_PIN = 27 # GPIO27

鞋柜门磁开关引脚

DOOR_SWITCH_PIN = 22 # GPIO22

状态指示灯

STATUS_LED_GREEN = 23 # GPIO23

STATUS_LED_RED = 24 # GPIO24

湿度阈值设置

HUMIDITY_THRESHOLD = 65 # 湿度超过65%启动烘干

IDEAL_HUMIDITY = 40 # 理想湿度水平

工作时间设置

UV_STERILIZATION_TIME = 30 * 60 # 紫外线杀菌30分钟

MAX_DRYING_TIME = 2 * 60 * 60 # 最大烘干时间2小时

NIGHT_MODE_START = 18 # 晚上6点开始工作

NIGHT_MODE_END = 8 # 早上8点结束工作

智能鞋柜主控系统

class SmartShoeCabinet:

def init(self):

self.humidity = 0

self.temperature = 0

self.door_open = False

self.uv_active = False

self.fan_active = False

self.last_detection_time = datetime.now()

self.drying_start_time = None

self.sterilization_start_time = None

self.running = True

初始化硬件

self.setup_hardware()

启动传感器监控线程

self.sensor_thread = threading.Thread(target=self.monitor_sensors)

self.sensor_thread.daemon = True

self.sensor_thread.start()

启动主控制循环

self.control_loop()

def setup_hardware(self):

"""初始化硬件设置"""

GPIO.setmode(GPIO.BCM)

设置输出引脚

GPIO.setup(HardwareConfig.UV_LED_PIN, GPIO.OUT)

GPIO.setup(HardwareConfig.FAN_PIN, GPIO.OUT)

GPIO.setup(HardwareConfig.STATUS_LED_GREEN, GPIO.OUT)

GPIO.setup(HardwareConfig.STATUS_LED_RED, GPIO.OUT)

设置输入引脚

GPIO.setup(HardwareConfig.PIR_PIN, GPIO.IN)

GPIO.setup(HardwareConfig.DOOR_SWITCH_PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP)

初始状态:关闭所有设备

GPIO.output(HardwareConfig.UV_LED_PIN, GPIO.LOW)

GPIO.output(HardwareConfig.FAN_PIN, GPIO.LOW)

GPIO.output(HardwareConfig.STATUS_LED_GREEN, GPIO.LOW)

GPIO.output(HardwareConfig.STATUS_LED_RED, GPIO.HIGH) # 启动时红灯亮

print("硬件初始化完成")

def read_sensor_data(self):

"""读取温湿度传感器数据"""

humidity, temperature = Adafruit_DHT.read_retry(

HardwareConfig.DHT_SENSOR,

HardwareConfig.DHT_PIN

)

模拟传感器数据(实际使用时注释掉)

if humidity is None or temperature is None:

humidity = random.uniform(30, 80)

temperature = random.uniform(15, 30)

print("使用模拟传感器数据")

return humidity, temperature

def monitor_sensors(self):

"""传感器监控线程"""

while self.running:

try:

读取温湿度

self.humidity, self.temperature = self.read_sensor_data()

检测鞋柜门状态

self.door_open = GPIO.input(HardwareConfig.DOOR_SWITCH_PIN) == GPIO.HIGH

更新状态指示灯

self.update_status_leds()

每5秒读取一次传感器

time.sleep(5)

except Exception as e:

print(f"传感器监控错误: {e}")

time.sleep(10)

def update_status_leds(self):

"""更新状态指示灯"""

绿灯表示系统正常,红灯表示警告或故障

if self.humidity > HardwareConfig.HUMIDITY_THRESHOLD:

湿度过高,红灯闪烁

GPIO.output(HardwareConfig.STATUS_LED_GREEN, GPIO.LOW)

GPIO.output(HardwareConfig.STATUS_LED_RED, GPIO.HIGH if int(time.time()) % 2 == 0 else GPIO.LOW)

else:

湿度正常,绿灯常亮

GPIO.output(HardwareConfig.STATUS_LED_GREEN, GPIO.HIGH)

GPIO.output(HardwareConfig.STATUS_LED_RED, GPIO.LOW)

def start_drying(self):

"""启动烘干功能"""

if not self.fan_active:

GPIO.output(HardwareConfig.FAN_PIN, GPIO.HIGH)

self.fan_active = True

self.drying_start_time = datetime.now()

print("启动烘干功能")

def stop_drying(self):

"""停止烘干功能"""

if self.fan_active:

GPIO.output(HardwareConfig.FAN_PIN, GPIO.LOW)

self.fan_active = False

self.drying_start_time = None

print("停止烘干功能")

def start_uv_sterilization(self):

"""启动紫外线杀菌"""

if not self.uv_active:

GPIO.output(HardwareConfig.UV_LED_PIN, GPIO.HIGH)

self.uv_active = True

self.sterilization_start_time = datetime.now()

print("启动紫外线杀菌")

def stop_uv_sterilization(self):

"""停止紫外线杀菌"""

if self.uv_active:

GPIO.output(HardwareConfig.UV_LED_PIN, GPIO.LOW)

self.uv_active = False

self.sterilization_start_time = None

print("停止紫外线杀菌")

def check_night_mode(self):

"""检查是否在夜间工作模式"""

now = datetime.now()

current_hour = now.hour

晚上6点到早上8点为夜间模式

if (current_hour >= HardwareConfig.NIGHT_MODE_START) or (current_hour < HardwareConfig.NIGHT_MODE_END):

return True

return False

def control_loop(self):

"""主控制循环"""

print("智能鞋柜系统启动")

try:

while self.running:

检查是否在夜间模式

night_mode = self.check_night_mode()

如果鞋柜门关闭且处于夜间模式

if not self.door_open and night_mode:

检查湿度是否超标

if self.humidity > HardwareConfig.HUMIDITY_THRESHOLD:

print(f"检测到高湿度: {self.humidity:.1f}% > {HardwareConfig.HUMIDITY_THRESHOLD}%")

启动烘干

self.start_drying()

启动紫外线杀菌

self.start_uv_sterilization()

else:

湿度正常,停止烘干

self.stop_drying()

如果杀菌时间不足,继续杀菌

if self.uv_active:

elapsed = (datetime.now() - self.sterilization_start_time).total_seconds()

if elapsed >= HardwareConfig.UV_STERILIZATION_TIME:

self.stop_uv_sterilization()

白天模式或非夜间模式

else:

停止所有功能

self.stop_drying()

self.stop_uv_sterilization()

安全检查:防止过度烘干

if self.fan_active:

elapsed = (datetime.now() - self.drying_start_time).total_seconds()

if elapsed >= HardwareConfig.MAX_DRYING_TIME:

print("达到最大烘干时间,停止烘干")

self.stop_drying()

检查紫外线杀菌时间

if self.uv_active:

elapsed = (datetime.now() - self.sterilization_start_time).total_seconds()

if elapsed >= HardwareConfig.UV_STERILIZATION_TIME:

print("紫外线杀菌完成")

self.stop_uv_sterilization()

每10秒检查一次

time.sleep(10)

except KeyboardInterrupt:

print("系统关闭中...")

finally:

self.cleanup()

def cleanup(self):

"""清理资源"""

self.running = False

self.stop_drying()

self.stop_uv_sterilization()

关闭所有LED

GPIO.output(HardwareConfig.STATUS_LED_GREEN, GPIO.LOW)

GPIO.output(HardwareConfig.STATUS_LED_RED, GPIO.LOW)

GPIO.cleanup()

print("系统已关闭")

模拟演示程序

def simulate_shoe_cabinet():

"""模拟智能鞋柜运行"""

print("=== 智能鞋柜模拟演示 ===")

cabinet = SmartShoeCabinet()

模拟一天的运行

print("\n模拟白天模式 (8:00 AM)")

cabinet.door_open = False

time.sleep(2)

print("\n模拟晚上回家放鞋 (6:00 PM)")

cabinet.door_open = True

time.sleep(2)

cabinet.door_open = False

time.sleep(2)

print("\n模拟高湿度情况")

cabinet.humidity = 75

time.sleep(5)

print("\n模拟湿度恢复正常")

cabinet.humidity = 45

time.sleep(5)

print("\n模拟第二天早上取鞋 (8:00 AM)")

cabinet.door_open = True

time.sleep(2)

print("\n模拟演示结束")

cabinet.running = False

cabinet.cleanup()

主程序入口

if name == "main":

实际硬件运行

cabinet = SmartShoeCabinet()

模拟演示

simulate_shoe_cabinet()

系统功能说明

  1. 核心功能
  • 自动湿度检测:使用DHT22传感器实时监测鞋柜内湿度

  • 智能烘干系统:当湿度超过65%时自动启动烘干风扇

  • 紫外线杀菌:烘干同时启动紫外线灯进行杀菌消毒

  • 夜间模式:晚上6点至次日早上8点自动工作

  • 安全保护:设置最大烘干时间(2小时)防止过度烘干

  1. 硬件组成

组件 型号/规格 功能

微控制器 树莓派4B 系统主控

温湿度传感器 DHT22 检测鞋柜内环境

紫外线灯 UVC LED 杀菌消毒

烘干风扇 5V直流风扇 加速水分蒸发

门磁开关 磁性传感器 检测鞋柜门状态

人体感应器 HC-SR501 检测人员接近

状态指示灯 RGB LED 系统状态指示

  1. 工作流程

graph TD

A[晚上回家放鞋] --> B[关门检测]

B --> C{湿度是否超标?}

C -->|是| D[启动烘干+紫外线杀菌]

C -->|否| E[保持待机]

D --> F{湿度是否达标?}

F -->|否| D

F -->|是| G[停止烘干]

G --> H[继续紫外线杀菌30分钟]

H --> I[杀菌完成]

I --> J[第二天早上取鞋]

J --> K[开门检测]

K --> L[停止所有功能]

  1. 软件架构

classDiagram

class SmartShoeCabinet {

-humidity: float

-temperature: float

-door_open: bool

-uv_active: bool

-fan_active: bool

-last_detection_time: datetime

-drying_start_time: datetime

-sterilization_start_time: datetime

-running: bool

+setup_hardware()

+read_sensor_data() tuple

+monitor_sensors()

+update_status_leds()

+start_drying()

+stop_drying()

+start_uv_sterilization()

+stop_uv_sterilization()

+check_night_mode() bool

+control_loop()

+cleanup()

}

class HardwareConfig {

+DHT_SENSOR: int

+DHT_PIN: int

+UV_LED_PIN: int

+FAN_PIN: int

+PIR_PIN: int

+DOOR_SWITCH_PIN: int

+STATUS_LED_GREEN: int

+STATUS_LED_RED: int

+HUMIDITY_THRESHOLD: int

+IDEAL_HUMIDITY: int

+UV_STERILIZATION_TIME: int

+MAX_DRYING_TIME: int

+NIGHT_MODE_START: int

+NIGHT_MODE_END: int

}

SmartShoeCabinet --> HardwareConfig : 使用配置

  1. 应用场景

家庭应用

  • 解决家庭成员脚气交叉感染问题

  • 梅雨季节防止鞋子发霉

  • 运动爱好者专用鞋柜

  • 儿童鞋柜卫生管理

公共场所

  • 健身房鞋柜

  • 游泳馆更衣柜

  • 酒店客房鞋柜

  • 学校宿舍鞋柜

  1. 技术优势

  2. 智能湿度控制:

  • 实时监测鞋柜内湿度变化

  • 自动启停烘干系统

  • 防止过度烘干损伤鞋子

  1. 双重防护机制:
  • 物理烘干去除水分

  • 紫外线杀灭真菌细菌

  1. 节能环保设计:
  • 仅在需要时启动设备

  • 夜间工作避开用电高峰

  • 低功耗传感器和控制器

  1. 安全可靠:
  • 紫外线工作时门锁检测

  • 人体感应自动关闭紫外线

  • 最大运行时间保护

  1. 扩展功能

  2. 手机APP控制:

伪代码示例

from flask import Flask, request

app = Flask(name)

@app.route('/api/cabinet/status', methods=['GET'])

def get_status():

return jsonify({

'humidity': cabinet.humidity,

'temperature': cabinet.temperature,

'uv_active': cabinet.uv_active,

'fan_active': cabinet.fan_active

})

@app.route('/api/cabinet/control', methods=['POST'])

def control_cabinet():

action = request.json.get('action')

if action == 'start_drying':

cabinet.start_drying()

elif action == 'stop_drying':

cabinet.stop_drying()

...其他控制命令

return jsonify({'status': 'success'})

  1. 数据分析与预测:
  • 记录历史湿度数据

  • 预测鞋子干燥所需时间

  • 优化烘干策略

  1. 多鞋柜管理系统:
  • 管理多个鞋柜单元

  • 分区控制不同鞋子

  • 家庭成员专属设置

安装与使用指南

硬件安装步骤

  1. 将DHT22传感器安装在鞋柜内部上方

  2. 在鞋柜顶部安装紫外线灯和烘干风扇

  3. 在门框上安装门磁开关

  4. 在外部安装状态指示灯

  5. 连接所有组件到树莓派GPIO接口

软件安装步骤

安装必要库

sudo apt-get update

sudo apt-get install python3-pip

pip3 install Adafruit_DHT RPi.GPIO

下载程序

git clone https://github.com/smart-shoe-cabinet.git

cd smart-shoe-cabinet

运行程序

python3 main.py

日常使用

  1. 晚上回家后将鞋子放入鞋柜并关好门

  2. 系统自动检测湿度并启动相应功能

  3. 第二天早上取出干燥无异味的鞋子

  4. 可通过手机APP查看状态或手动控制

常见问题解决

问题现象 可能原因 解决方法

湿度检测不准确 传感器位置不当 调整传感器位置到鞋柜中心

烘干效果差 风扇功率不足 更换更大功率风扇

紫外线灯不亮 线路连接问题 检查GPIO连接和电源

系统频繁重启 电源不稳定 使用稳压电源适配器

APP无法连接 网络配置问题 检查树莓派网络连接

这个智能鞋柜系统通过自动化控制解决了鞋子潮湿导致的脚气问题,结合了物联网技术和智能控制算法,为家庭和公共场所提供了卫生、便捷的鞋子存储解决方案。

我是编程小白,请大家多多指教,谢谢!

相关推荐
WJSKad12353 分钟前
果园树干识别与定位_faster-rcnn_x101-32x4d_fpn_1x_coco改进实践
python
深蓝电商API3 分钟前
Scrapy中间件实战:自定义请求头和代理池实现
python·scrapy·中间件
hui函数9 分钟前
Python系列Bug修复|如何解决 pip install 安装报错 invalid command ‘bdist_wheel’(缺少 wheel)问题
python·bug·pip
hui函数11 分钟前
Python系列Bug修复|如何解决 pip install -r requirements.txt 私有索引未设为 trusted-host 导致拒绝 问题
python·bug·pip
子午13 分钟前
【2026原创】动物识别系统~Python+深度学习+人工智能+模型训练+图像识别
人工智能·python·深度学习
o_insist18 分钟前
LangChain1.0 实现 PDF 文档向量检索全流程
人工智能·python·langchain
脑洞AI食验员23 分钟前
智能体来了:用异常与文件处理守住代码底线
人工智能·python
曲幽36 分钟前
FastAPI登录验证:用OAuth2与JWT构筑你的API安全防线
python·fastapi·web·jwt·token·oauth2
幻云201038 分钟前
Next.js指南:从入门到精通
开发语言·javascript·人工智能·python·架构
CCPC不拿奖不改名1 小时前
网络与API:从HTTP协议视角理解网络分层原理+面试习题
开发语言·网络·python·网络协议·学习·http·面试