Aeropress 咖啡冲泡依赖精准时机,手动计时易导致萃取不均、酸苦失衡。使用 Arduino 构建最小 viable 项目,提供双区间计时(浸泡 30s + 压滤 45s),按钮启动 / 切换 / 复位,LCD 实时 MM:SS 显示,蜂鸣分段提醒,确保每次冲泡一致性。
硬件组件清单:
- Arduino Nano(紧凑,5V 供电)
- 16x2 I2C LCD(地址 0x27,显示当前阶段与剩余时间)
- 3 个按钮:启动 / 暂停(Pin2)、切换区间(Pin3)、复位(Pin4)
- 压电蜂鸣器(Pin5,1000Hz 音调)
- 10kΩ 上拉电阻(按钮防抖)
- 面包板 + 跳线
接线要点:
- LCD:SDA(A4)、SCL(A5)、VCC(5V)、GND
- 按钮:一端 Pin2/3/4,另一端 GND,上拉内置或外接 10kΩ
- 蜂鸣器:正极 Pin5,负极 GND
- 供电:USB 或 9V 电池 + 稳压
核心使用 millis () 非阻塞定时,避免 delay 阻塞按键响应。状态机:IDLE(待启动)、STEEP(浸泡)、PRESS(压滤)、DONE(完成)。
计时逻辑: unsigned long prevMillis = 0; int interval = 30000; // 30s ms enum State {IDLE, STEEP, PRESS, DONE}; State currentState = IDLE;
loop () 中: unsigned long now = millis (); if (now - prevMillis>= interval){ prevMillis = now; // 切换状态,蜂鸣 tone (5,1000,200); LCD 更新 }
按钮防抖:millis 基 50ms 阈值,仅稳定低电平触发。
显示格式:"浸泡 00:30" →蜂鸣→"压滤 00:45" →蜂鸣→"完成!"。
参数配置:
- 浸泡区间:30s(bloom,促进释放 CO2)
- 压滤区间:45s(均匀萃取,避免过萃)
- 蜂鸣:1000Hz,200ms 双音(区别分段)
- 防抖阈值:50ms
- LCD 对比度:10k 电位器中档
- 功耗:~20mA,电池续航长
监控点:LCD 闪烁提醒结束;复位按钮长按 > 1s 清零。
回滚策略:若 drift>1s,用 Timer1 中断校准 millis。
测试:实际冲泡,计时误差 < 100ms,LCD 清晰,按钮响应 < 50ms。
来源:Aeropress 官网食谱(总时 60-90s)[1];Arduino millis () 文档 [2]。
[1] aeropress.com/recipes “60-90 秒翻转压滤” [2] arduino.cc/reference/en/language/functions/time/millis/