Introduction: Build the Ultimate Darkroom Timer

About: Black and White Artist Photographer, who loves the great outdoors and adventures.

The goal of the darkroom timer build is to make it without much fuss, it's inexpensive and accessible to anyone with basic knowledge.

Darkroom timer are simple but don't work the way they should. At least time based ones they are linear. Photography isn't linear. F-Stops are logarithmic, i.e twice the light or half the light through the lens aperture. The enlarger is essential a camera in reserve. This easy to build darkroom timer will not only show exposure in time but it also display in F-Stops.

F- stop printing was originally made popular by the award winning printer Gene Nocon in 1987. If you want the full explanation, you can find it in his book Photographic Printing (now out of print, but available on the second hand market).

The feature set:

  • Time is incremented in F-Stops intervals
  • F-Stop Intervals can be set to 1/2, 1/3, 1/6, 1/12
  • Strip test function for six steps of 1/2, 1/3, 1/6 or 1/12
  • Display shows both F-Stops and time side by side
  • Simple one click interface
  • Pause/Cancel
  • Enlarger on/off control for focusing etc
  • Brightness is dimmed automatically when exposing.
  • Brightness can be adjusted in focusing mode.
  • The last time/F-Stop setting is automatically restored on power up.
  • Settings are stored in the device.
  • Supports foot pedal
  • Sound buzzer for each second and strip step.

Supplies

Back to building this really easy timer. I choose components which are off the shelf and that are easy to connect together. I wish to make this project without much soldering or any at all. The first part covers the timer, the next part will cover the higher voltage part such as the relay and power supply. Part one covers pretty much the main guts of the project. It based on the TM1638 module. This module has eight LEDs, eight push button switches and eight 7 segment display perfect when combine with an Arduino Uno or ESP 8266 based board.

The following components are available on Amazon. The links are associated which cost you nothing but support my


The following components are available on Amazon. The links are associated which cost you nothing but support my YouTube channel.


Step 1: Wiring Up the Arduino UNO Prototype

TM1638 7 Segment Display Keypad & LED nodule: This 8 digit seven segment display module uses a TM6138 controller allowing full control of the display using just 3 digital pins on a micro-controller. In addition to the seven segment display there are 8 individually controllable 3mm LEDs and a keypad with 8 push buttons arranged in a single row. These can also be controlled through the TM6138 IC and so require no extra digital pins. A standard 5 pin header provides easy interface to the module from microcontroller.

It couldn’t be easier, five wires which usually come with the TM1638 7 Segment Display Keypad & LED nodule are connected to an Arduino Uno board. That’s it.

Connect the TM1638 module to Arduino Uno as to the schematic. The Arduino will be used later as a SERIAL/USB converter for the ESP 12 board.

Step 2: Download Code and Upload to the Arduino UNO Board

Once you’ve connected you Arduino up, it’s time to upload the Darkroom Timer code. The code is available from my GITHub Repo

  1. Download the code from https://github.com/glyons/Darkroom-Timer
  2. Change the folder name to ‘darkroom_timer’ then all the code should be available in the IDE when you launch it.
  3. Install Arduino IDE latest version
  4. Open Arduino IDE
  5. Library Manager Install the module tm1638plus
  6. Compile the code




Step 3: Try Out the Strip Test Procedure

Check the my YouTube video, it's demostrates in detail the features of Timer.

The strip test procedure is simple without much complexity. The strip test is in full, halves and thirds, sixth, twelfths of stops. The test is divided into six strips.

The photographic paper is split into six equal divisions by use of a piece of cardboard to block the light.

It operates as follows, set the mode to either full, half, third, sixth, twelfhs. Set the base time and then run the strip test procedure.

  1. Expose the entire paper to the base exposure
  2. Cover 5/6 of paper from the right hand side when you hear the beep
  3. Then move to 2/3 of paper again from the right when you hear the beep.
  4. Then half of paper
  5. Then 4/6 of paper
  6. Then the last strip 5/6.

Step 4: Wiring Up the ESP 12 Relay Board

*You probably need to solder in the pins to the ESP 12 board. After that you can use the DuPont cable supplied with the ESP12 relay board.

The code is compatible with both the Arduino and the ESP 12 1R-MV board. It is very simple to wiring the ESP 12 1RMV and TM 1638 together.

Connect the following :

  • IO12 to DIO
  • IO13 to CLK
  • IO14 to STB
  • GND to GND
  • 3V3 to VCC

Step 5: Uploading the Code Via Serial

Previously I used an Arduino UNO for the prototype. Now in this step I’ll use an ESP 12 1R-MV Relay board

This board does not have a serial to USB converter for uploading the code onto the ESP 12 like the Arduino UNO.

Option 1: However the Arduino UNO can be simply used as a serial to USB converter. Connect a jumper from RESET to GND. Your Uno is now a TTL-serial-to-USB converter. TX, RX, and GND are the connections.

Option 2: Use a USB to Serial converter.

On the ESP 12 1R-MV board, use the jumper cap to connect the IO0 and GND pins together. Then wire up the TX, RX, 5V and GND for the Arduino or the USB/Serial converter.

Tip: If things don’t communicate switch around the TX and RX. Also try uploading the flashing LED example onto the ESP 12 1R-MV Relay board,to see if things transfer correctly.

Step 6: Upload the Code to the ESP12 Relay Board

Choose ESPino board in the board list in the menu.

Note: The code is compatible with both the Arduino and the ESP 12 1R-MV board. The GPIO pins are found in the code. To have support the ESP 12 1R-MV chip inside Arduino which is based on the ESP8266 chipTo have support the ESP 12 1R-MV chip inside Arduino which is based on the ESP8266 chip

Step 7: Wiring Up the Beeper

Solder two wires to a beeper and connect it to GPIO pin # and GND.

Step 8: Safety Disclaimer

If you are using the high voltage input on the ESP12-1R-MV board please ensure you to protect yourself and others. I am not responsible for your safety please consult a professional electrician. If you are not qualified please use the low voltage input or the USB power on the board.

I am using an extension power cable which I’ll splice. Do not do this unless your are qualified.


It’s important to use end sleeves for the power cables.

End sleeves are used when a perfect connection on a cable end is needed. This avoid splayed strands and reduce the risk of cable breakage. Moreover, they create a lasting contact pressure and a large contact area. Upon crimping, a trapezoidal or square geometry is formed.

  • Split a 3 metre extension cable, at 1metre point before the plug part.
  • Strip the wire on both sides
  • Rejoin the neutrals (blue) wire together and cramp them into one cable end sleeve. If you have no cable end, solder the wire together.
  • Rejoin the earth wires together and solder them or use a electrical connector.
  • The live wire should feed one side of the relay and the other side of the relay to the plug part of the cable which is for the enlarger.

Note: in my video part II of the Darkroom Timer, I use an adapter which I take apart but it's beyond the scope of this article.


Step 9: More on Blog

The code is open source and more features can be added by anyone to the timer.

You can check out my blog https://gavinlyons.photography and my YouTube Channel


A 3D enclosure print will be available once I've printed it and tested it.