Electronics

Make an anti procrastination box – with Arduino

I had a spare segment display and wondered about what I could make out of it. Hence was born the idea of the anti-procrastination box : for those of us who are a little too close to their smartphones but need to stay away from it from productivity reasons, put the phone in the box and set the interval during which the box ought to stay locked.

The parts:

  • 1 Arduino nano
  • 1 5v solenoid
  • 1 4 digit 7 segment display
  • 1 logic level mosfet (I used a TIP122G instead because it was lying around but it’s not the best choice at all)
  • 1 diode
  • 8 330ohms resistors
  • 2 270ohms resistors
  • 1 100ohms resistors
  • 2 push-buttons
  • electrical wire
  • fimo clay (or a 3d printer)

Circuit diagram:

The diagram represents the circuit when the top of the box is open : the arduino is viewed from the top whereas the back of the display is shown.
box_circuit

The layout of the connections is far from ideal. I should have planned better but I recognized my mistake having already soldered half of the wires.

Afterwards, I think I should have added two components a switch to turn the arduino on and off and a buzzer to signify the end of the timer.

A pdf version is available here.

The code

The repository is here.

The code is written in C++ : I like to use classes, it keeps things all clean and readable. We are using 5 classes for this application:

  • Timer : handles the timer mechanism. Uses the internal clock of the arduino to keep track of the elapsing time.
  • Lock : deals with the solenoid by controlling the transistor. Can be either open or closed.
  • Button : state can be interrogated ; either held, pushed or released.
  • Display : controls the segment display. Used through its show() method which accepts any int between [0, 9999].
  • PinRegistry : where all the pin numbers are declared.

Soldering the components

We start by soldering the pins headers of the arduino nano.

CKF4AsS
IFbbxoU

Testing and preparing the components :

mrzwxrs
D6EfVHh

Soldering the resistors to the display connections :

ayP5vjt
G0Z98ss

Meet the Arduinoctopus

YPtne2d
QxYHDAi

Soldering the connections to the display :

qnXivPg
UuybeZI

Yay nothing burned yet !

Preparing the box

We need to cut a hole on top of the box in order to embed the display + the 2 buttons

rFtr5Yx
llKDlEr
RTJ9W6J
5Sm7O7B

Ok it is not that straight…but since the box will be painted in black it should be ok (yeah I told myself that…). About that, let’s paint the box !

fFjZNhy
gbP44Ak

Making the lock :

Since I don’t have a 3d printer, I used some fimo clay which was easy to re-model and glue. It does the job pretty well.

D6EfVHh

We need to make a little triangular piece on which the solenoid will slide when the box is being closed. The solenoid will then relax itself under this piece, thus preventing the box from opening.

OVK3L26
4bDfBMc

We also need an L-shaped part to serve as a base for the solenoid.

Now to embed the circuit, tweak a few parameters and we’ll be all set !

TYgaSUI
4qxqiSR

The result

CBq7G1L
Bf4vEMZ

You can find a quick video of the box in action here.
I hope that you enjoyed this project and that it gave you some ideas in return. Please drop me a line if you want any explanation/if you have any critic or for a new tutorial idea !

1 Comment

  1. Hello! We are teacher students and we are trying to build the savebox you’ve made. But we need your help! Can you tell us how we can download the codes to arduino library? We can’t find the right file. When we are trying to download the code, it keeps saving them in html. instead of cpp or h. Hope I made my problem clear.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.