# AI-Light 固件 基于 **ESP32-C3 SuperMini** 的桌面状态灯固件,通过 BLE 蓝牙或 MQTT 接收状态指令,控制红绿灯挂件显示 AI 工作状态。 ## 固件 `ai_light.ino` 支持 BLE + MQTT 双模式,通过 BOOT 按钮切换。 ## Web Bluetooth 配置页面 `web/ble-config.html` 是一个独立的 Web 页面,通过浏览器的 Web Bluetooth API 连接设备进行配置。 ### 使用方法 1. 用 **Chrome / Edge / Opera** 浏览器打开 `web/ble-config.html` 2. 点击 **Connect** 按钮,选择 `AI-Light` 设备 3. 连接后可查看设备状态、切换灯效、配置 WiFi/MQTT 参数 4. 点击 **Save & Restart** 保存配置 ### 功能 | 功能 | 说明 | |------|------| | 设备状态 | 显示 WiFi/MQTT 连接状态、当前灯效 | | 灯效控制 | 点击按钮切换灯效模式 | | WiFi 配置 | SSID、密码 | | MQTT 配置 | Broker、Port、用户名、密码、Client ID、Topic | ### 注意事项 - 需要支持 Web Bluetooth 的浏览器(Chrome/Edge/Opera) - 首次使用需在 HTTPS 环境或 localhost 打开 - ESP32 需在 BLE 广播范围内(约 10 米) ## BLE 参数(双模式版) ``` Device Name: AI-Light Service UUID: b8b7e001-7a6b-4f4f-9a8b-11c0ffee0001 Mode Characteristic: b8b7e002-7a6b-4f4f-9a8b-11c0ffee0001 (灯效控制) Config Characteristic: b8b7e003-7a6b-4f4f-9a8b-11c0ffee0001 (WiFi/MQTT 配置) ``` ### 灯效控制 向 Mode 特征写入 UTF-8 字符串即可控制灯效: | 模式 | 灯效 | 典型场景 | |------|------|----------| | `init` | 开机初始化 | 启动 | | `thinking` | 跑马灯 | AI 分析中 | | `ai` | 慢速跑马灯 | AI 生成中 | | `busy` | 黄灯慢闪 | 命令执行中 | | `success` | 绿灯常亮 | 任务成功 | | `error` | 红灯快闪 | 任务失败 | | `alarm` | 红黄交替警灯 | 严重异常 | | `traffic` | 模拟红绿灯 | 展示模式 | | `off` | 全灭 | 关闭 | ### WiFi/MQTT 配置(BLE) 向 Config 特征写入 JSON 配置,设备自动保存到 NVS 并重启: ```json { "wifi_ssid": "你的WiFi名", "wifi_pass": "你的WiFi密码", "mqtt_broker": "192.168.1.100", "mqtt_port": 1883, "mqtt_user": "mqtt用户名", "mqtt_pass": "mqtt密码", "mqtt_client": "AI-Light", "mqtt_topic": "opencode/status", "mqtt_status": "openCodeLight/status" } ``` ## 双模式版(combined) `combined/ai_light.ino` 同时支持 BLE 和 MQTT: | 操作 | 效果 | |------|------| | 运行长按 BOOT 3 秒 | 切换 BLE/MQTT 模式并重启 | - **开机始终启动 BLE**,可用于灯效控制和 WiFi/MQTT 配置 - 默认 MQTT 模式,切换后自动保存到 NVS - 使用 `web/ble-config.html` 通过浏览器配置设备 ## 硬件接线 基于公共正极灯板: ``` ESP32 3.3V -> 灯板正极 ESP32 IO2 -> 220Ω -> 绿灯 ESP32 IO3 -> 220Ω -> 红灯 ESP32 IO4 -> 220Ω -> 黄灯 ``` 公共正极逻辑:GPIO LOW = 灯亮,GPIO HIGH = 灯灭 ## 烧录方法 1. 安装 [Arduino IDE 2.x](https://www.arduino.cc/en/software) 2. 安装 ESP32 开发板包:`esp32 by Espressif Systems` 3. 选择开发板:`ESP32C3 Dev Module` 4. 打开 `.ino` 文件,点击 Upload 5. 串口监视器波特率:`115200` ## 依赖库 - `WiFi.h`(ESP32 内置) - `PubSubClient.h` - `ArduinoJson.h` - `BLEDevice.h`(ESP32 内置) - `Preferences.h`(ESP32 内置) 通过 Arduino IDE → Sketch → Include Library → Manage Libraries 安装。