Spinetime is a ring binder-integrated linear clock 1 designed to help students and neurodivergent individuals manage time and tasks more effectively. Users of Spinetime can visualize the passage of the day at a glance, providing aid especially for those who struggle with time blindness.
It is surprising to me that people have manufactured papers with time table template, but not invent something as simple as a pointer that tells you how far you have gone through your table. I suspect that this is because most people do not experience time blindness, and having some kind of pointer of the table isn't really all that useful. This is simply not the case for those with time blindness: time doesn't really mean anything if presented in the wrong way. I hope that the proof of concept that came with Spinetime may help present time meaningfully for those who struggle with time blindness like me.
As someone who suffers from time blindness on a daily basis, I find managing my time extremely challenging. It's been intensely hard to picture how I'll spend my time for a particular day. Having shuffled between multiple time management methods, I constantly find myself at home when I plan my day out on my physical journal. I simply love the tactile feel of using a physical tool to plan out my day.
However, being the visual-oriented person I am, lacking any visual cue of "where" in the time dimension I am at any given day has been a major deal-breaker that has kept me from using physical tools for journalling. Of course, journalling papers with pre-made time tables exist, but they don't tell me what time it really is right now in any tangible manner relating to the table itself—what a bummer.
I've been using ChronoCat (not affiliated) to manage my time lately, and it's been a perfect digital tool—minimalistic, very visual, and easy to use. It provides the user with a time table alongside a visual cue of where they are within the day. However, like I said before, I crave the tactile feel of physical note-taking. It'd also be great if I can plan my day without the distraction that comes with using a full-fledged mobile phone or computer. Plus, being able to plan my day at school would be a great2. I always dream that one day, I won't forget several of my appointments again.
I looked at my own journalling book again, and thought: you know, I think that ChronoCat's approach doesn't have to be in the form of a digital app. And so, I came up with SpineTime.
Daily use: simply strap Spinetime to your ring binder by opening the spine and inserting the linear clock component and start annotating your day. This repository hosts the A6 binder-compatible version.
How to charge the battery: charge with a type-C cable. 5V, obviously. The controller implements load sharing so you'll be powering the circuit directly with the given 5V when charged.
The LEDs of the bookmark are controlled by a separate controller unit. An ATtiny1616 MCU is used alongside a DS3231 RTC.
- Power usage: about 20-25 mA when bookmark is on (3.7V * 25mA = 92.5 mW). Depends on LED color. 7 mA when bookmark is switched off (3.7V * 7mA = 25.9 mW).
- Use duration: about 1d 16h (1000 mAh ÷ 25 mA). Probably a bit lower since we won't (and can't) use the full capacity of the battery.
You will need:
- A soldering iron
- Solder
- Everything from BOM
- A USB-to-TTL adapter such as a CH340 breakout module
- Wire crimper
- Wire stripper
- Scissors
- USB-C cable
- 3 jumper wires (female-to-female)
Steps:
- Print the PCBs. Customize if needed. Note that the gerbers aren't included, so you'd have to generate them first from KiCad.
- Solder components listed on the BOM according to the PCB file.
- 3D print the casing components.
- Use whatever set of cables you have (can be thin) and solder the bookmark's VIN, GND, and DAT through-holes to the cables. Crimp the end into the 3-pin JST housing. Make sure the orientation is aligned correctly with the controller (as JST connectors cannot be plugged in both orientations).
- Put together everything into the casing: the battery, the controller PCB, and the anti-slip rubbers (might need to be cut to the correct size first, fitting the casing's square indents).
- If your battery hasn't been crimped yet, crimp the cables to the 2-pin JST. Then plug the battery connector to the controller.
- Build the firmware. Customize as you wish. You'll need PlatformIO.
- FLash the firmware. Initially, set
SET_TIMEtotruein thecfg.hfile first to set time, then flash again withSET_TIMEset tofalse. You will need a USB-to-TTL adapter. Connect the TX pin of the adapter to the TX pin of SpineTime's controller PCB and the RX pin of the adapter to RX. Note that the PCB doesn't have labels for that.. just check the kicad file to know which is which :P. Then, connect the adapter's ground accordingly. - You should be done! There's no screw assembly required—everything uses compliant mechanism.
Gotchas:
- If you can't flash the ATtiny1616, try changing to another device. Initially I couldn't flash my ATtiny and as it turns out, my laptop has a bad USB controller.
- Some sources online say that SK6812 LEDs are difficult to solder and require lower temp but I found that with hand-soldering, even up to ~350°C is fine. (just don't roast the LEDs for 1 minute straight I guess)
Spinetime, SpineTime, spinetime are all valid. No spineTime or spine_time or anything else.
Note: I built it with LEDs too big so I didn't put on the casing lid.
The actual bookmark (project files, .step file):
The controller unit (project files, .step file):

Schematics:
The model files can be found under freecad/.
Support clip (so your book cover won't wobble when being written on):

The firmware files for SpineTime, spinetime-fw, can be found in the firmware directory.
BOM/bill of materials for this project can be found here.
Thanks to Hack Club for supporting! Initially made for Hack Club Blueprint, but later got transferred to Hack Club Fallout.
Awesome software used:
- KiCad (as EDA)
- Blender (for designing mockup)
- FreeCAD (as CAD)
- NeoVim (as IDE)
- VSCode (as IDE)
- PlatformIO (as embedded programming platform)
- Kitty (as terminal)
- Git (as SVC)
- Artix Linux!
Awesome services used:
- Github (hosting project files)
I used several 3D models for my PCB 3D model:
- https://grabcad.com/library/usb-type-c-smd-6pin-1
- https://grabcad.com/library/2-pins-jst-1
- https://grabcad.com/library/3-pins-jst-1
References (unfortunately not all, just the very notable ones):
- megaTinyCore, awesome core + documentations for my ATTiny: https://github.com/SpenceKonde/megaTinyCore)
- Datasheet of all components I used. I'm not sure if I wanna include all of the links back because I didn't keep track of them, but feel free to ask for the documents I have locally directly to maybe figure out the source.
- NeoPixel guide: https://learn.adafruit.com/adafruit-neopixel-uberguide/logic-level
- Another NeoPixel guide: https://www.digikey.com/en/maker/projects/adafruit-neopixel-berguide/970445a726c1438a9023c1e78c42e0bb
- How to flash ATtiny1616: https://michael-crum.com/attiny1616/
- Changing clock speed of ATtiny1616: https://www.avrfreaks.net/s/topic/a5C3l000000Ubn4EAC/t159058
- Technical problems with SK6812: https://forums.adafruit.com/viewtopic.php?t=188940
- Sk6812 is hard to solder?: https://www.makerfabs.com/blog/post/how-makerfabs-solve-the-oled-sticking-problem
- Order with moisture-sensitive devices recommendations: https://jlcpcb.com/help/article/moisture-sensitivity-level-msl-for-electronic-parts
- Load-sharing circuit: https://www.thanassis.space/loadsharing.html
- SMD resistor guide: https://www.allpcb.com/blog/pcb-assembly/smd-resistors-demystified-sizes-markings-and-practical-applications.html
- Should LED strip's end be connected to anything?: https://www.reddit.com/r/AskElectronics/comments/1bnx4vv/addressable_led_data_out_connect_to_ground_yn/
- TP4056 breakout reference: alltheworld/tp4056#3
- Setting internal reference voltage for attiny1616: https://forum.arduino.cc/t/how-to-measure-supply-voltage-in-attiny/1244260
Huh, am I over-crediting? maybe..
I used ChatGPT for sanity-checking my configurations (including my controller schematic, for instance it caught that I didn't pull the CC pins to ground).







