Skip to content

19. Project Development

June 1, 2022

This week I’m documenting some of the “housekeeping” of the final project. Much of the details about the project can be found on my worklogs, or on the final project page itself.

There are a lot of details about the final project that can be found in the worklogs.

These weeks are especially pertinent to the final project:

Week 15 Worklog

Week 18 Worklog

Checklist

What tasks have been completed and what remain?

(I don’t know how to do the checklist thing in mkdocs, so I’m just going to make a list here.)

Tasks that have been completed:

  • Design work for mechanical
  • Encoder testing
  • Design and production of circuit boards
  • Capture of encoder data from SAMD11/SAMD21 boards
  • Serial data transfer to PC
  • prototype software
  • prototype of physical mechanisms

That list doesn’t really look like a lot, but it’s amazing how much time it took to get to this point.

Tasks that need to be completed:

  • Final production of 3d printed parts
  • cutting carbon fiber tube
  • machining aluminum base plate
  • Machining end effector (I’ve decided to go with stainless steel If I have time.)
  • integrating electronics
  • Software!!!
  • Software!!!
  • Did I mention software?
  • Making the thing look nice
  • Making a video, as I expect that’ll take me some time.
  • A thousand other small details.

Schedule

This is the schedule I have for the final project until my presentation.

I’ll be spending the next week working on getting the software working and collecting data that is useful. I’ll focus more on application programming using Processing.

I need to focus on being able to get data from polar coordinates from the various rotary encoders into cartesian coordinates.

I’ve created a rough prototype of the mechanical section that is a limited set up (just a couple of the rotary encoders, not the entire system) for testing purposes. I will now start transferring that over to the final design. I’ll be 3d printing and manufacturing the final body and structure.

Then the following week, I’ll be focusing on fit and finish. (Though I have already started focusing more on this in the past week, but there’s still more that can be done.)

Finally I’ll finish up any documentation, create the slide and video.

If I have any time, this is when I would like to try some experimental aspects I’ve been hoping to include, but I haven’t had any time to work on.

Challenges and Successes

What’s worked and what hasn’t?

This is easy, simply put: What’s worked? Not much What hasn’t worked? A lot of things.

What’s worked?

What has worked nicely are the electronics. After a long struggle with Attiny412’s and SAMD11’s, I had learned enough to make a SAMD21 board that was very successful from the beginning. I even was quite confident enough to make a logic level converter to transfer the rotary encoder’s 5v signal to the 3.3v signal necessary for the SAMD21.

I’ve also managed to do a decen job of designing the physical aspects of this project. I originally started with OpenSCAD as just a quick and dirty sketching tool, but I’ve stuck with it for the entire project, and it’s worked well enough.

And making the physical parts has been a task that’s been pleasant.

However, it’s one of those things that I wish more has worked and been ready to go before now.

And I will say that I’ve been pretty good about writing documentation as I’ve worked on this final project.

What hasn’t worked?

A number of things haven’t worked.

I struggled forever trying to get the interrupts on the Attiny412 to work and read the rotary encoders. After a while I learned that the Attiny412 was having issues with this, so I moved on to the SAMD11. Unfortunately, once the Arduino bootloader is loaded onto the SAMD11, there’s almost no memory left to do anything useful. So that was also not very helpful.

Finally I moved to the SAMD21, and it had very few issues compared to the other two boards, but I still struggled with using the rotary encoders on the SAMD21.

I also struggled with getting the libraries to work with rotary encoders.

I’ve struggled with Processing. Partly because it can’t hadle serial data well, but also Java is a fairly new language for me, and it’s taking me a while to get used to it.

I’ve never been a good programmer, and this has just made things worse for me.

What questions need to be resolved?

There are a number of questions to be resolved.

One will be whether I can create a 3d model of the actual project, or if I will simply have a 2d construct that I use for the output. I would like to do the 3d version, but I may not have time.

The other big question is how to collect the data for output, and then input into another software. I’ll have to start working on this aspect of the program.

There are so many unresolved questions, that I cannot list them all here. The biggest question I have is: will this thing work at all? I hope so.

What I’ve learned

I’ve learned a lot. Especially about some small little things about the SAMD21 processor, how to build it, how to program it, and especially that if you use someone elses bootloader, make sure to closely read their documentation in case they do something like not enact the interrupts on pins 2 and 3.

I’ve learned that Processing isn’t all that it’s cracked up to be, and that it chokes on too much serial data coming in, while the Arduino serial monitor has no problem keeping up. This has caused me a lot of issues, but it helped me start preparing for eventualities and broken code, trying to work with error correction.

I’ve learned that sometimes you’ve got to spend as much time as it takes to fix a problem. You can’t simply use “supply side” timing, because there are bottlenecks, and if you can’t solve that one problem, then the rest of the system grinds down and will not work. Sometimes you have to take as much time as it takes, to fix the problem before you can move in.

It’s also the same way with learning a new skill or technology. It’s impossible to pick it up and go forward immediately. It takes time to learn , and when creating something new, it’s going to take time to understand things throughly to become useful. No matter if there are problems or not, this process takes time in and of itself, regardless of the project the skills are being used for.

I also re-learned that it’s important to sit down and plan out a program before simply rushing into typing out code. I used to know this, but I had forgotten, and this time around, that’s exactly what I did. And it took me about 4 hours before realizing what I had done. I took a breath, regrouped, planned and started over. I made more progress in the next hour than I had in the previous 4 hours.

Needless to say, I feel like I’ve learned a lot working on this project.

Somethings I haven’t learned, but I’ll include them here as they may be helpful for others. I’ve always known I was a poor programmer, but I was hoping that I could improve these skills while working on this project. Unfortunately that hasn’t been the case, and having made poor choices on which languages and software to use, I’m much further behind in this area than I would like to be. I don’t feel like I was over-confident in my skills, but I feel like I was over-confident in the time we would be programming, and the help I could receive for programming. Either way, I wish I had made a project that wasn’t so reliant on the programming aspect to be successful.


Last update: June 3, 2022