Final Project Development

This documentation will not only cover the process of final project development (planning), but also will provide an evaluative summary of the final project at the end.

Part 1- Project Management

This is written in retrospect, but I hope that it can effecitvely capture my Final Project development process.

My final project process began around 4 weeks prior to the presentation. Until this point, I had:

  • A clear idea of the final project's purpose and scope
  • Initial concept design in Fusion 360 almost ready for printing
  • No working Arduino that I designed, milled, and soldered
  • Very little effort in programming
  • Very little idea of how the electronics will be connected

I created a task plan of things left to do using the checklist above, but in retrospect, I wish I had a more detailed plan of tasks to complete, rather than just assigning a broad task over the course of a week. I could only partially dedicate my time to the final project during the start of this process, since my school was still on and I was taking assessments, which are really important for my high school diploma. So, the first 3 weeks of the final project process involved working around 30 hours over the weekend. Although, I feel like I didn't utilize this time in the most efficient manner; a large proportion was wasted waiting for long 3D prints.

Triage and SpiralDev
Triage and Spiral Development were one of the most essential project management techniques I utilized. I had massive plans for this project, but being realistic with the timeline and my skill level forced me to reduce the scope of this project.

The bare minimum functions I wanted this project to have was to be able to:

  • Manually control the motors individually using a keyboard as the input device.
  • Solve the rubik's cube independently, using the Kociemba algorithm
  • Achieve a respectable solve time
The core essence of this project is to be able to solve the rubik's cube with the Kociemba algorithm, which on average consists of 20 moves to reach the fully solved state. My triaged 'minimum functionality' still achieves these objectives.
  • Eventually, if time allows, I would also like this robot to solve the cube using the CFOP method, as well as playing out the moves slowly as a tutorial mode for someone else to follow.

Assignment Summary

  • What tasks have been completed, and what tasks remain?
All CAD designs have been completed. I have nearly printed all the motor mounts and connectors. I have started taking measurements and cutting the rods for the structure as well. I have also tested working with one stepper motor and the A4988 driver, but that is only on the breadboard. I also have good progress with the code, but we can only see if it works or not once all 6 motors are moving. Nevertheless, the GUI is completed.
Unfortunately, a lot of tasks remain. I need to figure out how to connect all 6 motors to work at the same time. Since I don't have this working yet, I also can't finalize the code. I also am yet to laser cut a housing box for the electronics, and the most concerning part is that I still don't have a working Fabbed-Arduino (ATMega328P) board, which is required for this project.

  • What's working? What's not?
I have managed to make a single stepper motor work. The 3d prints are coming along really well.
I can't make 2 stepper motors work together, let alone 6. I am getting increasingly concerned, since the breadboard keeps heating up and frying up the drivers. Right now, I don't have any alternative solution.

  • What questions need to be resolved?
The main one is: Will this project work at all?
Let's be optimistic, in which case, the next questions to resolve are about making 6 stepper motors work together and debugging the issues of my Rupino (Fabbed-ATMega328P) board.

  • What will happen when?
I am going to try my best to finish this project, however, I can only manage to present by July 22nd, the last date before the cut-off to the next cycle. In the final 2 weeks, I need to find a way to make all 6 motors at least turning independently, as this is an obstacle that is restricting my progress in other areas e.g. housing, electronics, code; which also need to be completed in the timeframe. Then, I have to prepare a slide and video.

  • What have you learnt?
Firstly, find an alternative to breadboards, even for prototyping. They keep overheating, and stop using them because you will waste your working drivers.
No matter how many attempts something takes, don't lose your patience and keep trying for the next one until it works. Personally, I made 7 arduinos before the 8th worked, and each failed one halved my motivation each time.
Next, be realistic. This is already an ambitous project, so expect to finish 10% of what you initially dreamed. And make sure that even 10% would be sufficient to qualify all criteria.
Don't waste your time whilst you have started the 11-hour print. Do something, or document!
Try to always review your work with your instructor. This might annoy him a little, and create a sense of dependence, but he can save you from waiting for an incorrect print that would take 6 hours, only for you to realize at the end. (P.S.- Thank you Saverio)
Remain disciplined about time management. When you have run out of time on one task and are scheduled to do the next, stop what you are doing and move on. For me, this went against my instincts to finish what I started or get things perfect which could have nearly cost me not finishing my project at all. This doesn't mean that you cannot strive for perfection, even in the tiniest details. But, after the basic spiral is achieved.
And finally, as Neil says, EVERYONE RUNS OUT OF TIME. To combat this, I learnt to work in spirals, and if I manage to achieve even the most basic spiral, I can be satisified with the reassurance of a completed final project.