Zach Taylor
Procrastination Exploder

So I was trying to work on my thesis, and somehow I ended up making a game.  Click here to play.

Comment (0)
Report on the Milling Machine

After working for a semester on the ITP milling machine, I have prepared this report as a starting point for whoever next takes on this project.  This report is primarily focused providing the following:

- a how-to for using the machine,
- the code I have written for use with the machine (to be uploaded), and
- my recommendations for how to improve the machine.

It is my hope that this document can help anyone undertaking this project move forward with as easily as possible.  To this end, I will start with my recommendations for future development.

One of my goals with this project was to make a tool that would be as versatile as possible, and to do that, I wanted to give users the ability to take their sketches from the computer to the machine rather than base the use of the machine on preset shapes and figures.

While the machine does have manual control that can be used when it is not attached to a computer, I believe that the processing power of a computer is _much_ better suited to figuring out toolpaths than a microcontroller.

Ideally, sketches could be drawn on the computer and then turned into toolpaths for the machine using free software.  In practice, however, this toolchain gets caught on the ideosyncracies of many of the programs involved.

For example, if you want to cut a circle of a certain diameter using the mill, this is what I would have to do.  There are surely better solutions out there—this is just the best that I have been able to manage:

Draw the circle in Open Office and save it as a Scalable Vector Graphics (SVG) file.  Ideally, these files could be generated with Illustrator or Inkscape—however, in practice, these programs create files which cause various errors when used with cam.py.)  Unfortunately, OpenOffice can only use two decimal points of precision on shape measurements.  To create the precision I desired, it was necessary to convert my circle to milimeters.

In addition, cam.py seemed to create offsets for toolpaths (taking into account the width of the endmill bit) that were slightly inaccurate.  To create a circle the size I wanted, it was necessary to create the offset in Open Office, then use an offset of zero in cam.py.  This means that you must also convert the size of your bits to millimeters, then subtract that amount from the diameter of your circle.  Even a piece with several circles at set distances becomes somewhat complicated.

Once the svg has been made, you can use the python script cam.py from MIT’s Media Lab to generate G-code.  However, this G-code will not yet work with the Processing sketch I wrote which sends G-code directly to the mill, sending an instruction when the previous instruction is finished.  The reason is that the Arduino in the mill is based on the G-code interpreter from the RepRap project, which is not exactly standard.  The reason I used cam.py instead of the RepRap toolpath generator is that it seemed to be designed for negative cutting instead of positive extrusion, and for that reason it seemed more relevant to my project.  Perhaps there is something in the RepRap documentation about how to create a cutting toolpath, but I have not been able to find that.

The standard command in G-code G00 is used for rapid positioning of the cutting tool.  However, the RepRap code instead uses that command to set the X,Y,Z-values for the current location of the cutting tool.  While these two interpretations of the command are very different, I found the command useful and kept it for now.  This means that the G-code generated by cam.py must have the G00 commands changed manually to G01.  In addition, any adjustments to the speed of cutting during the operation must be made manually to the G-code file.  G20 must also be added to specify the correct units for the mill, and a “G00 X0 Y0 Z0” command to set the starting point of the mill is often desired.

Once the file has been edited, it can be sent to my processing sketch and then to the mill.  At this point, the machine will cut out your circle.

Cutting out a square or rectangle is easier, but mainly because the G-code can be written by hand more easily than going through the toolchain listed above.

To cut out a design from an Eagle file, cam.py can be used on the relevant file from Eagle.  I have found that it does not render drill holes in a useable way, and the offsets might be a little bit off, but with some tweaking, it might be possible to use an Eagle file to cut out a board.  (Update: Using cad.py, a successor to cam.py, this solution has been reported to work for generating drill holes: export the pads layer and then fill the rest of the background with white, leaving just the holes in black.  Thanks to David Mellis for this tip!)

However, due to the inherent instability of the cutting blade, there is some wobble to the endmill, which can lead to slight inaccuracies.  In my experience, bits were prone to breaking very easily due to the mechanical construction of the mill, and any cutting had to be done at the slowest of speeds on the softest of materials.  With this machine, I was not able to get the precision I would want for designing circuit boards.


Recommendations for Using the Machine

In my opinion based on a semester of working with this machine, the two biggest obstacles to this tool being useful to the ITP community are the toolchain of software for generating G-code and the mechanical elements of the kit we purchased which serves as the basis for the machine.

While I would love for all of the software used to be free and open-source, I think that this goal should give way to professional providing software for student use.  I have yet to see any free software designed for 3D work, limiting us to solely 2D (or at best 2.5D) and I do not think the frustration of using the free software that I have seen provides a satisfactory user experience or good use of student time.

In addition, the use of professional software does not negate the possibility of using free, open-source software as well if a better set of programs can be found or if someone with a better toolchain of software can provide instruction on its use.

The second recommendation I would make is not to use the milling machine kit which is currently in use.  The Arduino and stepper motor control which I developed can be easily configured for another machine, and my recommendation would be to spend a few hundred dollars and buy a mini milling machine.

The current kit suffers from material and design flaws.
- The base is not very sturdy and stays in place only by applied weight, which leads to pieces occasionally being picked up or moved by the cutting tool.  This jumping behavior is frightening and damages the parts.
- The plastic parts also allow for flexibility which seriously affects the machine’s precision.
- The maximum size for a piece that can be cut is very, very small.
- Material is difficult to connect to the machine and hold for cutting.  A vice would be better, but I am doubtful that the machine has enough room or strength to move a vice as well as material to be cut.
- The machine is very delicate and requires frequent recalibration to prevent the axes from seizing up and providing inaccurate cuts.

I believe that buying a non-CNC mill and attaching stepper motors to it could solve the problems listed above.

Without investment in the recommendations above, I am not sure that the machine will be able to provide satisfactory performance or usability.

Comment (0)
“I could leave ITP and come back in a few years”

The thought in the title occurred to me last week as I sat in thesis class.  At the time, one of our guest speakers was telling me that, “It’s not called thesis just because it’s the last class you take.  I don’t see a thesis here.”  This went on for some time, and at the time I thought the feedback was ultimately helpful, if somewhat eviscerating.  The problem since has been that the comments resonated so deeply with my own doubts about the project, and now I’m not sure what I’m doing at all.  I’m sure that some guests on American Idol get torn apart by Simon Cowell and never return to singing.  I can identify—I’ve barely touched any electronics since last week, and I’m not sure I can really see the point of what I was doing anymore.

The doubts about having a worthwhile thesis have also led me to wonder whether I’ve gotten out of ITP what I should have.  Sometimes I’m amazed that my classmates can’t wire up a motor when that was a basic assignment in one of the introductory classes, but then I realize that I can’t design a pretty web page (e.g. the page you are currently on, at least at the time of writing), and that most of my projects are in one state of failure or another.  Lately I seem to be failing even at the things I thought I was good at, and in addition to wondering whether what I’ve been doing can be turned into a real job, I’ve begun to doubt that it would be the job for me anyway.

Comment (0)
The what and why of my thesis

My thesis is to create a system that makes connecting the electronics I own—homemade or bought—extremely easy and provides for their remote control and data reporting with a consistent and user-friendly interface.

Many of the projects I’ve built have given someone at one location control over or information about a device at another location.  Each time I established such a connection, I developed a new communcations protocol and built a new pathway between the two items.  This approach works, but it takes time, and it doesn’t capitalize on the potential for networking these items.  I would prefer to be able to connect a project to the internet and have it automatically connected to a network all the way up the application layer.

In creating such a system, my first goal is to my life easier, but I also want to make a system that others could use.  In designing a user-friendly interface for the system, I hope to open the home automation to a wider audience than exists for current systems.  In the future, I see mass-production of the hardware employed as a very real possibility.

So that’s the goal: a user-friendly way to control electronics.

Comment (0)
So it’s still buggy…

If you’re visiting this site and you notice that the internal links don’t all work and the styling is sometimes inconsistent, you’re right.  I’ve just gotten back to working on site migration, and it’s going to get better in the next few days.  No really, this isn’t just one of those empty promises you see everywhere on the internet—I am going to work on it.  I’d suggest that you leave a comment, but I think that only the spam bots have got that working.  Sorry!

Also, if you’re coming here from another page that linked to one of my pre-migration posts, those links are almost repaired.  The content is on here somewhere, and since there are fewer than two dozen posts total on this blog, whatever you’re looking for shouldn’t be too hard to find in the meantime.

Comment (0)
Migrating my blog

If you’re seeing this page, then I’m still in the process of moving my blog from Wordpress to Expression Engine.  I haven’t done a lot with EE yet, but so far I’ve been impressed.  When I want to change this page to a newly minted and separately styled one, I can do so with the click of a button.

Comment (0)
Leaving Wordpress

The title just about sums it up. On December 1, when Expressions Engine 2.0 comes out, I'll be changing over from Wordpress. I'm ready to do a little bit more with the design of the site, and Jason Santa Maria's use of Expressions Engine has me convinced that it will work well for multiple styles on the same site.

Comment (0)
A Sparkline History of The Harvard-Yale Game

sparkline history of harvard-yale game 126 Games. Up means Harvard victory. Down means Yale victory.

The importance of this image is that the 126-year history of the Harvard-Yale game (actually slightly longer since the game wasn't played every year) can be told with an image roughly the size of a word.

Another version:
another graph of harvard-yale game history

Comment (0)
Interactive Vending

Proposal for a vending machine at ITP:

The goal of the project was originally to add new interaction to a vending machine by creating a rudimentary personality for the machine. Games, special deals, and whimsy could all be added to the electronic interface, bringing users to the machine for entertainment in addition to just the quickest snack available.

Networking the machine would let users provide input into what items they would like to see in a vending machine as well as letting the operator know when the machine needed a refill.

It is also clear that ITP students would want more out of a vending machine than just candy–electronics and physical computing supplies would be provided as necessary.

Finally, the project could provide a gallery and market for small student projects, somewhat like a mini-Etsy. This would make the machine not just a useful device for ITP students, but also an interesting gallery for visitors to the floor.

Comment (1)
Circles of a Hue

hue applet demo

This applet displays circles of the same hue with randomly generated brightness and saturation.

  • Press the spacebar for a new hue.
  • Press 'p' to pause or restart the applet.
  • The hue will change automatically after 20 seconds.
Comment (0)
Page 1 of 3
 1 2 3 >