# smarthome **Repository Path**: itwuli/smarthome ## Basic Information - **Project Name**: smarthome - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-09 - **Last Updated**: 2026-03-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 智能家居控制系统 (Smart Home Control System) 基于 STM32F103 微控制器和 FreeRTOS 实时操作系统的智能家居控制系统。 ## 项目简介 本项目是一个功能完善的智能家居控制系统,采用 STM32F103C8T6 作为主控芯片,运行 FreeRTOS 实时操作系统,支持多种传感器数据采集和显示。 ## 硬件配置 - **主控芯片**: STM32F103C8T6 (ARM Cortex-M3) - **显示屏**: OLED 显示屏 (I2C 接口) - **传感器**: - DHT11 - 温湿度传感器 - MPU6050 - 六轴加速度计/陀螺仪 - 光敏传感器 (Light Sensor) - 红外传感器 (IR Sensor) - **执行器**: 蜂鸣器 (Buzzer) - **通信接口**: UART (USART1), I2C (I2C1, I2C2) ## 软件 操作系统 架构 ###- FreeRTOS 实时操作系统 - 两个主要任务: - `SensorTask` - 传感器数据采集任务 - `ComuniationTask` - 通信任务 ### 驱动层 (Drivers/BSP) | 驱动文件 | 功能说明 | |---------|---------| | `Buzzer.c` | 蜂鸣器控制 | | `DHT11.c` | 温湿度传感器驱动 | | `IRSensor.c` | 红外传感器驱动 | | `LightSensor.c` | 光敏传感器驱动 | | `MPU6050.c` | 六轴传感器驱动 (加速度计/陀螺仪) | | `OLED.c` | OLED 显示屏驱动 | ## 功能特性 1. **环境监测** - 实时读取 DHT11 温湿度数据 - 光照强度检测 - 红外感应检测 2. **运动检测** - MPU6050 加速度数据采集 - 角速度数据采集 - 姿态角计算 (Roll, Pitch, Yaw) 3. **人机交互** - OLED 显示屏实时显示数据 - 蜂鸣器声音提示/报警 4. **通信功能** - UART 串口通信 ## 目录结构 ``` smarthome/ ├── Core/ │ ├── Inc/ # 头文件 │ │ ├── main.h │ │ ├── gpio.h │ │ ├── i2c.h │ │ ├── usart.h │ │ └── stm32f1xx_hal_conf.h │ └── Src/ # 源文件 │ ├── main.c │ ├── freertos.c # FreeRTOS 任务 │ ├── gpio.c │ ├── i2c.c │ └── usart.c ├── Drivers/ │ ├── BSP/ # 板级驱动 │ │ ├── Inc/ │ │ └── Src/ │ ├── CMSIS/ # ARM CMSIS 驱动 │ └── STM32F1xx_HAL_Driver/ # STM32 HAL 库 ├── Middlewares/ │ └── Third_Party/ │ └── FreeRTOS/ # FreeRTOS 源码 └── MDK-ARM/ # Keil MDK 工程文件 ``` ## 开发环境 - **IDE**: Keil MDK-ARM - **编译工具**: ARM Compiler - **框架**: STM32Cube HAL - **RTOS**: FreeRTOS V10 ## 使用说明 ### 编译项目 1. 使用 Keil MDK 打开 `MDK-ARM/smarthome.uvprojx` 文件 2. 选择目标芯片 STM32F103C8 3. 编译项目 (Build) ### 烧录 1. 通过 ST-Link 或其他编程器连接开发板 2. 使用 Keil 或其他工具烧录 `MDK-ARM/smarthome.hex` ### 调试 - 通过 UART1 (波特率默认) 查看调试信息 - 使用 ST-Link 进行在线调试 ## 模块 API ### 蜂鸣器 (Buzzer) ```c void Buzzer_Init(void); // 初始化 void Buzzer_On(void); // 打开蜂鸣器 void Buzzer_Off(void); // 关闭蜂鸣器 void Buzzer_Toggle(void); // 切换状态 void Buzzer_Beep(uint16_t times); // 蜂鸣指定次数 ``` ### DHT11 温湿度传感器 ```c void DHT11_Init(void); // 初始化 uint8_t DHT11_Read_Data(DHT11_Data_TypeDef *data); // 读取数据 ``` ### MPU6050 六轴传感器 ```c void MPU6050_Init(void); // 初始化 void MPU6050_Read_Accel(void); // 读取加速度 void MPU6050_Read_Gyro(void); // 读取角速度 void MPU6050_Read_Result(void); // 读取并计算姿态 ``` ### OLED 显示屏 ```c void OLED_Init(void); // 初始化 void OLED_Clear(void); // 清屏 void OLED_ShowString(uint8_t Line, uint8_t Column, char *String); // 显示字符串 void OLED_ShowNum(uint8_t Line, uint8_t Column, uint32_t Number, uint8_t Length); // 显示数字 ``` ## 注意事项 1. 确保所有传感器正确连接 2. I2C1 用于 OLED 显示屏 3. I2C2 用于 MPU6050 传感器 4. 请根据实际硬件连接调整引脚配置 ## 许可证 本项目仅供学习和研究使用。