So, finally, after four years of dreaming, one semester of brainstorming and designing, and two months of all my spare time doing actual fabrication and troubleshooting, the clock is working, although in an advanced prototyping stage.
Normally, this is where I would lay out a step by step process for building your own clock, but I'm not going to do that here. It's just too custom fitted to my wall, and if anything needed re-gearing to make it fit into your space, it would basically need a complete redesign. What I want to focus on here are the essential skills that anybody would need in order to design this, or something like it.
First up is:
No question about it, this is the hardest part of a project like this. It requires the ability to visualize what you want to end up with, and in the context of the tools and skills you have available to you. One of my favorite sayings is, "To a man with a hammer, every problem looks like a nail." Conceptual thinking requires that you have a large enough skill set to solve the problem, and have an understanding of each of those skills deep enough that you can be creative with its implementation. It boils down to a vision of the final project, and a vision of the path to getting there.
For the clock, my major hangup was the motor. I was convinced the only way I was going to be able to achieve the positional accuracy of this clock was with stepper motors. I've never used stepper motors in a project, but I've been wanting to for a long time. I've read books and internet articles about them, and I feel like I have a good understanding of them. I know that they need a dual H-bridge driver and a microcontroller, at least, and that they come in several styles of winding, that one of their strengths is holding torque, and that they are power hungry.
However, I didn't want to change the battery all the time, and I don't need any holding torque at all on this project, so I suspected that they weren't the best solution in this case, but I still really wanted to use them, and I didn't know how else I would get my positional accuracy needed to get the hand to land exactly on a minute mark every time. One day I was reading an article (probably on Hackaday) in which somebody was using a wheel with a hole in it to count light pulses to make a robot go an exact distance with a cheap brushed dc motor. Boom. There it was: the solution, when I wasn't even researching my clock, but just reading for enjoyment.
Every single part of this clock went something like this. How was I going to get exact second or minute pulses? (With a cheap hacked quartz clock movement? With my microcontroller's inaccurate internal clock? From the internet with an ESP8266 wifi module? A DS1307 real time clock?) How would I account for the different schedule on Wednesday? What would I use for power? How would it return at the end of each day? Could I prevent it from running on the weekends? How would I paint my walls? What is the ideal microcontroller for this project?
All these questions and so many others! And every one was a hard-fought battle for the knowledge required to make it happen. Not every single thing must be known during the conceptual phase, however. You just have to know enough to know that you can figure it out when the time comes, or to at least have a couple of backup plans. I won't lie; it's hard. It's why when you post an elegant 3D printed solution to a problem on the internet everybody wants the .stl files. It's why so many books and magazines write complete how-to articles with parts lists and completed downloadable code. If I were starting my journey towards making 3D printed, laser cut, and CNC'd projects with microcontrollers and electronics, I would read, read, and read. Blogs, books, parts supplier's parts descriptions and tutorials. Every day, for years.
This brings us to:
Mechanical Design Skills
For me, this is the easy part. After a college minor in drafting, and 20 years of professional 3D modeling experience, I can usually breeze through the mechanical design portion of a project. I realize that this is not going to be a common experience for the new maker though, so I'm going to break down the design skills into the sub-skills of hand sketching and 3D modeling.
My computer aided drafting students HATE to hand draw their concepts before they jump on the computer and start 3D modeling their parts. They just want to get to the fun part, like they're playing an expensive game of Minecraft. Soon enough though, they realize they can't go any further because they don't have a plan, they can't visualize how their parts go together, and then it is evident that they have no idea what they are doing.
Paper drawings are the solution! I'm not saying you need to break out the T-square and triangles (although that is pretty fun), but some good engineering graph paper, a pencil, and a big eraser will make the design process shorter and faster in the long run. I prefer to draw my projects in full scale when possible. One of the big problems I see when trying to design things in a computer aided drafting program is that parts are often accidentally designed with features so small that they are nearly impossible to fabricate, but it is difficult to get a sense of scale in 3D software. When drawing on paper it is important to draw your objects from more than one side, so that you get a sense of depth and how the parts fit together front-to-back.
I personally think that 3D modeling skills are the number one thing you can learn to improve your maker game. 3D modeling is the Microsoft Word of the 21st century. It enables you to 3D print, or CNC cut, or laser your own designs. It helps you make plans for complicated things you are going to fabricate by hand as well. You should choose a piece of software and learn it well. If you're a student or a teacher, I would suggest Autodesk Inventor, since it's super powerful and it will be free for you. Otherwise it's insanely expensive for the hobbyist. My second choice would be Autodesk's Fusion 360. I've never used it, but it has almost all of the same capabilities as Inventor (with the glaring omission of a gear generator) and it's free. There is a huge hobbyist user base and lots of online tutorials. It can generate .stl files and g-code for CNC fabrication. There are so many other options as well, but try to choose something modern and capable that can grow with you as your skills grow. Resist the temptation to choose a piece of software just because it seems easy to use.
Electrical Design Skills
There has never, ever, ever been a better time to learn electronics. Not only is there so much information on the internet about learning electronics, but newer, cheaper, more powerful, and easier to use components are being released constantly. Companies like Adafruit, Sparkfun, and Pololu are taking tiny, hard-to-solder chips and building easy-to-use breakout boards with them. Microcontrollers and microprocessors programmable in dozens of popular languages, including graphical block-based languages like Scratch and Blockly. The biggest problem quickly becomes choosing a platform to base your designs around.
If I were just beginning my journey into electronics, I would start by purchasing two books: Make: Electronics and Practical Electronics for Inventors. I'm also a huge fan of There Are No Electrons: Electronics for Earthlings and Robot Builder's Bonanza.
I would make it a high priority to learn how to solder and etch circuit boards using the toner transfer method. I would choose a chip microcontroller (like an AVR or Picaxe) rather than a board microcontroller (like an Arduino or Micro:bit), preferably in a language you already know (I only know Basic, so I use the Picaxe microcontroller). This suits my style of projects, which are small, fairly simple, mechanical, and inexpensive.
I hesitated to include fabrication skills on my list here, because so much of what we can build today is built digitally, with lasers and 3D printers and CNC equipment. If all goes well, humans shouldn't have to touch the parts too much on small projects like these. I did drill out all of the holes on my gears so that I would have a perfectly round, more precise hole, and that required a small drill press. The gears rotate on axles made of 3mm threaded rod and 4mm OD brass tubing, and those needed to be cut with a small hand saw. On many of my projects I cast urethane rubber parts with silicone molds. At any rate, you should not hesitate to purchase a tool and learn to use it. It's probably going to cost the same amount of money when you buy it later, and you will have all of the time between now and then improving your skills with that tool.
Persistence and TroubleshootingThis is a tough one. Let me assure you that nothing is ever going to go right on the first try if you are pushing yourself to build and design more amazing things all the time. On this clock, it turns out that infrared light shines right through my 3D printed plastic in the Z axis, so the clock never knew it had traveled one rotation of the minute wheel. It took a week to figure out that it was a mechanical problem and not a problem with my IR emitter or detector, or the code that interfaces with them. The motor driver I chose, the SN754410, draws 25mA all the time, even just sitting there overnight, apparently, and that's enough to drain my 1000mAh battery in just one day. Not cool. I had to switch to a DRV8838, which is more efficient, but required rewiring all of the motor driver circuit and making major modifications to the microcontroller program. The acrylic I made the base plate out of is starting to crack from it's laser cut edges, apparently from an incorrect power setting I used on my laser. I still need to figure out what caused that and exactly what I'm going to do to prevent it. It never ends.
The internet is such a great resource in the aid of troubleshooting. I had my questions answered over on the Picaxe forums when I couldn't go any further on my own. Almost any problem you have, somebody has probably faced it before as well. Sometimes it's best to sit a project aside for a few days to roll it around in your subconscious when things seem impossible. It's important to remember when starting a project that it's going to be hard almost all the way through it, and just get mentally ready for it. I find that documenting my projects online (like this) is a great way to keep my motivation up. I think about how cool some person in some place I've never even heard of is going to think it is.