Skip to content

Genius0603/smart-humidifier-freertos

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Smart Humidifier — 基于 FreeRTOS 的智能加湿器系统

东莞城市学院 · 人工智能学院 · 计算机科学与技术 2022 级
作者:张彤 · 学号:202235010246
指导教师:章逸潇、甘晓楠
毕业设计时间:2025.11 — 2026.05


📖 项目简介

本项目设计并实现了一款基于 FreeRTOS 实时操作系统的智能加湿器系统,涵盖嵌入式固件Android 蓝牙控制 App3D 打印机械外壳三个维度的完整工程实践。

针对市售加湿器功能单一、缺乏实时监测、无远程交互能力等不足,本系统引入 FreeRTOS 多任务调度框架,实现了温湿度自动采集与闭环加湿控制,同时支持蓝牙、语音、物理按键三种控制方式,并集成紫外线定时消毒功能。


✨ 功能特性

功能 说明
🌡️ 温湿度实时监测 DHT11 采集数据,OLED 实时显示温度与湿度
💧 自动加湿控制 湿度低于 40%RH 时自动启动,内置防缺水保护
☣️ 紫外线消毒 手动触发 / 每 8 小时自动消毒,单次持续 5 秒后自动关闭
📱 蓝牙远程控制 Android App 通过 SPP 协议发送指令
🔊 语音控制 语音识别模块接收自然语言指令
🔘 物理按键控制 本地按键操作,无需手机
💡 氛围灯 支持开关控制的氛围照明
⚙️ 多任务并发 FreeRTOS 抢占式调度,各功能互不干扰

🏗️ 系统架构

分层架构

层级 组成
应用层 控制任务、通信任务、自动加湿控制、紫外消毒控制、蓝牙/语音控制
驱动层 DHT11.c、OLED.c、usart.c、gpio.c、ControlTask.c
FreeRTOS 层 抢占式任务调度、消息队列、3 个软件定时器、CMSIS-RTOS V2 接口
硬件层 STM32F103C8T6、DHT11、OLED、JDY-31 蓝牙、语音模块、雾化片、紫外灯、氛围灯、物理按键

软件核心设计:生产者 - 消费者模式

蓝牙串口中断  ──┐
语音串口中断  ──┼──► 消息队列 (controlCommandQueue) ──► 控制任务(执行硬件操作)
物理按键扫描  ──┘         ▲
软件定时器    ────────────┘
  • 通信任务(较高优先级):采集蓝牙、语音、按键输入,统一翻译为命令编号放入队列
  • 控制任务(普通优先级):从队列取出命令执行对应操作;队列空闲时自动读取温湿度并判断是否加湿
  • 软件定时器:加湿器超时自动关闭 / 紫外灯超时自动关闭 / 每 8 小时周期消毒

🔧 硬件组成

模块 型号 / 规格 通信接口 功能说明
主控芯片 STM32F103C8T6 72MHz Cortex-M3,系统核心
温湿度传感器 DHT11 GPIO 单总线 精度 ±5%RH,采集环境数据
显示模块 0.96 寸 OLED I²C 实时显示温度、湿度、运行状态
蓝牙模块 JDY-31 USART1 经典蓝牙 SPP,与 Android App 通信
语音模块 USART3 识别语音指令并转发给主控
雾化执行 超声波雾化片 × 2 GPIO (PA1) 压电陶瓷高频振动产生微米级水雾
消毒模块 紫外线 LED GPIO 定时自动消毒,防止水箱细菌滋生
机械外壳 FDM 3D 打印 SolidWorks 建模,储水罐 + 盖体

📁 目录结构

smart-humidifier-freertos/
│
├── HumidifierV3/                        # STM32 嵌入式固件(STM32CubeIDE 工程)
│   └── Core/
│       ├── Inc/
│       │   ├── main.h                   # 引脚宏定义
│       │   ├── ControlTask.h            # 命令枚举 & 外部声明
│       │   ├── CommunicationtTask.h
│       │   ├── DHT11.h
│       │   ├── OLED.h
│       │   └── FreeRTOSConfig.h         # FreeRTOS 配置
│       └── Src/
│           ├── freertos.c               # ⭐ 任务、队列、定时器初始化入口
│           ├── ControlTask.c            # ⭐ 控制任务:加湿 / 消毒 / OLED 显示
│           ├── CommunicationtTask.c     # ⭐ 通信任务:蓝牙 / 语音 / 按键
│           ├── DHT11.c                  # 温湿度传感器驱动
│           ├── OLED.c                   # OLED 显示驱动
│           ├── usart.c                  # 串口配置
│           ├── gpio.c                   # GPIO 配置
│           └── main.c                   # 系统入口
│
└── HumidifierControl/                   # Android 蓝牙控制 App(Android Studio 工程)
    └── app/src/main/
        ├── AndroidManifest.xml
        └── java/com/example/humidifiercontrol/
            ├── MainActivity.java        # ⭐ 主界面:蓝牙连接 & 指令发送
            ├── BluetoothViewModel.java  # 状态管理(LiveData + ViewModel)
            └── BluetoothDeviceAdapter.java

🚀 快速开始

固件编译与烧录

环境要求: STM32CubeIDE 1.13+、ST-Link V2 调试器

# 1. 克隆仓库
# git clone https://github.com/Genius0603/smart-humidifier-freertos.git

# 2. 用 STM32CubeIDE 打开 HumidifierV3/ 工程
# File → Open Projects from File System → 选择 HumidifierV3 目录

# 3. 编译并烧录
# Run → Run As → STM32 Cortex-M C/C++ Application

Android App 编译

环境要求: Android Studio Hedgehog+、Android SDK API 23+、手机需提前配对 JDY-31 蓝牙模块

# 1. 用 Android Studio 打开 HumidifierControl/ 工程
# 2. 等待 Gradle 同步完成
# 3. 连接手机,点击 Run 安装 App

App 使用流程

开启手机蓝牙,并在系统设置中与 JDY-31 完成配对
→ 打开 App,点击「扫描设备」
→ 选择设备,连接成功后状态点变绿
→ 点击对应按钮发送控制指令:
    加湿器按钮 → 发送字符 '1'
    消毒灯按钮 → 发送字符 '2'
    氛围灯按钮 → 发送字符 '3'

⚙️ 关键参数配置

以下参数在 HumidifierV3/Core/Src/ControlTask.c 中可直接修改:

#define HUMIDITY_THRESHOLD     40                    // 自动加湿触发湿度阈值(%RH)
#define HUMIDITY_OPENING_TIME  30000                 // 加湿器单次开启时长(ms)
#define UVLED_OPENING_TIME     5000                  // 紫外灯单次开启时长(ms)
#define UVLED_PERIODIC_TIME    (8 * 60 * 60 * 1000) // 自动消毒周期(ms)

🛠️ 开发环境

工具 版本 用途
STM32CubeIDE 1.13+ 嵌入式固件开发
HAL 库 STM32F1xx 硬件抽象层
FreeRTOS 10.x(CMSIS-RTOS V2) 实时操作系统
Android Studio Hedgehog+ Android App 开发
SolidWorks 2021 机械外壳建模

📄 License

本项目基于 MIT License 开源,允许自由使用、修改与分发,保留原始署名即可。


🙏 致谢

感谢指导教师章逸潇老师和甘晓楠老师在整个毕业设计过程中给予的悉心指导与支持。

About

基于FreeRTOS的智能加湿器系统,包含STM32嵌入式固件与Android蓝牙控制App

Topics

Resources

License

Stars

2 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages