Hour-Link Clock
I came across this image during a random stroll on Pinterest, and immediately decided I needed one for myself.
Supplies
Arduino Uno (or compatible board)
Optional to improve accuracy and add an autocorrect feature in the future: DS3231 RTC module
28BYJ-48 stepper motor + ULN2003 driver
Bicycle chain - (I used 94 links but 96 is better by multiples of 12)
Low-number sprocket, (I used 7 teeth but 8 is better for the same reason, also make sure the sprocket can connect to the stepper motor)
Plastic bowl in your favorite color and suitable for you (mine was bought in cream and painted with a stone texture)
Climbing wire (for digits) You can also buy ready-made digits at craft stores, preferably not Roman to make it easier to read.
470UF electric capacitor
5V 1A power supply
Duepoint wires for wiring
Hanging angle
Simple drill to create holes in the bowl for the motor and for hanging.
Optional: Additional diode and capacitor to add an automatic gap correction feature from power outages.
Connecting the Power Supply
Cut the power supply wire a reasonable distance from its end, and strip both sides, add a 470UF capacitor and make sure the polarity is correct, the side with the minus is marked on the capacitor itself with a gray stripe. Use the female side of the two MTF wires and the capacitor's spikes to make the connection if you don't have soldering skills like me.
Now, connect the official end of the power supply to the Arduino board, and insert the two MTF wires into the plus and minus inputs on the ULN2003 driver, this way the motor will receive full power directly from the power supply without burdening the controller.
Connecting an RTC Time Model to Arduino
This step is not relevant in the attached code, which does not use the RTC but rather the Arduino's internal counter. Skip this step if you are testing the product for amateur purposes.
Now let's add an accurate time model, although the clock will work without it, if we want to be accurate over time, it is worthwhile and does not burden the costs. I used a DS3231.
Connect the plus of the model to the 3.3V output on the Arduino, and the minus to GND.
C to A5 on the Arduino and D on the RTC to A4.
Connecting the ULN2003 Driver to the Controller
You won't even need wires at this point!
Just plug the pins on the driver into the controller inputs, IN1 straight to D8 and IN4 to D11 with everything in between...
Preparing the Time Display
Create twists with pliers from the climbing wires according to your personal taste, I chose a font I liked, printed it on a sheet of the appropriate size and tried to stick to the template.
To straighten the climbing wires if you are using the ones thrown away at construction sites, use a hammer on a strong and durable surface.
Glue or solder the numbers on the links on their outer side, according to a measurement of a fraction of 12 of the circumference of the chain, I used metal epoxy after trying with super glue. Make sure they do not interfere with the proper rotation of the links
Generating the Code
This is just basic code, it doesn't use RTC and simply runs a movement every 1.57 seconds or so. If your data is different in terms of the number of teeth on the wheel or the number of links on the chain, just enter them in the relevant line at the beginning of the code.