Slow Diary Cube – Midterm Report

A prototype version of my slow diary box/cube: I can speak to it once every 20 seconds, by holding its both sides and keeping it close. Recordings show up in real time on the webpage. After 3 encounters, the box opens itself up. On the display inside, it says:


Hey, friend, nice to finally meet you :)

Thank you for being so kind and patient when you talked to me.


all code can be found in:


Unfortunately I don’t have a video of the fully fabricated box, but here are some photos. This is the first time I used the woodshop!! I lasercut the box, used the belt sander, oiled and painted the wood. Inside the box, the screen is mounted through a piece of white acrylic, on top of the protoboard I designed and soldered with standoffs.

Prototype version

In order to make play testing less hectic, the recordings’ auto cut off are set for 5 seconds. Ideally in its actual implementation, the max length for a recording would be set at 1 min 30 seconds, with a 24 hour interval in between.

lots of wires:

Phase I: Box interaction design

Building on top of the basic toggle button interaction from last week, I started researching and experimenting with different sensors, in hopes to find what feels the most natural, intimate and easy to implement. Eventually I ended up with one Adafruit VL6180 Time of Flight sensor and two photocell censors. To interact, the Time of Flight detects that something is within a certain range, and I have to use my hands to cover both sides, which would influence the readings of the photocells. Only when all three sensors reach a certain (low) threshold would the recording function be triggered, and indication LED lit up. Here’s a video demonstrating it:

There are two ways to turn off the light / stop the recording: in the demo video, the first time it automatically turned off after 4 seconds by using millis() , and the second time I manually toggled the sensors to turn it off. In the final version I will increase the interval to 30 or 45 seconds.

I’ve also added a slight delay after the LED lights up and before writing the BLE characteristic, so that the indication light would light up first, giving the user a bit response time.

After deciding on the sensors, I can finally envision what the cube might look like! Thanks to feedback from Junoh Yu the architect, I have a design now:

Phase II: Arduino + web recorder

Got lots of coding help from Stacey and basically stripped the JavaScript from addpipe’s Recorder.js demo.

Phase III: Display, motor, prototype

1) Replacing LED with an Adafruit Neopixel strip

Using the Adafruit Neopixel library

I’ve learned that the maximum value  millis() can hold is 4,294,967,295, which translates to 49 days (even though in a longer time implementation it doesn’t seem that reliable); so I abandoned RTC and just used  millis() to enable the wait time between inputs.

Here is a complete demo with sensors and neopixel. The recording requires 20 seconds in between being triggered.

2) Use servo motor to open box.

Wake up middle school physics knowledge! I Incorporated the principle of leverage by making a box open gear. Kevin 3D printed a bunch of levers for his p-com final, so conveniently I lent one from him and cut it down.

I quite like the size of this box too so I continued to use that for the prototype.

Phase IV: Fabrication


The box is not even remotely done and I already have a ton of people to thank: Junoh for his design advices, Stacey for debugging some seriously tangled code, Jezzy, Anh and Kevin for lending me sensors and lights and motors (and providing support throughout), Lulu, Alan and Ben for cool fabrication tips, Nick Boss for helping with documentation!!

Leave a Reply

Your email address will not be published. Required fields are marked *