Reviving the Apple 410 Color Plotter

 Uncategorized  Comments Off on Reviving the Apple 410 Color Plotter
Dec 132017
 

Apple 410 plotter drawing hexagonal spanning tree

After seeing some of the jaw-dropping and inspiring plotter art that’s been popping up on #plottertwitter this year, I decided to get in on the fun. We don’t have an Axidraw or other modern plotting device handy, but I did have a hazy memory of someone donating a sweet large-format HP plotter of some sort to NYCR a few years back. Armed with a ladder and flashlight, I scoured the loft for a bit and eventually emerged filthy but sort of victorious, with this:

Apple 410 Color Plotter box

Spoiler alert: this is not going to be a sweet large-format HP plotter

apple 410 plotter

oh hai

Say hello to the Apple 410 Color Plotter. It’s set up like many low-cost plotters of the era, with a plotter head traveling on the Y axis (left-to-right facing the printer) and a roller underneath the paper moving it along the X axis (up-and-down) as it goes. A solenoid pulls the pen head down, and a limit switch at the left end of the Y axis travel allows the printer to home itself. That’s it!

What makes is a color plotter, of course, is the multi-pen head.

The four-pen plotting head.

I like this design quite a bit.

There’s a pawl at the left end of the head’s travel. As the head moves to the right, it catches on to a peg on the head’s carousel, rotating it an eighth of a turn. In this way the plotter can (a bit slowly) swap between pens of various colors. It’s a nice, low-cost design, and as long as you keep your number of pen swaps down, it doesn’t make your plots appreciably slower.

If you didn’t know Apple made a plotter, well, they didn’t. It’s actually a similarly obscure Yokogawa YEW PL-1000. There were no reference manuals available online that I could find, but maybe Apple itself can lend a hand?

apple support

This didn’t work.

As charming the idea of rolling wild-eyed into a Genius Bar with a thirty-plus-year-old plotter and screaming “I NEED THIS WORKING BY MONDAY” was, I figured if I really wanted this thing running I’d have to get it chugging myself. Although I couldn’t find a command reference anywhere, I was able to find a few snippets here and there (like the configuration file incongruously pasted into the wikipedia page) and, vitally, an old service manual which had the dip switch settings for various serial port configurations.

I say “vitally” here because ordinarily when I need to figure out the baud rate on a mysterious serial device, I’ll just try connecting to it at various speed/parity settings, toss a few linefeeds at it, and see if the response looks legible or at least consistent. That approach wasn’t yielding any results for me this time. As it turns out, the 410 didn’t respond to commands with acknowledgement or error codes. As far as the serial connection went, it was completely mute. There is one bit of feedback, though. When you send a message the plotter doesn’t like, it lights up a jaunty red ERROR led, which stays lit until it receives a reset command or you restart the plotter. Rough.

Luckily, the plotter does have a self-test mode which plots text, graphs, circles, and other complex designs. In fact, if you search for the Apple 410 on YouTube you’ll find a few videos of the self-test running. I figured that the script for that self-test had to be present somewhere in the firmware, and you know what that means.

YEW PL-1000 logic board

It’s ROM-dumping time!

This device is as simple internally as it is externally. What you’re looking at here is a Z80 processor, an additional IC to handle the serial interface, a bit of RAM, a few ROMs, a power supply and some driving logic for the motors and panel switches. The ROMs were socketed and clearly labeled; yanking, dumping, and reinstalling them was a breeze. Browsing through the firmware quickly bought me to exactly what I was looking for: the text of the self-test script.

hexdump of rom with test script

Ah, that’s the stuff.

Searching for other instances of the command codes quickly bought me to a dispatch table, which meant I could enumerate all the valid commands for the plotter. From this I was able to cobble together a rough command reference. A few simple test plots later, we were in business!

There was one last thorny patch to resolve, though. As you’ll recall, the plotter doesn’t send any responses over the serial connection. As you’d expect of a device of this vintage, there’s not a lot of RAM to serve as a buffer, so you can’t just send a whole complex plot at once. The plotter needs to let you know when the buffer is full, and for this it uses hardware handshaking. DTR/DSR hardware handshaking is a (now rarely-used) technique for out-of-band signaling over an RS232 connection. Essentially, when the plotter sets the DSR bit, it’s saying “I’m full, daddy,” and very much like a toddler, if you keep feeding it it will vomit all over the place. If your USB to serial adapter handles hardware handshaking well, more power to you, but mine doesn’t, so I ended up flushing the the connection and checking the DSR line manually after every byte. It’s ugly, but it works.

And that’s it. If you are one of the maybe dozen people worldwide saddled with one of these beasts, I’ve got a half-assed python library that will get you started. Have fun!

(And if you’re wondering how I’m getting those nice beefy lines with dried-out plotter pens from the 80’s, that’s another blog post.)

 

Learn to Program with p5js Animations on Dec 10th

 classes  Comments Off on Learn to Program with p5js Animations on Dec 10th
Dec 062017
 

We’re offering a brand-new intro to programming class on December 10th! Tickets available here.

p5js is an excellent gateway to get up and running with programming fundamentals. In the class we will breifly cover some necessary basics of HTML and Javascript, but will primarily focus on the p5js environment for fun animations and interactivity. By the end of this class you will create your own interactive web page, and will have the tools to continue exploring and learning p5js on your own.

Get your tickets on Eventbrite.

More ShopBot Plywood CNC Joinery for Dilettantes

 Uncategorized  Comments Off on More ShopBot Plywood CNC Joinery for Dilettantes
Dec 042017
 

“When all you have is a hammer, everything starts to look like a nail,” or so the saying goes. Well, when all you have is a cartoonishly large CNC router, everything starts to look like you should cut it on there, even if a better tool would be, say, a table saw. Fortunately, the ShopBot is pretty much the ultimate multitasker, and this weekend I set about expanding my very slight knowledge of plywood joinery by making a few rabbet joints. I’ve more or less skated by with just box or finger joints for all my projects to date, and while those are extremely useful and strong, they do require filleting the corners of each joint to make them fit correctly, which isn’t always ideal or pretty.

What on earth is a rabbet joint?, I hear you ask. Is that some sort of drug paraphernalia for small fuzzy mammals? Alas, no (although that does sound like an entertaining ShopBot project in its own right.) A rabbet–or a rebate if you’re from Britain–is a groove cut into the edge of a board. Rabbet joints use them to strengthen and straighten what would otherwise be a butt joint, which is simply where the two parts meet without any modification. Rabbet joints are much stronger because they allow any load to be distributed over a greater surface area, and give glue more crevices to get into. I’m particularly interested in a double rabbet because less of the ugly outer edges of the plywood are visible.

Traditionally, rabbets are cut with a table saw and a dado set, and truth be told, that’s a much faster, simpler, and elegant way to go about this. But I set myself a challenge: I wanted to figure out how to do this on a ShopBot, and I also wanted to take Fusion 360’s CAM package for a spin, and this seemed like a simple way to get started.

I began with the simplest starting point: just one part made out of a bit of scrap:

One of the things that I keep tripping over in Fusion is that because you absolutely have to model everything in three dimensions before you cut it, assumptions that you made early on can come back to haunt you. For example, it’s easy to assume that your stock is exactly, say, half an inch thick, but when you measure it with the calipers, it’s 0.469″ or somesuch. That 1/32″ isn’t usually too much of a problem, but if you want everything to fit precisely without any gaps or bits sticking out that you have to account for it. I find it immensely helpful to define a variable that holds the measured thickness of the stock material, and then define everything else in terms of it.

This is especially helpful if you’re designing something speculatively, before you’ve purchased the wood, and then you just need to go back and make this change in one place rather than re-drawing the entire thing from scratch. So in my case, I started with the nominal plywood thickness of 0.5″, defined the rabbet depth to be 1/3 of that, and the rabbet width to be 2/3  on one side and 1/3 on the other.

This first attempt went pretty well. This was my first meaningful attempt at using Fusion 360 as a full-fledged CAM suite in addition to its design capabilities. Things I noticed right off the bat about the resulting toolpaths were:

  • The “adaptive clearance” mode for pocketing out large areas results in a very good surface finish at the expense of a bit more waste stock. Fusion is used most frequently for machining metal, so it makes some sense that the programming is especially well-suited for doing very fine finishing passes.
  • If you want to sacrifice some of the spoilboard to ensure that cuts go completely through the material, the adjustment to make is the “bottom” plane of the cutting operation, not by monkeying with the dimensions of the board or the zero plane, both of which I tried with bad results.
  • If using triangular hold-down tabs, which tend to cut off more easily, be sure to make them long and thick enough to hold up during the final finishing pass if you have one programmed.
  • For pocketing/clearance operations where perfect fit is needed, be sure to uncheck “stock to leave” which is, annoyingly, configured to some random value by default.

My new skill in hand, I set about making something more useful: a simple five-sided box, open at the top.

Once I’d sketched out the parts in Fusion, I set up the CNC operations:

This time, I actually remembered to simulate the whole thing to make sure I’d put in tabs and make sure I had set everything else up properly

 

I was pretty pleased with the surface finish, especially against the sides of the material. I cleaned everything up by hand with a bit of 220-grit sandpaper. Wood, as they say, is a forgiving medium, and sandpaper is the apology.

The moment of truth is the dry-fit to confirm that the design was correct, which it fortunately was.

After glue-up, a quick douse down with a coat of lacquer and it’s…almost presentable.

You can see here what I meant about not seeing too much of the edges of the plywood. Of course, they’re visible on the top–there’s not much to be done about that. But on the sides of the box, only at most 1/3 of the ply side is visible. Even more elegant rabbet joints mitre the edges to hide everything completely. I’d like to try that as a version 2.0.

You can find me on Twitter at @gdickinson.

Dec 10: Make blinky animations and learn to program with p5js

 classes  Comments Off on Dec 10: Make blinky animations and learn to program with p5js
Nov 162017
 

Join us for a one-day introduction to the p5js web programming framework for JavaScript on December 10. The class is suitable for students with little or no programming experience.

p5js is an excellent gateway to get up and running with programming fundamentals. In the class we will briefly cover some necessary basics of HTML and Javascript, but will primarily focus on the p5js environment for fun animations and interactivity. By the end of this class you will create your own interactive web page, and will have the tools to continue exploring and learning p5js on your own.

Get your tickets on EventBrite.

Intro to Soldering: Make an LED Tile on Nov 12

 classes  Comments Off on Intro to Soldering: Make an LED Tile on Nov 12
Oct 302017
 

Learn to solder at our next intro class on November 12th.  In this hands-on workshop, you’ll learn how to use a soldering iron safely and effectively, and get plenty of practice with both soldering and desoldering techniques. We’ll be soldering up some Game of Life kits – LED tiles that generate nifty animations. No previous experience is required, making this introductory workshop a great choice for anyone who’s curious about getting started with hardware tinkering! All materials will be provided.

These classes fill up fast, so get your tickets now.

 

Laser Cutting on Oct 14

 classes  Comments Off on Laser Cutting on Oct 14
Oct 102017
 

Want to get certified to use our laser cutter? Of course you do! Our next laser cutting class is on Oct 14.

In this three hour class, we’ll walk through all the steps from idea to pressing the “go” button on the laser. We’ll cover safety, basic file preparation, and learn how to do a burninate test to find out if a material is laserable. After the three hours, you’ll have made a plaque for your door, a keychain, a simple box or something slightly ambitious. (There is lab time for laser cutting, questions and answers, and working with Inkscape, Illustrator, Corel Draw, etc.)

 

 

 

 

 

 

 

 

 

 

 

 

 

Tickets available here.