1. 项目背景与灵感来源
去年在深圳高交会上看到一组可穿戴设备的原型展示后,我就一直想做个能体现科技美学的个人项目。直到上个月在二手市场淘到一副90年代风格的方框眼镜,这个想法突然有了具体载体——用函数计算实现动态光效的赛博朋克眼镜改造。
选择AgentRun这个相对冷门的函数计算平台有两个原因:首先是其独特的边缘计算节点部署能力,能让光效响应延迟控制在50ms以内;其次是支持WebAssembly运行时,这对资源受限的可穿戴设备至关重要。整个改造过程实际耗时37小时,其中硬件调试占60%,函数逻辑编写占30%,剩下是外观处理。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 硬件改造方案设计
2.1 基础材料准备
原眼镜框架是TR90材质,这种尼龙复合材料有两个优势:重量仅17g且耐弯折,这为电路走线提供了便利。核心部件包括:
- WS2812B灯带(60灯珠/米)
- ESP32-C3迷你开发板
- 200mAh软包电池
- 0.8mm直径漆包线
特别要说明灯带选型:相比常规5050封装,WS2812B的2020封装厚度仅1.2mm,配合特氟龙胶带可以完美贴合镜腿内侧。实测全亮状态下整条灯带功耗0.8W,这意味着满电状态下可持续工作约2.5小时。
2.2 电路布局技巧
走线方案经过三次迭代:
- 初始尝试在镜框开槽埋线,但破坏了结构强度
- 改用镜腿外侧走线,影响佩戴舒适度
- 最终方案:沿镜腿内侧用UV胶固定0.3mm厚FPC排线
关键突破点在于利用眼镜鼻托处的空间安置ESP32板卡,这里有两个优势:一是靠近人体能利用体温减少结露风险,二是重心位置居中不会导致眼镜下滑。电池则藏在右侧镜腿末端配重块位置,通过3D打印的ABS外壳实现IP54级防护。
3. 函数计算核心逻辑实现
3.1 AgentRun环境配置
创建函数时选择WASM运行时而非标准容器,这带来两个显著好处:
- 冷启动时间从平均800ms降至120ms
- 内存占用控制在8MB以内
函数代码采用Rust编写,编译目标为wasm32-wasi。以下是关键依赖:
toml复制[dependencies]
esp_idf_sys = { version = "0.33", features = ["esp32c3"] }
smart_leds = "0.3"
3.2 光效控制算法
核心是HSL色彩空间转换算法,相比直接使用RGB能更自然地实现彩虹波浪效果。这段WASM代码处理单个灯珠的色彩转换:
rust复制fn hsl_to_rgb(h: f32, s: f32, l: f32) -> RGB8 {
let c = (1.0 - (2.0 * l - 1.0).abs()) * s;
let x = c * (1.0 - ((h / 60.0) % 2.0 - 1.0).abs());
let m = l - c / 2.0;
// ...省略具体转换逻辑
}
通过AgentRun的MQTT触发器接收手机端指令,函数内部维护一个状态机处理不同光效模式。实测最耗资源的"声纹可视化"模式,单帧处理耗时7.2ms(@60Hz采样率),完全满足实时性要求。
4. 电源管理系统优化
4.1 动态功耗调节
开发过程中发现的最大问题是电池续航。通过引入自适应亮度算法,根据不同环境光传感器数据动态调整LED电流:
| 环境光照(lux) | 亮度百分比 | 预估续航 |
|---|---|---|
| <50 | 30% | 4.1h |
| 50-500 | 60% | 2.8h |
| >500 | 100% | 1.9h |
4.2 充电电路改造
原装充电模块的500mA充电电流会导致眼镜框架轻微发热。改用分立元件搭建的CCCV电路后:
- 最大充电电流降至300mA
- 增加TP4056芯片实现温度监控
- 充电效率从78%提升到85%
实测在5V/1A输入下,完整充电时间从42分钟延长到65分钟,但表面温度始终低于36℃。
5. 佩戴体验与改进方向
最终成品重量控制在42g,比普通眼镜多出的25g主要来自电池和电路。长时间佩戴测试中发现两个问题:
- 镜腿末端电池仓在跑步时有轻微晃动
- 连续使用1小时后鼻托处有闷热感
改进方案已经设计完成:
- 改用凝胶电池减轻重量
- 在鼻托处增加微型散热孔
- 加入6轴IMU实现姿态感应光效
这个项目最让我意外的是AgentRun在边缘计算场景的潜力——其事件驱动的执行模型特别适合处理穿戴设备的突发性交互请求。下次准备尝试用其音频处理函数实现骨传导眼镜的实时降噪功能。
