# 风车灯 **Repository Path**: alfalee_admin/windmill-light ## Basic Information - **Project Name**: 风车灯 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 4 - **Created**: 2026-03-05 - **Last Updated**: 2026-03-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 智能风车灯控制系统 - 项目整体介绍 ## 1. 项目概述 智能风车灯控制系统是一个基于 ESP32-C3 微控制器和 Uniapp 框架开发的智能设备控制系统。该系统通过蓝牙和 WiFi 实现对风车和灯光的远程控制,提供了直观的用户界面和丰富的控制功能。 ### 1.1 项目目标 - **实现智能控制**:通过手机 App 远程控制风车和灯光 - **提供多方式控制**:支持蓝牙、WiFi 和本地控制 - **增强用户体验**:提供直观的可视化界面 - **确保可靠性**:稳定的通信和状态同步 - **便于扩展**:模块化设计,易于添加新功能 ### 1.2 应用场景 - **家庭装饰**:作为客厅、阳台等场所的装饰设备 - **节日氛围**:在节日期间营造特殊氛围 - **商业展示**:在商场、店铺等场所作为展示设备 - **教育教学**:作为物联网和嵌入式系统学习的示例项目 ## 2. 系统架构 ### 2.1 整体架构 ``` +-------------------+ | | | Uniapp 移动应用 | | (Android/iOS) | | | +-------------------+ | | 蓝牙 BLE 通信 / WiFi AP 通信 | +-------------------+ | | | ESP32-C3 控制器 | | | +-------------------+ | | 控制信号 | +-------------------+ | | | 硬件执行层 | | - 直流电机(风车) | | - LED 灯 | | - 旋转编码器 | | - 按键 | | | +-------------------+ ``` ### 2.2 组件说明 #### 2.2.1 控制层 | 组件 | 功能 | 技术实现 | |------|------|----------| | Uniapp 移动应用 | 提供用户界面,发送控制命令 | Vue.js, Uniapp, BLE API | | ESP32-C3 控制器 | 处理控制命令,驱动硬件,发送状态更新 | C++, Arduino 框架, BLE 库, WiFi 库 | #### 2.2.2 执行层 | 组件 | 功能 | 技术实现 | |------|------|----------| | 直流电机 | 驱动风车旋转 | L298N 电机驱动 | | LED 灯 | 提供照明效果 | L298N 电机驱动 | | 旋转编码器 | 本地调节转速和亮度 | 脉冲信号检测 | | 按键 | 本地控制开关 | 数字输入检测 | | LED 指示灯 | 指示系统状态 | 数字输出控制 | ### 2.3 通信架构 | 通信方式 | 协议 | 适用场景 | 特点 | |----------|------|----------|------| | 蓝牙 BLE | 自定义 JSON 协议 | 近距离控制(≤10m) | 低功耗、无需网络、实时性好 | | WiFi AP | HTTP + WebSocket | 局域网控制(≤100m) | 覆盖范围广、支持多设备、可通过Web界面控制 | | 本地控制 | 硬件中断 | 直接操作 | 响应速度快、无需网络 | ## 3. 核心功能 ### 3.1 风车控制 - **开关控制**:通过 App 或本地按键控制风车的开启和关闭 - **转速调节**:支持 1-100% 的转速调节,通过旋转编码器或 App 滑块控制 - **方向切换**:支持顺时针和逆时针旋转方向切换 - **启动优化**:采用启动脉冲技术,确保电机在低转速下也能稳定启动 ### 3.2 灯光控制 - **开关控制**:通过 App 或本地按键控制灯光的开启和关闭 - **亮度调节**:支持 1-100% 的亮度调节,通过旋转编码器或 App 滑块控制 - **状态指示**:灯光状态实时反馈到 App 界面 ### 3.3 设备管理 - **设备连接**:支持蓝牙设备的搜索、连接和断开 - **自动重连**:蓝牙断开后自动尝试重连 - **状态同步**:所有控制方式的状态实时同步 - **运行时间管理**:可设置最大运行时间,超时自动关闭设备 ### 3.4 用户界面 - **可视化控制**:风车和灯光状态实时可视化显示 - **动画效果**:平滑的风车旋转动画和灯光亮度效果 - **响应式设计**:适配不同屏幕尺寸的移动设备 - **直观操作**:简洁明了的控制界面,易于操作 ## 4. 技术栈 ### 4.1 硬件技术 | 组件 | 技术规格 | 说明 | |------|----------|------| | ESP32-C3 | 32-bit RISC-V, 40MHz, 400KB SRAM, 384KB ROM | 低功耗、支持 WiFi 和蓝牙 | | L298N | 双 H 桥电机驱动 | 驱动直流电机和控制灯光 | | 直流电机 | 6V, 低转速 | 适合风车应用 | | LED 灯 | 高亮度 LED | 提供良好的照明效果 | | 旋转编码器 | 18 脉冲/圈 | 用于本地调节控制 | | 按键 | 轻触按键 | 用于本地开关控制 | ### 4.2 软件技术 #### 4.2.1 ESP32-C3 端 | 技术 | 版本/说明 | 用途 | |------|------------|------| | C++ | C++11 | 主要开发语言 | | Arduino 框架 | ESP32 版本 | 硬件抽象和驱动 | | BLE Arduino | 最新版本 | 蓝牙 BLE 通信 | | WiFi 库 | ESP32 内置 | WiFi AP 模式 | | WebSockets | 最新版本 | WebSocket 通信 | | ArduinoJson | 6.0+ | JSON 数据解析 | #### 4.2.2 Uniapp 端 | 技术 | 版本/说明 | 用途 | |------|------------|------| | Vue.js | 2.0+ | 前端框架 | | Uniapp | 最新版本 | 跨平台开发 | | JavaScript | ES6+ | 开发语言 | | CSS3 | 最新标准 | 样式设计 | | BLE API | 平台提供 | 蓝牙通信 | | WebSocket API | 平台提供 | WebSocket 通信 | ### 4.3 开发工具 | 工具 | 用途 | 平台 | |------|------|------| | PlatformIO IDE | ESP32-C3 开发 | Windows/MacOS/Linux | | Arduino IDE | ESP32-C3 开发 | Windows/MacOS/Linux | | HBuilderX | Uniapp 开发 | Windows/MacOS | | Git | 版本控制 | Windows/MacOS/Linux | ## 5. 项目结构 ### 5.1 目录结构 ``` WL/ ├── ESP32-C3/ # ESP32-C3 控制器代码 │ ├── src/ # 源代码 │ │ ├── Hardware/ # 硬件相关代码 │ │ │ ├── Communication/ # 通信模块 │ │ │ ├── Core/ # 核心控制模块 │ │ │ └── Input/ # 输入处理模块 │ │ ├── Log/ # 日志系统 │ │ ├── UserHandlers.cpp # 用户事件处理 │ │ └── main.cpp # 主程序 │ ├── platformio.ini # PlatformIO 配置 │ ├── README.md # ESP32-C3 项目说明 │ └── USAGE.md # ESP32-C3 使用文档 ├── Uniapp/ # Uniapp 移动应用代码 │ ├── components/ # 组件 │ ├── pages/ # 页面 │ ├── static/ # 静态资源 │ ├── unpackage/ # 打包输出 │ ├── App.vue # 应用入口组件 │ ├── main.js # 应用入口文件 │ ├── manifest.json # 应用配置 │ ├── pages.json # 页面配置 │ ├── README.md # Uniapp 项目说明 │ └── USAGE.md # Uniapp 使用文档 ├── COMMUNICATION_PROTOCOL.md # 通信协议文档 └── README.md # 项目整体介绍 ``` ### 5.2 核心文件说明 #### ESP32-C3 端 | 文件 | 功能 | 位置 | |------|------|------| | main.cpp | 主程序,初始化和协调各模块 | ESP32-C3/src/main.cpp | | WindmillLight.cpp | 风车和灯光核心控制 | ESP32-C3/src/Hardware/Core/WindmillLight.cpp | | BLEControl.cpp | 蓝牙通信控制 | ESP32-C3/src/Hardware/Communication/BLEControl.cpp | | APControl.cpp | WiFi AP 控制 | ESP32-C3/src/Hardware/Communication/APControl.cpp | | RotaryEncoderManager.cpp | 旋转编码器管理 | ESP32-C3/src/Hardware/Input/RotaryEncoderManager.cpp | | ButtonManager.cpp | 按键管理 | ESP32-C3/src/Hardware/Input/ButtonManager.cpp | #### Uniapp 端 | 文件 | 功能 | 位置 | |------|------|------| | device-control.vue | 主控制页面 | Uniapp/pages/device-control/device-control.vue | | device-connection.vue | 设备连接页面 | Uniapp/pages/device-connection/device-connection.vue | | device-settings.vue | 设备设置页面 | Uniapp/pages/device-settings/device-settings.vue | | WindmillVisual.vue | 风车可视化组件 | Uniapp/components/WindmillVisual.vue | | App.vue | 应用入口组件 | Uniapp/App.vue | | main.js | 应用初始化 | Uniapp/main.js | ## 6. 安装和设置 ### 6.1 硬件安装 1. **组件准备**: - 按照硬件清单准备所有组件 - 确保所有组件都能正常工作 2. **硬件连接**: - 按照硬件连接图连接所有组件 - 确保引脚连接正确 - 检查电源连接,确保电压和电流符合要求 3. **测试硬件**: - 给系统通电 - 检查 LED 指示灯是否正常 - 测试本地控制功能是否正常 ### 6.2 软件安装 #### ESP32-C3 控制器 1. **开发环境设置**: - 安装 PlatformIO IDE 或 Arduino IDE - 配置 ESP32 开发环境 2. **代码编译和烧录**: - 克隆项目代码 - 编译代码 - 烧录到 ESP32-C3 开发板 #### Uniapp 移动应用 1. **开发环境设置**: - 安装 HBuilderX - 配置 Uniapp 开发环境 2. **应用安装**: - **Android**:直接安装 APK 文件或通过应用商店安装 - **iOS**:通过 App Store 安装或 TestFlight 测试 ### 6.3 初始设置 1. **设备连接**: - 打开移动应用 - 开启手机蓝牙 - 搜索并连接 "WindmillLight" 设备 2. **基本配置**: - 设置最大运行时间 - 测试风车和灯光控制 - 熟悉应用界面和功能 ## 7. 使用指南 ### 7.1 基本使用 #### 7.1.1 通过移动应用控制 1. **连接设备**: - 打开应用,确保蓝牙已开启 - 连接到 "WindmillLight" 设备 2. **控制风车**: - 在 "风车" 标签页,使用开关控制风车 - 使用滑块调节转速 - 点击方向按钮切换旋转方向 3. **控制灯光**: - 在 "灯光" 标签页,使用开关控制灯光 - 使用滑块调节亮度 4. **设备设置**: - 点击菜单按钮,选择 "设备设置" - 设置最大运行时间 - 切换 AP 模式 #### 7.1.2 通过本地控制 1. **按键控制**: - 按键 1:控制灯光开关 - 按键 2:控制风车开关 - 双按键长按:切换 AP 模式 2. **旋转编码器控制**: - 编码器 1:控制灯光亮度 - 编码器 2:控制风车转速 #### 7.1.3 通过 WiFi AP 控制 1. **启动 AP 模式**: - 长按双按键 3 秒,或通过 App 开启 AP 模式 2. **连接 WiFi**: - 连接到 "WindmillLight" WiFi 网络,密码:"12345678" 3. **访问 Web 界面**: - 打开浏览器,访问 http://192.168.4.1 - 通过 Web 界面控制设备 ### 7.2 高级使用 #### 7.2.1 场景设置 1. **创建场景**: - 根据不同场景设置不同的风车转速和灯光亮度 - 例如:浪漫场景(低转速、暖色调灯光)、派对场景(高转速、彩色灯光) 2. **定时控制**: - 设置最大运行时间,让设备在特定时间后自动关闭 - 适合在睡前使用,避免设备整夜运行 #### 7.2.2 多设备控制 1. **设备分组**: - 将多个智能风车设备分组控制 - 实现同步效果 2. **网络集成**: - 将设备集成到智能家居系统 - 通过语音助手控制设备 ## 8. 故障排除 ### 8.1 常见问题及解决方案 | 问题 | 可能原因 | 解决方案 | |------|----------|----------| | 设备无法启动 | 电源问题 | 检查电源连接和电压 | | 无法搜索到设备 | 蓝牙未开启或设备不在范围内 | 开启蓝牙并靠近设备 | | 连接设备失败 | 设备忙或蓝牙信号弱 | 重试连接或靠近设备 | | 控制命令无响应 | 连接不稳定或设备故障 | 重新连接设备或检查硬件 | | 电机不转 | 电机接线错误或电源不足 | 检查电机接线和电源 | | 灯光不亮 | LED 接线错误或损坏 | 检查 LED 接线和更换 LED | | 旋转编码器无响应 | 接线错误或编码器损坏 | 检查编码器接线和更换编码器 | ### 8.2 诊断工具 1. **串口调试**: - 通过串口监视器查看设备日志 - 波特率:115200 2. **应用日志**: - 在移动应用中查看日志 - 分析连接和控制过程中的错误 3. **网络工具**: - 使用网络调试工具测试 WiFi AP 连接 - 检查 HTTP 和 WebSocket 通信 ## 9. 扩展和定制 ### 9.1 功能扩展 1. **添加传感器**: - 温度传感器:根据温度自动调整设备状态 - 光线传感器:根据环境光线自动调整灯光亮度 - 人体红外传感器:检测人体存在,自动开启/关闭设备 2. **添加新功能**: - 定时功能:设置设备在特定时间开启/关闭 - 场景模式:预设多种场景模式 - 音乐同步:根据音乐节奏调整风车转速和灯光效果 ### 9.2 硬件定制 1. **外观设计**: - 设计个性化的风车叶片 - 选择不同颜色和形状的 LED 灯 - 设计美观的外壳 2. **性能优化**: - 使用更高效的电机和 LED - 优化电源管理,延长电池寿命 - 增强信号强度,扩大控制范围 ### 9.3 软件定制 1. **界面定制**: - 修改移动应用的界面风格 - 添加个性化的主题和动画 - 调整控制逻辑和交互方式 2. **功能定制**: - 添加新的控制选项 - 实现特殊的控制逻辑 - 集成第三方服务和平台 ## 10. 项目维护 ### 10.1 版本管理 | 版本 | 发布日期 | 主要更新 | |------|----------|----------| | v1.0.0 | 2024-02-12 | 初始版本
- 实现基本的风车和灯光控制
- 支持蓝牙和 WiFi AP 通信
- 提供移动应用和 Web 界面 | ### 10.2 升级指南 1. **硬件升级**: - 定期检查硬件状态 - 更换磨损的部件 - 升级到更先进的组件 2. **软件升级**: - 定期更新移动应用到最新版本 - 更新 ESP32-C3 固件 - 应用安全补丁和 bug 修复 ### 10.3 安全维护 1. **网络安全**: - 定期更改 WiFi AP 密码 - 确保蓝牙通信安全 - 避免在不安全的网络环境中使用 2. **设备安全**: - 避免设备过载运行 - 确保设备散热良好 - 定期检查设备是否有异常发热 ## 11. 贡献指南 ### 11.1 如何贡献 1. **报告问题**: - 在 GitHub 上提交 Issue - 详细描述问题和复现步骤 - 提供相关日志和截图 2. **提交代码**: - Fork 项目仓库 - 创建新分支 - 提交代码更改 - 创建 Pull Request 3. **文档贡献**: - 改进现有文档 - 添加新的文档内容 - 翻译文档到其他语言 ### 11.2 代码规范 1. **ESP32-C3 端**: - 遵循 C++ 编码规范 - 使用有意义的变量和函数命名 - 添加适当的注释 - 保持代码简洁和可读性 2. **Uniapp 端**: - 遵循 Vue.js 编码规范 - 使用 ES6+ 语法 - 组件化开发 - 保持代码风格一致 ### 11.3 测试指南 1. **单元测试**: - 为核心功能编写单元测试 - 确保代码质量 2. **集成测试**: - 测试组件之间的集成 - 确保系统整体功能正常 3. **用户测试**: - 收集用户反馈 - 改进用户体验 ## 12. 许可证和法律信息 ### 12.1 许可证 本项目采用 MIT 许可证。详见 LICENSE 文件。 ### 12.2 免责声明 1. **使用责任**: - 本项目仅供学习和参考使用 - 使用本项目时,请遵守相关法律法规 - 因使用本项目造成的任何损失,项目维护者不承担责任 2. **知识产权**: - 项目代码和文档受版权保护 - 未经授权,不得复制、修改或分发 - 引用本项目时,请注明来源 3. **第三方库**: - 项目使用了一些开源第三方库 - 这些库的使用遵循其各自的许可证 ## 13. 联系方式 ### 13.1 项目维护者 - **电子邮件**:maintainer@example.com - **GitHub**:https://github.com/example/windmill-light - **官方网站**:https://example.com/windmill-light ### 13.2 社区支持 - **GitHub Issues**:提交问题和功能请求 - **Discord 社区**:加入讨论和获取帮助 - **论坛**:在相关技术论坛讨论项目 ### 13.3 反馈和建议 - **反馈表单**:通过官方网站提交反馈 - **社交媒体**:关注项目的社交媒体账号获取更新 - **用户调查**:参与用户调查,帮助改进项目 ## 14. 未来规划 ### 14.1 短期计划 - **功能完善**: - 优化蓝牙连接稳定性 - 改进移动应用用户界面 - 添加更多场景模式 - **性能优化**: - 减少系统功耗 - 提高通信可靠性 - 优化电机控制算法 ### 14.2 长期计划 - **平台扩展**: - 支持更多智能平台(如 Alexa、Google Home) - 开发 Web 控制界面 - 支持更多硬件平台 - **生态系统**: - 开发配套的智能家居产品 - 建立开发者生态系统 - 提供 API 和 SDK 供第三方集成 - **商业模式**: - 推出商业版本 - 提供云服务 - 建立销售和支持体系 ## 15. 总结 智能风车灯控制系统是一个功能丰富、易于使用的智能设备控制系统。它结合了 ESP32-C3 微控制器和 Uniapp 移动应用,提供了多种控制方式和丰富的功能。 该项目不仅是一个实用的智能设备,也是一个很好的学习资源,展示了物联网、嵌入式系统和移动应用开发的综合应用。通过本项目,开发者可以学习如何构建一个完整的智能设备系统,包括硬件设计、嵌入式编程、移动应用开发和通信协议设计。 我们欢迎更多开发者参与到项目中来,共同改进和扩展这个项目,使其成为一个更加完善和实用的智能设备控制系统。