Introduction
In part three there’s a lot of firsts for me. Let me explain, first I used Fiverr for the 3D design. This article is not sponsored I paid everything with my own money. Secondly I used AI to optimised the code just for fun by the way it’s complete crap at writing articles regarding darkroom in fact it’s quite funny however it mixes thing up.
Designing the 3D Print
There are now two boards in the build, the ESP12 with dimensions of 80 x 50mm while the TM 1638 is 76mm x 50mm. Meaning the original Thingiverse design would need to be longer. However it should be able to fit the TM1638 in the lid part. So ask Dila on Fiverr to modify the design as follows
- On the top plate add ‘F-STOP Timer’ embossed
- Embossed Buttons
- First button – Circle with an X inside (It’s the cancel button)
- Second button – a Bulb
- Third button – a rectangle split into three equal splits
- Fourth button – a Sunshine (It’s for brightness)
- Fifth button – +/-
- Sixth button – Minus symbol
- Seventh button – Plus symbol
- Eighth button – A Play Symbol
- Expand the width by 40mm on the top plate and bottom box to the right. (The display and buttons goes to the left) Also increase bottom box by 20mm too. However keep the exact placing for the screw hole, window and buttons – i.e the TM1638 board should fitting inside as the original design. The idea here is to allow more room in the box to fit another board.
- The final file should be STL for 3D printing
- Would be nice a video rotation of the pieces for my YouTube video which be in part II of this video – https://www.youtube.com/watch?v=FrKieZ3YB0c
Dila delivered the files and video right on schedule so now it’s time to get it printed.
Optimising the Code
I decided to see if I could optimised the code using Visual Code and Continue Plugin – ‘the open-source autopilot for software development—a VS Code extension that brings the power of ChatGPT to your IDE ‘. Which utilises chatGPT AI. I know that sound complicated and I probably lost you but actually its quite simple but of course just fun to do it!
Let upload the code again and test
Storing settings
One limitation with flash memory is the number of times you can write data to it. Data can be read from flash as many times as you want, but most devices are designed for about 100,000 to 1,000,000 write operations.
Implementing the Beeper
I know I left this to the end. Simple enough but rather important to complete especially the strip test feature. The buzzer allows you to concentrate on moving the card when making a strip test easily without the need to look at the timer.
- It beeps every second during a exposure (except in strip test mode).
- In strip test mode it only beeps one second to indicate you should move the card to the next position.

Printing the 3D Design
I loaded up in Cura the 3D model to see how it would render. It seems not so bad at all.

Improvements and Future Ideas
Some possible improvements and ideas.
- Add pedal switch
- Enabled/Disable Beeper
- Over the air firmware updating
- Log you darkroom activity with data logging
- Add temperature and humidity to the timer feature
- Log temperature and humidity
- Additional relay for switching off the safelight.
- Control the Darkroom Timer with an Android
Add pedal switch
This should be easy to do, just by soldering two wires to the button switch and then onto a 1/4″ jack.
Enabled/Disable Beeper
This would be a software update where you press the cancel and brightness button together, to switch the buzzer on and off. Maybe a bit of thought is needed here to make the improvement smarter. Maybe the option could be ‘buzzer is off for exposure greater than 120s’. Options could be bEEP OFF, bEEP On, bEEP 120.
Scaling
Obviously add scaling to the timer when going from a smaller print to a larger print would be a nice feature to do. One way of doing this automatically, would be with an ultrasonic module in conjunction with a temperature and humidity sensor. Example
Over the air firmware updating
OTA (Over-the-Air) update is the process of loading new firmware to the ESP32 board using a Wi-Fi connection rather than a serial communication. This functionality is extremely useful in case of no physical access to the ESP32 board. If you want to update the code – firmware, why not enable the WIFI on the ESP to allow sending the code to Darkroom timer. I kind of like this example.
Add temperature and humidity to the timer feature
This is a straightforward mod by adding a DHT 11 sensor to the controller board.
Log your Darkroom activity
Each exposure and strip test sequence is logged onto a web page stored on the ESP, viewable over WiFi or the an Android app.
Session, Number, Time, Type, Exposure Time,
Control the Darkroom Timer with Android
- Start and stop the timer
- Turn on the focus light
- Read temperature and humidity
- View the Darkroom Timer Log.
Yes this also possible! Example and this example
