Introduction: LittleWork: Working Hours Notifier

Have you ever been counting down the minutes till the end of the workday? littleWork working hours notifier will take care of that for you!

This project was built at the Taipei Hackerspace 2014 June Instructables Build Night with littleBits.

As the time goes by in the office, I am probably not the only person who keeps wondering - how much is left till I can head off to hack on something! Now with littleWork I can see much better whereabouts we are during the day?

The required parts:

Step 1: Mount the Servo

First let set up the centre of the dial: the servo.

Cut a suitable hole in the cardboard with the craft knife. Can mark the outline of the servo to make it easy. It should fit tightly in there. The cardboard should be big enough to be a good sized display. To thread the servo through the hole, disconnect it from the littleBits module first.

Can use a slider module to test easily the swing of the servo (it's basically a tunable "analog output", similar to what the Arduino module will provide later).

The servo's arms should have a good range over the board left-right. The range can be anywhere in the slider's range, don't have to be in the beginning or end. If the arm of the servo does not cover big enough angle symmetrically, then unscrew the handles and re-screw them so their angle range works for this.

Step 2: Mount the Dial and Add the Display

Mount the stick on the servo's arm with rubber bands or some other way..

Add the rest of the circuit:

  • attach the power to the arduino module
  • connect the servo to d9 and switch that pin to analog mode
  • connect the buzzer to d1 if you want to use it

Using a bit of trial error output some analog values to the servo and see where the dial points to. Calculate the time of your lunchtime if there's one, plus the start and end times on the display. Set the dial to the appropriate values, and mark the angles on the board.

E.g. in my example start work at 8:30am (that's "8.5"), and work till 6pm ("18.0"). Lunchbreak from 12 noon till 1:30 (that is "13.5"). The analog output with the servo setting is between 0 and 148 from work start till finish. In my case:

  • Set the analog out to "0" and mark - day start ("g'day")
  • Set analog out to "148" and mark - day end ("off")
  • Set analog out to (12-8.5)/(18-8.5)*(148-0) which is approximately "55 "and mark - lunchbreak start
  • Set analog out to (13.5-8.5)/(18-8.5)*(148-0) which is about "78" and mark - lunchbreak end

If your servo values are different and your times are different, this example will help you calculate the right value.

Step 3: Let's See the Time Fly

Connect a computer to the board over the USB.

The source code is in the imrehg/littleWork repository on Github. It has two main parts:

  • Arduino code: modify it if you connect the servo and buzzer to different pins (servo can only work with d5 or d9, buzzer works with any remaining output)
  • Server code: the computer needs to run this.

In the server code you can modify the servo analog output values you found for day start and end (anything in between is linearly scaled), the work start and work end time, the Arduino's device to connect to, and such things...

The server code needs Python to run and also pySerial. It should work with both Python 2.x and 3.x

When you start up the Arduino part, it should go to the day's start. When the computer connects to it and sends it the current time, the display will jump to that part within the day. When the day finished, the buzzer will signal that "you are done!" by two quick beeps (some people might find it pretty rough notification)

* * *

Now you can concentrate on your work and let littleWork take care of looking out for the time to finish for the day. Attached a 9 hour workday compressed to 30 seconds to show you how littleWork looks in action.

And by the time I finished writing this up it has just turned midnight to Saturday morning - happy weekend. :)