本项目以STM32F103C8T6微控制器为核心构建起一套智能楼宇控制系统,目的是基于多模块协同工作方式实现环境参数实时监测、设备自动控制与远程管理等功能。系统集成温湿度传感器(DHT11)、烟雾传感器(MQ-2)、光敏电阻等环境传感器模块,结合OLED显示、ESP8266-01 WiFi通信及SU-03T离线语音模块,形成数据采集、阈值报警、交互控制与云端互联的综合解决方案。设计选用STM32F103C8T6为主控芯片,基于FreeRTOS实时操作系统实现多任务调度,采用PWM算法动态调节照明灯亮度与风扇转速,在通过Proteus仿真验证功能可行性后完成双层PCB布局优化与硬件集成。实际测试中OLED界面能实时显示环境参数,支持华为云平台远程监控与语音指令交互,响应时间短且控制精度高可满足智能楼宇自动化需求。
| Files | Last commit | Last update |
|---|---|---|
| 1 year ago | ||
| 1 year ago | ||
| 1 year ago | ||
| 2 years ago | ||
| 8 months ago |
[项目名称] - 集成语音感知与云平台的多任务智能楼宇控制系统
项目简介
本项目基于 FreeRTOS 实时操作系统,为嵌入式设备打造硬件监测与控制方案。通过多任务并行,实现按键、LED、OLED 显示、环境传感(MQ2、DHT11、光照)、电机、WiFi 等硬件功能,支持环境数据采集、设备状态控制与信息可视化,适用于物联网(IoT)节点、智能硬件原型开发场景。
功能概览
| 模块分类 | 功能说明 |
|---|---|
| 传感器监测 | DHT11 温湿度采集、MQ2 气体检测、光照传感器数据读取 |
| 设备控制 | LED 状态控制、电机 PWM 调速、 buzzer 报警(需扩展) |
| 交互与显示 | 按键输入、OLED 屏幕显示(菜单、传感器数据、系统状态) |
| 通信 | WiFi 连接(需适配具体协议,如 TCP/IP、MQTT) |
| 系统调度 | FreeRTOS 多任务管理,任务包含:传感器采集、设备控制、显示更新、WiFi 通信等 |
硬件支持
- 主控:适配 STM32 系列(需根据
HAL库或标准外设库调整,代码默认基于 STM32 外设) - 外设:
- 输入:按键、DHT11(温湿度)、MQ2(气体)、光照传感器
- 输出:LED、PWM 电机、OLED 显示屏、Buzzer(蜂鸣器)
- 通信:WiFi 模块(需适配具体驱动,如 ESP8266)
代码结构
[项目根目录]
├── Hardware/ # 硬件驱动层
│ ├── Key.c/h # 按键驱动(消抖、中断/轮询)
│ ├── LED.c/h # LED 控制(亮灭、闪烁)
│ ├── OLED.c/h # OLED 显示屏驱动(字符、图形显示)
│ ├── OLED_Data.c # OLED 字模数据(ASCII、自定义图形)
│ ├── Buzzer.c/h # 蜂鸣器驱动(PWM 或 GPIO 控制)
│ ├── MQ2.c/h # MQ2 气体传感器驱动(ADC 读取)
│ ├── DHT11.c/h # DHT11 温湿度驱动(时序控制)
│ ├── Timer.c/h # 定时器驱动(FreeRTOS 定时器或硬件定时器)
│ ├── Light_sensor.c/h# 光照传感器驱动(ADC 读取)
│ ├── PWM.c/h # PWM 驱动(电机调速、呼吸灯等)
│ ├── Motor.c/h # 电机控制(PWM 调速、正反转逻辑)
│ └── WiFi.c/h # WiFi 模块驱动(AT 指令或 SDK 适配)
├── Middlewares/FreeRT/ # FreeRTOS 实时操作系统(需自行添加内核源码)
├── HardwareTask/ # 任务实现层(FreeRTOS 任务封装)
│ ├── MenuTask.c/h # 菜单任务(OLED 交互、功能选择)
│ ├── Dht11Task.c/h # DHT11 数据采集任务
│ ├── Mq2Task.c/h # MQ2 数据采集任务
│ ├── LightTask.c/h # 光照传感器任务
│ ├── LedTask.c/h # LED 控制任务(响应按键、传感器事件)
│ ├── MotorTask.c/h # 电机控制任务(调速逻辑)
│ ├── RtcTask.c/h # RTC 时钟任务(可选,需扩展)
│ ├── WiFiTask.c/h # WiFi 通信任务(连接、数据上传)
│ └── UpdataTask.c/h # 数据汇总/上传任务(传感器数据整合、显示更新)
└── CMSIS/ # CMSIS 标准层(内核、外设抽象,由 STM32 库提供)
快速上手
环境准备
- 开发工具:安装 Keil MDK(或 STM32CubeIDE),配置对应 STM32 芯片包。
- 依赖库:
- 添加 FreeRTOS 源码 到
Middlewares/FreeRT/(需匹配 STM32 内核,如FreeRTOSv202212.00)。 - 确保 STM32 HAL 库 或 标准外设库 已正确配置(代码中
HAL_XXX函数需适配)。
- 添加 FreeRTOS 源码 到
编译与下载
- 工程配置:
- 在 Keil 中新建工程,添加
Hardware/、HardwareTask/下的.c文件,配置头文件路径(包含Hardware/、CMSIS/、Middlewares/FreeRT/)。 - 配置 FreeRTOS 内核(
FreeRTOSConfig.h),启用定时器、任务调度等功能。
- 在 Keil 中新建工程,添加
- 编译下载:点击编译,通过 ST-Link/J-Link 下载程序到开发板。
功能验证
程序启动后,FreeRTOS 自动创建任务:
- OLED 显示:查看菜单、传感器实时数据(温湿度、气体浓度、光照)。
- 按键交互:通过按键切换 LED 状态、电机模式、WiFi 连接(需适配)。
- 传感器触发:改变环境(如用手捂住 DHT11、遮挡光照传感器),观察 OLED 数据更新。
自定义扩展
1. 新增传感器/设备
- 驱动层:在
Hardware/下新建.c/h文件(如NewSensor.c/h),实现初始化、数据读取函数。 - 任务层:在
HardwareTask/新建任务文件(如NewSensorTask.c),通过 FreeRTOS 任务周期性采集数据。
2. WiFi 功能完善
- 在
WiFiTask.c中扩展:- 连接 WiFi 热点(AT 指令或 SDK 函数)。
- 实现 MQTT 协议(如接入物联网平台:阿里云 IoT、ThingsBoard)。
- 上传传感器数据:调用
UpdataTask.c中的数据汇总函数,封装为 JSON 格式发送。
3. UI 交互优化
- 在
MenuTask.c中扩展 OLED 显示逻辑:- 添加图形化界面(如柱状图显示传感器数据)。
- 实现多级菜单、参数配置(如电机速度阈值、WiFi 配置)。
开源协议
本项目采用 MIT 开源协议,允许自由使用、修改、分发,但需保留原作者版权声明(见 LICENSE 文件)。
演示视频
贡献指南
欢迎提交 PR 完善代码:
- 修复 Bug:明确描述问题场景,提交补丁。
- 新增功能:按代码结构扩展驱动/任务,附带说明文档。
- 优化性能:精简任务调度、降低资源占用(如调整 FreeRTOS 任务优先级)。
问题反馈
若遇到以下问题,可通过 Gitcode Issues 反馈:
- 硬件驱动兼容性问题(如不同 STM32 型号适配)。
- FreeRTOS 任务冲突、调度异常。
- 功能需求建议(如新增传感器支持、通信协议扩展)。
Star ⭐ 支持:如果本项目对你的嵌入式开发有帮助,欢迎点亮 Star 支持开源!
最后更新:2025-07-21
作者:[小程同学>o]
仓库地址:[https://gitcode.com/xiaocheng/gitcode_knowledge]
Introduction
本项目以STM32F103C8T6微控制器为核心构建起一套智能楼宇控制系统,目的是基于多模块协同工作方式实现环境参数实时监测、设备自动控制与远程管理等功能。系统集成温湿度传感器(DHT11)、烟雾传感器(MQ-2)、光敏电阻等环境传感器模块,结合OLED显示、ESP8266-01 WiFi通信及SU-03T离线语音模块,形成数据采集、阈值报警、交互控制与云端互联的综合解决方案。设计选用STM32F103C8T6为主控芯片,基于FreeRTOS实时操作系统实现多任务调度,采用PWM算法动态调节照明灯亮度与风扇转速,在通过Proteus仿真验证功能可行性后完成双层PCB布局优化与硬件集成。实际测试中OLED界面能实时显示环境参数,支持华为云平台远程监控与语音指令交互,响应时间短且控制精度高可满足智能楼宇自动化需求。
https://blog.csdn.net/weixin_46281529/article/details/149289084?spm=1011.2124.3001.6209Customize your domain