# smarthome **Repository Path**: cpbkbh/smarthome ## Basic Information - **Project Name**: smarthome - **Description**: 专注于智能家居领域的开源项目,提供全面的设备控制与管理方案,支持多种协议及设备接入,旨在打造智能、便捷、舒适的家居环境。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-23 - **Last Updated**: 2025-08-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 智能家居系统 ## 项目功能 这是一个基于STM32和FreeRTOS的智能家项目,主要功能包括: - 温湿度监测 (DHT11) - OLED显示控制 - 持续运行的任务管理 - 按键输入处理 - 超声波距离测量 (SR04) - Wi-Fi连接 (ESP8266) - MQTT通信 ## 目录结构 ``` . ├── Drivers/ # 驱动程序 │ ├── BSP/ # 板级支持包 │ │ ├── DHT11/ # DHT11传感器驱动 │ │ ├── FreeRTOS_Test/ # FreeRTOS测试相关驱动 │ │ ├── KEY/ # 持续按键检测驱动 │ │ ├── SR04/ # 超声波传感器驱动 │ │ └── WIFI_ESP8266/ # ESP8266 Wi-Fi模块驱动 │ └── led/ # LED驱动 │ └── oled/ # OLED显示驱动 ├── Middlewares/ # 中间件 │ ├── Cjson/ # cJSON JSON解析库 │ ├── easylogger/ # 日志记录模块 │ ├── flexible_button/ # 按键处理模块 │ └── MQTT/ # MQTT通信协议实现 ├── Output/ # 编译输出文件 └── Users/ # 用户代码 ``` ## 编译输出 - 生成的可执行文件: `stm32f103.axf` - 生成的HEX文件: `stm32f103.hex` - 编译日志文件: `stm32f103.build_log.htm` - 映射文件: `stm32f103.map` - 链接脚本: `stm32f103.sct` ## 如何使用 1. 硬件准备: - STM32F103xB开发板 - DHT11温湿度传感器 - ESP8266 Wi-Fi模块 - SR04超声波传感器 - OLED显示屏 2. 软件配置: - 在`Users/FreeRTOSConfig.h`中配置FreeRTOS参数 - 在`Drivers/BSP/FreeRTOS_Test/freertos_test.c`中配置Wi-Fi连接参数 - 在`Middlewares/MQTT/MQTT.c`中配置MQTT服务器信息 3. 初始化系统: ```c #include "stm32f1xx_hal.h" #include "FreeRTOS.h" int main(void) { HAL_Init(); SystemCoreClockUpdate(); system_init(); freertos_test(); // 启动系统任务 while(1); } ``` 4. 传感器数据获取: ```c uint8_t temperature, humidity; DHT11_GetData(&temperature, &humidity); ``` 5. MQTT通信: ```c mqtt_login_init("your_product_key", "your_device_name", "your_device_secret"); mqtt_connect("client_id", "username", "password"); mqtt_subscribe_topic("topic", 1, 1); mqtt_publish_data("topic", "message", 1); ``` 6. 距离测量: ```c SR04_Start(); // 启动超声波测量 float distance = SR04_distance(); // 获取测量距离 ``` 7. 显示控制: ```c OLED_Init(); // 初始化OLED OLED_PrintString(0, 0, "Hello World", &font16x16, OLED_COLOR_WHITE); // 显示字符串 ``` 8. 按键处理: ```c user_button_init(); // 按键初始化 button_scan(NULL); // 挂起按键扫描任务 ``` ## 依赖 - STM32F1xx HAL库 - FreeRTOS实时操作系统 - cJSON JSON解析库 - EasyLogger日志系统 - flexible_button按键处理库 ## 许可证 该项目使用MIT许可证。有关详细信息,请参阅仓库中的LICENSE文件。 ## 贡献 欢迎提交Pull Request。在贡献前,请确保: 1. 保持代码风格一致 2. 添加充分的注释 3. 更新相关文档 4. 测试新添加的功能 ## 作者 该项目由cpbkbh开发。