Custom Job Hour Meter Display

by Gautchh in Circuits > Arduino

1643 Views, 11 Favorites, 0 Comments

Custom Job Hour Meter Display

PXL_20230504_095833072.jpg
75 (1).gif
PXL_20230504_095844924.jpg
PXL_20230504_095901829.jpg

Hi everyone,

On this Instructables, I will explain how I manage to build a Job Hour Meter using an old hour meter that I hacked using an Arduino Nano.

The idea is to be able to configure on which type of task the hour meter starts running.

The operation is rather simple, a python script runs in the background of the computer, it sends information through the serial bus and the Arduino Nano interprets them.

It's really nice to have a mechanical display, it allows you to better understand the hours you spend doing something. In my case, I configure them to track in real time the hours that I "waste" playing League of Legends.

Follow the steps below if you want to make yourself a custom Job Hour Meter.

Supplies

PXL_20230502_092531202.jpg

To make the custom Job Hour Meter Display, you need :

  • 1x Arduino Nano
  • 1x Hour Meter
  • 1x USB cable
  • 2x Screw
  • 1x Tactile push button 6mm x 6mm
  • 2x printing parts
  • 1x Foam 200mm x 200mm (Optional)
  • Some wire

Required tools :

  • A soldering iron
  • A 3D printer
  • A glue gun
  • Some screwdriver
  • A cutter
  • A pair of pliers
  • A wire stripper

Optional tools :

  • A Dremel
  • A multimeter
  • A 3r hand
  • A vice

Disassemble & Hack the Hour Meter

PXL_20230406_125825909.jpg
PXL_20230406_131142399.jpg
PXL_20230406_133229781.jpg
PXL_20230424_132908149.jpg
PXL_20230406_125842778.jpg
PXL_20230406_131120862.jpg
PXL_20230406_131128630.jpg
PXL_20230406_131539000.jpg
PXL_20230406_131608930.jpg
PXL_20230406_152909187.jpg
PXL_20230406_153010204.jpg
PXL_20230406_153111332.jpg
PXL_20230406_153151899.jpg

I didn't manage to understand how to disassemble the hour meter without breaking it. Finally, I use a Dremel to cut the back of the plastic enclosure to access the electronics PCB.

Check picture 5 to 13 to see the full disassemble process and how works an hour Meter.

The Hack consists of removing the electronics to replace it with an Arduino Nano in order to drive the coil, which itself drives the gear set.

The picture 3 show, with an oscilloscope, what signal is sent by the control board.

  • The board is powered between 4 to 8V
  • A positive pulse at 4.5 V lasting 120ms
  • A neutral phase lasting 820ms
  • A negative pulse at -4.5V lasting 120ms
  • A neutral phase lasting 820ms

After knowing how the mechanism works, it is rather easy to replicate the control with an Arduino.

int on_off_time = 1000; // Modify this variable to increase rotation speed

void setup() {
  pinMode(9, OUTPUT); //Define Pin Mode
  pinMode(10, OUTPUT);
}

void loop() {
  digitalWrite(10, HIGH); //Positive pulse
  digitalWrite(9, LOW);
  delay(on_off_time);
  digitalWrite(10, LOW); //Negative pulse
  digitalWrite(9, HIGH);
  delay(on_off_time);
}

Additional information :

  • "on_off_time" at 1000ms is equivalent to a standard rotation of the display (1 hour = 1 hour)
  • "on_off_time" at 8 ms is the maximum speed to increase the value display (1 hour = 125 hours)
  • "on_off_time" at 7 ms is the exact speed to decrease the value of the display (1 hour = -143 hours) (I can't explain why it works like this)

3D Enclosure

3D_enclosure.jpg

The 3D enclosure is a 2 parts model which are assembled together using two screws.

Arduino Nano USB Cable Modification

PXL_20230502_090012715.MP.jpg
PXL_20230502_090006405.jpg
PXL_20230502_082449923.jpg
USB.jpg
PXL_20230502_082558977.jpg
PXL_20230502_083400010.jpg
PXL_20230502_084658928.jpg

I wanted a small 3D box, so I had to modify the Arduino to remove the USB port to reduce the space.

Modification steps are :

  1. Desolder the USB port
  2. Solder small wire to each pad of the USB port (VCC, GND, D+, D-)(Check picture 4)
  3. Solder each wire to the corresponding wire of a USB cable
  4. Glue everything with a hot glue gun

Assemble Everything

PXL_20230502_092531202.jpg
PXL_20230502_093048899.jpg
PXL_20230502_093616715.jpg
PXL_20230502_093911598.jpg
PXL_20230502_094255129.jpg
PXL_20230502_094330970.jpg
PXL_20230502_094813860.jpg
PXL_20230502_094942816.jpg
PXL_20230502_095119418.jpg
PXL_20230502_100243159.jpg
PXL_20230502_100611470.jpg

To assemble everything together, follow the steps below :

  1. Desolder the Reset button of the Arduino Nano
  2. Solder two wires with a length of 5 cm with the switch at the end (Check picture 2 & 3)
  3. Cut three pieces of foam to reduce noise from the mechanical (180mm x 40mm / 40mm x 40mm : To surround the top box) (70mm x 40mm : To cover the bottom box) (Check picture 4)
  4. Insert the Hour Meter (Check picture 6)
  5. Glue the front piece of the Hour Meter and fix it with 2 M3x16mm screw and 2 M3 nut (Check picture 7)
  6. Position the pieces of foam (Check picture 8 & 9)
  7. Solder the two output wires to the pins D9 & D10 (Check picture 11)
  8. You're done (Check picture 12)

Software

Arduino_Python.png
JOBMTR_Ico_V1.png

The project is a combination of two scripts :

  1. A python script that runs in the background of your computer that sends data through Serial Bus
  2. An Arduino script that runs on an Arduino Nano that reads the serial bus and drive the hour meter display

Modifications to be made :

  1. If you don't choose D9 & D10 to wire the hour meter, you can change it inside the "Hour_Meter_Arduino_v1.ino"
  2. Choose the COM port corresponding to your USB port inside the "Running_App_Hour_Meter_Time_LoL_v1.py"
  3. Choose the process you want to show on the Hour Meter inside the "Running_App_Hour_Meter_Time_LoL_v1.py"
  4. Make sure the "Running_App_Hour_Meter_Time_LoL_v1.py" is constantly running on your computer if you want to drive the Hour Meter display
  5. You can convert the "JOB" logo to .ico for your .exe file

To convert the python script to an .exe file, you can use the python package "auto-py-to-exe".

Final Result

PXL_20230504_095720081.jpg

I hope you enjoy follow this Instructables.

I am happy with the final look, I love adding gadgets to my desk !


Have a nice day !