构建一个可以用色彩描绘时间的时钟
我们通常以数字来读取时间。但在钟表出现之前,人们是通过天空的颜色感受时间的流逝。iroirotokei(“iro”意为颜色,“tokei”为日语中的“时钟”)重新唤起了这种感受:M5Stack计时器那块466×466像素的圆形AMOLED显示屏,化作一个单一且缓慢变化的色彩,跟随真实一天的天空——从深夜深蓝、黎明紫罗兰、日出珊瑚红、白昼蓝、黄金时刻、夕阳红,到黄昏紫。
每秒都会通过线性插值的方式,在24小时中分布的14种按键色之间重新计算颜色,使变化变得极其平滑自然,仿佛真实天空一般。表圈周围环绕着渐变环,可一目了然地看到全天的色彩调色板,其中“现在”位置用白色标记。内部颜色以24位(1670万色)进行计算。
两种方式与时间本身互动:
•时光穿梭:表盘显示24小时,只需轻触屏幕并沿圆圈拖动——显示屏会跳转至对应小时的颜色,并在每一小时经过时播放相应的音符。松开手指即可返回当前时间。
•回放模式:长按右键,约48秒内即可播放全天的旅程回放,每小时的颜色以音符形式发出——整日化作一场色彩与旋律交织的延时影像。非常适合演示使用。
自定义颜色,并聆听其声音
长按左键进入“色彩生成器”模式:
•左键:从10种配色方案中选择一种颜料
•右键:进行混合——混合效果为动态平均值,因此表现得如同真实颜料一般:添加越多,每一滴颜色就越柔和
•每次混合都会播放你刚刚创建的颜色的声音:色调被映射到一个两八度的五声音阶上(红色=低音,紫色=高音;灰色则根据亮度变化)。你可以直接搜索自己最喜爱颜色的声音。
•卡住了?轻轻摇晃设备,1670万种颜色中会随机出现一种——然后通过混合进一步优化。
语音变色——你的声音是什么颜色?
切换至“语音变色”模式,只需开口说话:麦克风将你的声音实时转化为颜色——音高变为色调(低音为红色,高音为紫色),音量变为亮度。当你停止说话后,设备会自动播放你声音所呈现的颜色。唱歌时,色彩便随之起舞。麦克风和扬声器共享音频编解码器,因此固件会自动在两者之间切换。
倾斜绘画 — 重力作画
利用内置的BMI270惯性测量单元(IMU),倾斜绘画模式将整个屏幕变成湿漉漉的水彩纸。为每个按钮(左右)选择一种颜料容器,然后轻轻倾斜设备:颜料会流向较低的一侧并积聚在那里——聚集处颜色浓烈,稀释处颜色淡薄。每帧画面都会进行扩散处理,使相邻的颜色像湿画水彩一样自然渗透交融。当你倾斜时,高五声音阶的音符会如星尘般随机闪烁——倾斜越用力,闪烁就越明亮、越迅速。长按可清除纸上的所有颜料。
填满房间 — 使用Unit HEX营造氛围光
将M5Stack Unit HEX(37×SK6812 LED灯)插入A端口,面板便会变为氛围照明:全部37个LED灯会实时映射每个模式的“当前色彩”——包括时钟的天空色、你刚刚混合的颜料色、你的水彩画平均色调,甚至你说话时的声音颜色。LED开关、亮度调节(2–100%)以及扬声器音量均可通过圆形滑块屏幕在设备上进行调整,且所有设置均能持久保存。该模块为可选配置——无需它,固件也能正常运行。
随机模式
一种放下的方式:时钟持续运转,背景每隔几秒就会漂移至一种新的随机颜色,而HEX面板则化作由37种独立闪烁的随机色彩组成的星空。
始终准时——Wi-Fi + NTP
首次通过手机设置Wi-Fi(开机时长按右键;设备将变为一个带有捕获门户的接入点)。此后,每次启动时时钟都会与互联网时间同步,并在每天凌晨3点将时间写入电池背板RTC,然后关闭Wi-Fi以节省功耗。
星辰、天空与大地的声音
所有反馈音效均围绕天体主题设计:模式切换时为星星闪烁声,每小时顶部为远处的钟声琶音,静音时则发出单一低沉的“大地”音调。声音可通过一次点击切换,设置在闪存中持久保存。
它依然是计时器
正如其名称所示,只需一键即可使用具备圈数计时功能的1/100秒计时器。
工作原理
•硬件:M5Stack StopWatch(ESP32-S3R8,1.75英寸圆形AMOLED 466×466 / CO5300,BMI270 IMU,RX8130CE RTC,ES8311编解码器+1W扬声器,两个按钮)
•固件:PlatformIO + Arduino框架 + M5Unified/M5GFX颜色引擎:14个关键帧 → 每秒线性插值,持续86,400秒
•颜色混合:浮点数累积平均
•水彩模拟:58×58浮点网格;重力加权的颜料沉积 + 扩散,约15帧/秒,通过缩放精灵渲染
•语音转色:16kHz麦克风帧 → 均方根值(响度→亮度)+ 零交叉率(音高→色调),支持自动切换麦克风/扬声器编解码器
•色彩转声音:RGB → 色调 → 10级五声音阶(C5–A6),以音符+八度火花形式播放
•环境光:通过Grove A端口使用FastLED(Unit HEX,SK6812×37),电源限制为5V / 500mA,冷启动安全的数据线处理
•时间同步:Wi-Fi NTP自动同步(智能手机需通过 captive-portal 设置,每日凌晨3点重新同步)+ 电池供电的实时时钟 + 串行/PowerShell 降级方案
构建步骤
刷入固件:使用VSCode + PlatformIO打开仓库,长按电源键进入下载模式,点击“上传”——所有库将自动获取。
将Unit HEX插入A端口(可选)。
首次通过手机设置Wi-Fi(开机时长按右键)——此后时钟将自动同步。这款3D打印的桌架将秒表直立放置,下方嵌入了Unit HEX模块,使面板从钟表底部透出光芒。
为何重要
iroirotokei将一款实用小工具转化为环境艺术:你将学会感受清晨六点的样子。色彩混合模式同时成为一款趣味十足的色彩理论玩具,专为儿童设计——在掌中大小的设备上,体验加法混合、色相、亮度,甚至联觉(比如“青绿色”听起来像什么?)。
本文编译自hackster.io





