






















ESP32C3 蓝牙 BLE 状态指示灯,用于 Claude Code 工作状态的物理提醒。
| 组件 | 型号/规格 |
|---|---|
| 开发板 | ESP32C3-Super-Mini |
| LED 电路板 | 三色 LED(共阴极,红/黄/绿) |
| 蜂鸣器 | 无源蜂鸣器模块(3线制:VCC、IO、GND) |
| 组件 | 引脚 | ESP32C3 GPIO | 板子位置 |
|---|---|---|---|
| LED 红 | R | GPIO5 | 右侧第 1 个 |
| LED 黄 | Y | GPIO6 | 右侧第 2 个 |
| LED 绿 | G | GPIO7 | 右侧第 3 个 |
| LED 地 | GND | GND | 左侧第 2 个 |
| 蜂鸣器正 | + | 3V3 | 左侧第 3 个 |
| 蜂鸣器 IO | IO | GPIO4 | 左侧第 4 个 |
| 蜂鸣器负 | - | GND | 左侧第 2 个 |
注意:GPIO8 是板载蓝灯(右侧第 4 个),不要使用。
固件中定义了三种颜色的最大亮度常量(0-255),可按需调整:
#define BRIGHTNESS_RED 255
#define BRIGHTNESS_YELLOW 255
#define BRIGHTNESS_GREEN 192
修改后重新烧录固件即可全局生效。
| 模式 | 名称 | 说明 |
|---|---|---|
| 0 | 全灭 | 所有 LED 熄灭 |
| 1 | 三灯同频闪烁 | 红黄绿同时闪烁,500ms 周期 |
| 2 | 绿灯闪烁 | 绿灯闪烁,500ms 周期 |
| 3 | 红灯闪烁 | 红灯闪烁,500ms 周期 |
| 4 | 黄灯闪烁 | 黄灯闪烁,500ms 周期 |
| 5 | 绿灯常亮 | 绿灯持续点亮 |
| 6 | 红灯常亮 | 红灯持续点亮 |
| 7 | 黄灯常亮 | 黄灯持续点亮 |
| 8 | 三灯常亮 | 红黄绿同时点亮 |
| 9 | 警车交替快闪 | 红绿交替 300ms + 黄灯独立快闪 150ms |
| 10 | 心跳双闪 | 80ms 亮 → 100ms 灭 → 80ms 亮 → 600ms 灭 |
| 11 | SOS 摩尔斯求救码 | 三短三长三短 |
| 12 | 三色轮转呼吸灯 | 红绿反向渐变 + 黄灯 120° 相位偏移 |
| 13 | 萤火虫混沌呼吸 | 三灯独立正弦波,周期不同产生非对称律动 |
| 14 | 心电波模拟 | 红灯 ECG 波形,绿灯 QRS 峰暴闪,黄灯 P/T 波柔和发光 |
| 15 | 三相正弦追逐 | 绿 sin、红 cos、黄 sin+120°,3s 周期 |
| 16 | 急救爆闪追击 | 绿 → 黄 → 红各闪 3 下,80ms 亮/80ms 灭 |
| 17 | 太极呼吸 | 红绿 sin³ 对立消长,黄灯独立 120° 相位偏移 |
| 18 | HELLO 摩尔斯码 | 持续广播 HELLO 摩尔斯码 |
| 19 | 雷达扫描与锁定 | 3s 绿灯正弦扫描 + 黄灯回波 → 1s 红灯锁定闪动 → 0.5s 三灯全亮 |
Claude-LED-LUCKEYf4b7e3a1-5c6d-4e8f-9a2b-1c3d5e7f9a0b8c9d4e2f-1a3b-4c5d-6e7f-8a9b0c1d2e3fmode[,buzzer_param]
mode:模式编号(0-19)或名称buzzer_param:蜂鸣器参数
0 = 不响1 = 短响一声(80ms,2000Hz,主板自检音)2 = 短响两声(2000Hz + 1000Hz,各 80ms,不同声调)3 = 高频短响(200ms,4000Hz)示例:
"alarm,1" → 红灯常亮 + 短响一声"alarm,2" → 红灯常亮 + 短响两声(不同声调)"alarm,3" → 红灯常亮 + 高频提示音"alarm,0" → 红灯常亮 + 不响"alarm" → 红灯常亮 + 不响"2" → 模式 2(绿灯闪烁),蜂鸣器不响直接发送模式编号,如 "0"、"17"。
| 命令 | 等效模式 |
|---|---|
| off / close / idle | 0 |
| thinking / think | 2 |
| busy / executing | 7 |
| success / ok / done | 5 |
| error / failed | 3 |
| alarm / permission | 6 |
| green / blink | 2 |
| taichi / running / run | 17 |
| bothoff | 0 |
| bothflash | 1 |
| greenflash | 2 |
| redflash | 3 |
| yellowflash | 4 |
| greenon | 5 |
| redon | 6 |
| yellowon | 7 |
| bothon | 8 |
| police | 9 |
| heartbeat | 10 |
| sos | 11 |
| breathing | 12 |
| firefly | 13 |
| ecg | 14 |
| phasechase / chase | 15 |
| strobe / strobechase | 16 |
| hello / hellomorse | 18 |
| radar | 19 |
| castle / sky | 彩蛋:播放天空之城短版(~2.5秒) |
| castle,1 / sky,1 | 彩蛋:播放天空之城完整版(~46秒) |
用 Arduino IDE 打开 firmware/claude-led/claude-led.ino,选择 ESP32C3 开发板,烧录。
# 自动测试全部灯效(每种 3 秒)
python scripts/test-all-effects.py
# 手动测试单个灯效
python scripts/send-hook.py 17 # 太极呼吸
python scripts/send-hook.py taichi # 同上
python scripts/send-hook.py alarm 1 # 红灯常亮 + 短响一声
python scripts/send-hook.py alarm 2 # 红灯常亮 + 短响两声(不同声调)
python scripts/send-hook.py alarm 0 # 红灯常亮 + 不响
在 ~/.claude/settings.json 中添加 hooks:
{
"hooks": {
"SessionStart": [
{
"matcher": ".*",
"hooks": [
{
"type": "command",
"command": "python \"D:\\path\\to\\send-hook.py\" 17",
"timeout": 5000
}
]
}
],
"PreToolUse": [
{
"matcher": ".*",
"hooks": [
{
"type": "command",
"command": "python \"D:\\path\\to\\send-hook.py\" 2",
"timeout": 5000
}
]
}
],
"PermissionRequest": [
{
"matcher": ".*",
"hooks": [
{
"type": "command",
"command": "python \"D:\\path\\to\\send-hook.py\" 4 1",
"timeout": 5000
}
]
}
]
}
}
| Hook 事件 | 参数 | 灯效 | 蜂鸣器 |
|---|---|---|---|
| SessionStart | 18 | HELLO 摩尔斯码 | 不响 |
| UserPromptSubmit | 2 | 绿灯闪烁 | 不响 |
| PreToolUse | 2 | 绿灯闪烁 | 不响 |
| PostToolUseFailure | 3 | 红灯闪烁 | 不响 |
| PermissionRequest | 4 1 | 黄灯闪烁 | 短响一声 |
| Stop | 5 | 绿灯常亮 | 不响 |
| SessionEnd | 17 | 太极呼吸 | 不响 |
首次通电默认灯效为 18(HELLO 摩尔斯码),同时播放天空之城前奏短音作为启动提示。5 分钟无操作后自动关闭。
开机自动播放天空之城前奏短音(~2.5 秒)。也可通过命令手动触发:
python scripts/send-hook.py castle # 短版 (~2.5秒)
python scripts/send-hook.py castle,1 # 完整版 (~46秒)
python scripts/send-hook.py sky # 同 castle
播放中再次发送 castle 可停止播放。旋律数据由 8051 版本移植而来。
pip install bleak此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。