時動機 (TOKIDOKI)
DATE: 2025-03-231. Regular clocks tell real time. Real time is time such as half-past seven.
2. Digital clocks tell fake time. Fake time is time such as nine-seventeen.
3-6. …
7. Real watch faces are in the shape of watch faces because they must accommodate all of the things that make up a real watch, such as numbers, hands, and little minute lines.
8. Digital watch faces are in the shape of watch faces for no apparent reason. This cannot help but have an unsettling effect upon the young.
TOKIDOKI1 is a robotic timepiece with a minimal single-motor interface. Though its outward appearance resembles simple analog clocks or egg timers, the device features several modes in “feature parity” with digital clock applications. In its idle clock mode, the analog face displays the time with concentric rings of RGBW LEDs. Timer, stopwatch, and alarm modes are accessible by “winding” the center dial that is attached to the motor. Like a mechanical egg timer, winding the dial clockwise begins a countdown timer. Each successive revolution represents an increased timescale, beginning at seconds and increasing through minutes, hours, days, weeks, months, and years until the final revolution represents the user’s total life expectancy. Winding the dial counterclockwise less than one full revolution begins a stopwatch. Winding counterclockwise between one and two revolutions sets an AM alarm; similarly, between two and three revolutions sets a PM alarm. Beyond its utility, this project is an exploration into minimum-viable interfaces for simple robotic devices.
TOKIDOKI displayed at a clock exhibition at a local makerspace. The analog face reads “02:40”: the inner hour light is illuminated at 2-o’clock; the outer minute light is illuminated at 8-o’clock. The center dial is used to access other modes: a timer counting down, a stopwatch counting up, and an alarm.
Inspiration
Existing devices that inspired the design: simple clocks and kitchen timers (top left); the Time Timer that visually represents the elapsed time with a sweeping red arc (top right); the Teenage Engineering OP-Z synthesizer that eschews a screen for a tactile and color-coded interface (bottom).
The design was motivated by the need for a simple timer for pomodoro working sessions. A primary aesthetic inspiration was the Time Timer clock, an egg timer which visually represents the elapsed time with a sweeping red arc. The functionality was based on simple three-button kitchen timers: setting an initial time begins a timer counting down, but starting from a zeroed time begins a stopwatch counting up.
Beyond timepieces, unlikely inspirations came from the interfaces of musical synthesizers. Screen-based timers are plentiful, but the lack of physicality lends them to be easily ignored. Instruments like the Synthstrom Deluge and Teenage Engineering OP-Z deemphasize displays in favor of tactile and color-coded interfaces. Making minimal use of screens affords a kinesthetic fluency in operation. Similarly, designing the device was also an exploration of a “minimum-viable” robotic interface: what affordances and input-output interactions are possible with a single motor?
Implementation
Exploded view of TOKIDOKI. A Raspberry Pi Pico W microcontroller controls the Adafruit NeoPixel RGBW LED rings and Dynamixel XL-330 M288 motor. The lights face inward in the style of recessed indirect lighting.
Design goals
Beyond functionality as a usable timepiece, a design goal was to be familiar and unassuming to elicit a “positive” uncanny response. Uncanniness, especially in the cultural case of the robotic uncanny valley, is an undesirable affective response to an estrangement of the familiar and the unmet expectation of a simulacrum (Jochum 2016), e.g. the rigid jerky motions of a humanoid robot, the insidious horror of possessed playthings like dolls, or even the memento mori of a detailed photograph of a deceased acquaintance (Gunning 2003). By appropriating the appearance of a familiar kitchen egg timer, the unassuming design aims to lower its expected functionality to more easily exceed it. The circular analog face retrieves the implicit recurrence of time that is lost with the discretization of digital displays. However, analog clocks have difficulty representing timescales beyond seconds, minutes, and hours. Though complex calendar clocks display days, weeks, and months, these interfaces often become cluttered with non-concentric subfaces and small scripts. The device uses digital affordances of color-coded lights and a servo motor to expand the clock’s capability within the constraints of the familiar analog form factor.
Construction
In-progress image of construction.
The device is built with commercial components totaling to approximately $50. The system is controlled with a Raspberry Pi Pico W microcontroller programmed with MicroPython. The RGBW LED rings are Adafruit NeoPixels, specifically the 12- and 24-count variants that are popular with homebrewed clocks. Opposite of many other illuminated clock projects, the lights are directed inward for indirect lighting that reflects from its recessed face. The motor is a Dynamixel XL330-M288. Beyond its function as a typical servo motor with position control as an output, disabling the motor’s torque turns it into a rotary encoder as an input. The motor supports multi-turn control and feedback of position, velocity, and acceleration for up to 512 revolutions. The dial is a simple cantilevered knob printed in black to contrast the white housing. The housing is printed in PLA with a low-end consumer-grade 3D printer. The device is powered by a USB-C port.
Modes
TOKIDOKI in clock (left), timer (center left, center right), and alarm (right) modes. The clock reads “05:20”: the inner hour and outer minute lights are positioned at 5- and 4-o’clock, respectively. The center left timer is set for a 25-minute pomodoro session: the orange center ring indicates the second revolution with a timescale of minutes; the outer ring show the red and blue LEDs at the 2- and 5.5-o’clock positions which concatenate The alarm reads “07:00 AM”: the red outer lights indicates the second counterclockwise revolution to set an AM alarm; the positions of the inner hour and outer minute lights are at 7- and 12-/0-o’clock, respectively. In alarm mode, the current time is still displayed by the white lights as in clock mode. to read “25.” In a static image, stopwatch mode appears identical to the timer mode. The right timer shows the remaining life expectancy of the user: the whole revolution represents 84 years (the user’s life expectancy as estimated by literature (Baluran 2021)); the numerical display on the outer ring reads “30” (red LED at 3-o’clock, blue LED at 0-o’clock) indicating the user’s current age. The alarm reads “07:00 AM”: the red outer lights indicates the second counterclockwise revolution to set an AM alarm; the positions of the inner hour and outer minute lights are at 7- and 12-/0-o’clock, respectively. In alarm mode, the current time is still displayed by the white lights as in clock mode.
Clock
In the idle clock mode, the analog face displays the time using concentric rings of RGBW LEDs. The inner ring represents the hour with twelve LEDs; the outer represents the minute with 24 LEDs updated in five-minute increments. The time is synchronized by connecting the device to a local network.
Rev | Amount of time | Color | CCW modes |
---|---|---|---|
1 | 60 seconds | Red | Stopwatch |
2 | 60 minutes | Orange | AM alarm |
3 | 24 hours | Yellow | PM alarm |
4 | 7 days | Green | Brightness* |
5 | 4 weeks | Blue | +UTC offset* |
6 | 12 months | Indigo | -UTC offset* |
7 | n years | Violet | Alarm range* |
Implementation table detailing the iteration through timescales, amounts, and colors for each revolution. When turning clockwise to begin a timer, the number of revolutions defines the timescale which will be represented by the color. The whole revolution represents an amount of the current timescale until iterating to one unit of the next timescale, e.g. the first revolution represents 60 seconds until passing over into minutes. When turning counterclockwise, different modes are set based on the number of revolutions: within one revolution begins a stopwatch; between two and three revolutions sets an alarm. Asterisks indicate planned functionality not yet implemented.
Timer
Turning the dial clockwise and releasing sets a timer with the dial ticking counterclockwise. Each successive revolution increases the timescale: the first revolution represents 60 seconds in a minute; the second, 60 minutes in an hour; etc. The timescale is represented by the color of the inner LED ring, which iterates through the standard ROYGBIV sequence. The remaining time is physically represented by the counterclockwise sweeping of the dial back to the idle The remaining time is visually represented by the number of illuminated LEDs on the inner ring, which decreases to follow the motion of the dial. The remaining time is numerically represented on the outer LED ring, which uses two LEDs as a digit display. A red and blue LED indicate the first and second digits of the remaining time, respectively, though the blue LED is offset clockwise to avoid digit collisions. For example, a red LED at the 2-o’clock position and a blue LED slightly below at the 2.5-o’clock position reads “22.” In the event of a single-digit value, only the blue LED is illuminated. The 12-o’clock position represents “0.” Each revolution displays the remaining time for the current timescale except for the final revolution which represents the user’s life expectancy in years. The numerical display on the final revolution is reversed to instead represent the user’s age — the “elapsed” time — as this information is more readily intuited. Upon completion of the timer, the dial emits an alert by “wagging” across the top of the face between the 10- and 2-o’clock positions. The alert is silenced by physically grabbing and rotating the dial any direction to reset to the idle clock mode.
Stopwatch
From idle, turning the dial counterclockwise within one revolution begins a stopwatch. Like the remaining time in timer mode, the elapsed time in stopwatch mode is represented physically by the motion of the dial, visually by the area of the lights on the inner ring, and numerically by the digits illuminated on the outer ring. Like cancelling the timer’s alert, turning the dial any direction cancels the stopwatch to reset to the idle clock mode.
Alarm
Turning the dial counterclockwise beyond the first revolution for the stopwatch, between two and three revolutions sets an alarm. The position of the dial maps to the hour-hand position of the alarm time. The revolution maps to ante- / post-meridiem: within the second revolution sets the alarm within AM with red LEDs on both the hour and minute rings; within the third, PM with blue LEDs. The current time is still displayed with white LEDs as in clock mode. The alarm notification is the same wagging of the dial as in the timer mode. The alarm can be adjusted by moving the dial to any position within the second and third counterclockwise revolutions or canceled by moving the dial anywhere outside that range.
Discussion
Exhibition
The device was deployed at a clock-themed exhibition at a local makerspace among other alternative timepieces. The audience reacted positively to the simple monochrome design and depth of the single-motor interface. Attendees who tried the timer functionality liked the weight of the dial and its “fighting back” when manipulating the wagging dial to silence the alert. The projection of disobedience from a simple wagging motion suggests potential for minimal robotic interfaces in crafting behaviors.
Future Work
While the device is functionally complete and usable for its intended purpose, we plan further iterations to refine and release the design for open-sourcing. Inspired by Braun desktop clocks that feature identical analog faces with different exteriors, we plan to redesign the system into a contained central module that houses the components and fits into modular housings for user customization. This central module will be fitted with an internal battery to prevent shutdowns when disconnected from a wired supply. The innards must be lightproofed as the LEDs bleed through the white housing, especially with low infill.
Beyond refinement, we also plan to extend the functionality of the device. Rotating the dial counterclockwise beyond three revolutions could control settings such as brightness or UTC offset. There is currently no display for the date, which could be implemented as a periodic display using the existing numerical digit display implemented on the outer ring. The wireless capabilities of the Pico also allow for an external interface for settings such as network connectivity and updating the user’s life expectancy. While this work is chiefly an exercise in hardware and interface design, we also consider potential research applications for such a controllable timepiece. One application could be investigating preferences or effectiveness of visually representing either elapsed or remaining time in a countdown. Another could be manipulating the perception of time through either the motor or light interface.
Conclusion
TOKIDOKI is a minimally robotic timepiece that implements the functionality of modern clock applications — displaying the time, starting timers and stopwatches, and setting alarms — in a physical device with a familiar analog appearance and simple single-motor interface. The source code and design files are available on GitHub.
-
The name “TOKIDOKI” has several meanings depending on its written representation in Japanese. “TOKIDOKI,” written 時々 or ときどき, is a doubling of the character for “time” and literally represents its meaning: “(from) time (to) time,” or “sometimes.” Slightly stretching the “do” (ど) sound to “dou” (どう), the characters can be rewritten as 時動機, literally “time move machine.” While this reading is fitting for a timekeeping device with a moving element, the pairing of the last two characters 動機, “moving (of a) machine,” has etymologically evolved to denote the “motive (of a human).” This alternate reading of a “time motive” is still appropriate given the device’s stopwatch and timer modes. ↩