# 风车灯
**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 移动应用,提供了多种控制方式和丰富的功能。
该项目不仅是一个实用的智能设备,也是一个很好的学习资源,展示了物联网、嵌入式系统和移动应用开发的综合应用。通过本项目,开发者可以学习如何构建一个完整的智能设备系统,包括硬件设计、嵌入式编程、移动应用开发和通信协议设计。
我们欢迎更多开发者参与到项目中来,共同改进和扩展这个项目,使其成为一个更加完善和实用的智能设备控制系统。