Skip to content

19. Project Development

What tasks have been completed ?


All the components have been designed or identified.

All the components have been sourced or produced both by 3D printing and laser cutting.

A first version of the mechanical parts of the scanner has been assembled and is ready to be brought to life.

Final Board redone


The main board has been designed, milled, stuffed and tested.

I actually produced 2 of them as the first one had issues which I could not identify.

I later identified the issue which was caused by a distance between the capacitor and the SAMD21E too important leading to an unstable power supply for the SAMD.

I finally milled a third version of the board in case I broke the ones I had to avoid last minutes problems.

On top of that, I collected replacement for almost all pieces in case one burned or broke, from connectors (header and sockets) to capacitors, resistors, LED, motor drivers, jack connector, …

The test I ran on the final board were simply to load the bootloader and test if the board was detected when connected to a computer and check connections using a multimeter.


What tasks remain?

The main tasks that remain is the wiring and programming as well as integration, making covers for everything and packaging it all.

In a nutshell, we have :


  • Install the timing belt between motor and turning plate


  • Wire the components : source the wires, cut them at the appropriate length, strip them and fix a new ending on them
  • Design and produce an appropriate connector for the ESP-CAM and SG90 to connect to the main board.
  • Add a homing mechanism for the vertical motor


  • State machine
  • Homing function
  • Basic interface
  • Integrated interface (OLED + Rotary encoder)

Packaging and integration

  • Make a box and a cover for the electronics
  • Set up wires in an ordered fashion.
  • Make covers for the whole scanner
  • Test

Video editing

  • Make the video
  • Compress the video

What has worked? what hasn’t?


Turning plate

The initial design I had made for the fixation of the turntable I had bought off Amazon, did not cover the assembly and thus I could assemble it conveniently so I had to add holes in the bottom through which I could screw the turntable into the gear and turning plate.

Turntable from Amazon

Timing belt

The timing belt I had was an open one and not a closed one. I had thought that I could find a way to close it but I was wrong…

Therefore I had to had long holes for the motor fixations instead of a simple hole to be able to tension the timing belt. On top of that, the closed one I had on hand was longer than what I had planned and thus I had to increase the distance between the turning plate and the motor to accomodate it.

It was easy because I had done everything parametrically and also it saved me time later because I had not taken into account the aperture of the ESP-CAM. Because of the aperture it was a good thing to increase the distance between the camera and the object.


The initial electronics design that I described in the week 13 did not work because I had not taken into account that it should be placed in my final project and thus that it’s form factor was important.

The position of connection of the rest of the wiring was not problematic but could have been so next time I will try to make it even cleaner and have all connectors in targeted areas to avoid the risk of short circuits, tension on connectors and cable clutter.

I confused the physical and logical pin numbers for the connection. Fortunately, I had only made an error for these two and no mistakes for any other.

As described above, the capacitors that I had placed next to the 5V to 3.3V regulator was too far from the power pins of the SAMD21 microcontroller and prevented it from working.


Controlling the scanner via the rotary encoder proved took me much more time than expected, I had thought that I would find the perfect library to do that but it was not as easy, plenty of project make one but I could not figure how the menu worked despite having a perfectly functional electronic set up and knowing how to display what I wanted on the OLED screen.

I am know thinking that I should have done it without looking for a custom library as it made me lose a lot of time on a not so complicated issue, that I could have solved on my own maybe not in an optimal fashion.

The motors controlled via the motor drivers were very noisy, but fortunately, after discussing it with Quentin, I added microstepping (which I could do programmatically thanks to my electronic design), and it became much quieter.

What questions need to be resolved?

The main questions to answer are :

  • Does it work for scanning objects ?
  • How long does it take to make enough pictures ?

What will happen when?

I have made a planning for the last weeks of development of my final project hereunder.

Note that I am not doing any unique task at any given time because I know myself and I need to do different things to stay alert and also while .

Planning for final development

The idea in the last steps is to get a first version working for everything and then improve in spirals.

In summary :

  1. Spiral 1 : Make it work
  2. Spiral 2 : Provide info about the status and progress on the OLED display
  3. Spiral 3 : Make it beautiful and silent
  4. Spiral 4 : Make it easy to use by providing integrated interface (rotary encoder and oled)
  5. Spiral 5 : Improve the picture quality (mechanical settings and programmable settings)

I also used a task tracker in Trello for more nuclear task definition.

What have you learned?

Overall, I have learned a lot about a lot of things.

If I had to summarize it, it would be:


  • Thinking of integration and its constraints early in the process : Most of the work I had to redo was due to the integration

  • Hardware is hard : Production is hell. I broke so many things that at some point, I decided to always at least two of each component to make sure I would be safe to deliver on time.

Time Management

Working in spiral

We keep hearing about Proof-of-Concept and iterative development but when I came to do it myself the meaning changed from “save some trouble, time and money” to “deliver something that barely works (at least) on time or deliver nothing”. *

Be ready to kill features/activities

In my job, I was already managing the specifications of projects but often we are working with suppliers and cutting in the specifications means “getting less” for one’s money. I already had the habit of looking for compromise but now I realize that I should go further in that direction similarly to spiral but deeper.

Deliver, deliver, deliver.

If something is not working, and cannibalize on time I should spend on something else, I have to stop doing it and move on to something else.

This is triage.

But actually that situation will happen, you know it in advance and therefore should plan ahead. This is the great return of supply vs demand time management. I have learned a lot by applying it but will clearly keep applying it as it changed my perspective on planning things.


Document as you go

Neil keeps hammering this and sometimes I felt it did not make that much sense but when mounting the video, I realized how difficult it was to capture the work that I had done to get there.

Make your process of documentation

As a corollary to the previous point, documenting should be easy enough to be done continuously. However documenting anything takes time which is why, we naturally don’t do it that way.

To make it easier I found it very important to make a process to document my work. That means having a file structure in advance capturing picture and videos continuously, having an automated pipeline to compress pictures.

Another part of this process is having a pen and a small notebook in my pocket at all time. This way I can document lightly in a synchronous manner and document properly afterwards.

Last update: June 17, 2021