Assemble your own Polarshield.

I’m not sure how many more of these polarshields I’ll be making, I’ve got nine left that I’ve just soldered up, and need a couple for my stand at the Edinburgh Mini Maker Faire at the beginning of April.

nine polarshields, SMT'd

Amazingly, that means I’ve made up and sent out 70 (SEVENTY!!!) Polarshields! Almost exactly half polarshield vitamin kits, and half PolargraphSD full machines.  It’s so weird!

In case I never order up another batch of PCBs, I’ve made a couple of videos that show the technical build process, soldering etc.  They are long, and very very boring.



Making cables:

What about that?!

The wonder of a sharp blade and the right tool for the job

When I use my array of scalpels and box cutters, they get blunt.  I don’t notice so much, but slowly, I’m applying more pressure to get the same cut done, I’m tolerating sub optimal performance.

It’s such a good feeling when I put a new blade in, cutting like butter, and every time I do (every time) I reflect that I mustn’t leave it so long next time – the benefits of having the right tool for the job outweighs any notional benefit of being a cheapskate.

As with soldering.  I can do the surface mount stuff easily and quickly en masse, but I dread the through-hole stuff, the pin headers and sockets.  It just seems to take forever, and is a battle.

I looked at the iron tip, which has slowly been getting narrower and narrower.  It was initially thin to do 0804-scale surface mount soldering, but I now use hot air for that.  It’s no longer the right tool for the job, and it’s terrible corrosion makes it even worse.  I looked for a replacement, but remembered I had got a multipack of tips last time, containing a mixture of sizes.  Grumbling, I put the next smallest one I had on, and after the first joint, wished I’d done it months ago.

soldering iron tips

Bigger tip = more heat = quicker joints.  Obvious.

As an amateur, economy plays a large part in my reluctance to snap off a blade segment, or unwrap a new blade, and also storage and access (trying to remember where I put the spares months ago).

As a professional (which I suppose I am) I have to balance cost with speed and quality.  And as an employer (employing myself albeit) I have to balance cost with quality of life.

Right tool for the job.

Assembly notes for Polarshield

The location of the motor terminals on the polarshield is a bit awkward.  One of them is fine, but the other is directly above the USB socket on the arduino board underneath.  So that’s fine for the PolargraphSDs I make because they use arduino boards with micro-USB connectors.

But for anything else, the pins from the connector will come into the contact with the big USB-B shell on the arduino below, and that’ll short, and that’s not cool.  I always almost always do the following to a Polarshield to get around it:


First snip off the protruding pins and file then down almost flat.  I make extra sure there plenty of solder lining the holes for these ones.


Stick a couple of pieces of electrical tape over the little nubs that are left.

P1040647So now it fits flush, that’s good.

I saw this mentioned on Julio Terra’s blog where he mentioned putting a bit of tape over the USB shell to insulate it.  I scratched my head because I always do the above operation for the polarshields I sell as part of vitamin kits.  Except obviously I missed this one!  Tsk! I know, shameful.

Close up on the Polarshield

I haven’t really explained anything about how the polarshield works, except that it does.

Polarshield with headers annotated

Having a close look, you’ll notice there are very few active components.  The Polarshield is largely just an interface board that lets a bunch of regular-shaped things plug into an arduino, so it’s mostly pin headers and passives.

The XBee port switch (top left, next to the servo pins) bears a mention:  The up (or right, in this pic) position disconnects the XBee port and allows programming and comms via the USB port.  Switching down (left in this pic) connects the XBee port that allows serial comms from that module.  If there is an XBee plugged in then having it switched in prevents reprogramming via the USB.

I’ve detailed the connectors on here too, most interestingly (I bet) is the END STOP connectors.  These are input pins for four switches that would be used as limit switches for self-calibration, or for emergency stops.  The code doesn’t really use them yet, but it will soon, I’m working on it!

The good news is, those pins are available on all polarshields, so it’ll be pretty easy to add retrofit the self-calibration / limit switches to any vintage of board.

Black Stripes

Kongorilla let me know about this great new bot, or rather a great new service / business – it’s a Dutch company called Black Stripes, who offer a poster / drawing production service that offers a very handsome web-based input and preview system (go to “shop”) and output the artwork using a very covetable hanging-v plotter machine


Beautiful results and a really nice, industrial-quality setup.  Big steppers, big drivers.  They seem to be using a Raspberry Pi + arduino combo with discrete CNC style stepper drivers, and toothed belts for suspension.  A solenoid raised or lowers the pen.

It’s great to see an actual product based on this process, and some degree of automation going on too, in the image upload process.  I like best that the form of the output, the direction of the lines is a succinct expression of the form of the machine – the drawings could only come out of a machine like this, and the angles at the intersections and the and centre points of the arcs are all fingerprints tied to this particular machine too.

They have their counterweights running on little tracks too!  That’s a good idea.


The majestic Lunargraph!

Extremely impressed by this installation, just gawk:

Lunar Trails from Seb Lee-Delisle on Vimeo.

Organised by the inimitable Seb Lee-Delisle for the Dublin Science Gallery, this is a high quality polargraph-style machine that plots the paths, in real time, of the lunar landers as controlled on the nearby full-size arcade cabinet!

This is a cracking piece of work, a beautiful, exciting collision of engineering and programming – thanks to Seb for showing us what can be done with some string and pens!  I would really love to see some more stuff about the wonderful mechanical solutions that his mechanical engineer Paul Strotten came up with to realise this installation.

Lunar Trails Flickr gallery

Lunar Trails at the Dublin Science Gallery

Driving PolargraphSD wirelessly

I’m finally on top of assembly so can pause for breath.  Thank you to the folks who are still waiting, your machines will be coming to you in the next week or two (at the most).

I wanted to let people know that there’s a couple of neat features in the Polarshield, the first of which is an XBee-shaped socket that can take a wireless transceiver.

It’s as easy as that.  There’s a weak line in the case that can be cut away if you wanted to do this.  This is a great way of simplifying installation of a polargraph machine in a particular space.  I used a wireless connection just like this in the Spectrum Arts machine so that I could do the machine setup / calibration manually and do any little pen tests I wanted to make sure ink was flowing, then draw from SD.  There I used XBees, here I’m using XRF modules (and a Bee Adapter for the PC end).

One foible I came across with my XRFs (maybe I was being dumb) is that I couldn’t get my PC to talk to the PC-side XRF any faster than 9600 baud.  Which is unfortunate because the default rate that the polargraph controller speaks at is 57600 baud, so I added a property to the controller that changes that rate.  If you need to use it, you’ll have to edit the properties file – there isn’t a visible control for it in the application itself.

But once that’s done, it just works as a serial cable replacement: Great!  It doesn’t work for reprogramming the arduino firmware yet – I tried to get that working but never did, so you still need to use a USB cable for that.

A wireless module is not supplied as part of any kit – I decided these are still too expensive, and a little too far outside my expertise to start troubleshooting, but the socket is there for those who would like it.

In the absence of other news: New brackets

I’m still waiting for motors, but in the mean time I have been busily printing cases and soldering polarshields.  An hour and a half now – now bad.

Polargraph motor brackets v2

Here’s some new Polargraph motor brackets I’ve had made.  These have a couple of little improvements over the old designs that make them a little neater to install.  Cable management really:

Polargraph motor brackets v2

But the other feature is that they can also be installed upside down, with the motor hanging rather than being lifted – this should make cables even tidier.  Harder to mount and unmount however.

Polargraph motor brackets v2

Sorry for the continued wait folks, and thank you for your patience.

A weekend of fixes

Hello, please find enclosed a few fixes, an improvement, and a new feature.


  • Controller – Pulling a selection area that overhangs the bottom of an image would cause an unhandled exception.  Fixed by mending the Rectangle.surrounds(..) method.  Off by one, tsk.
  • Controller – Changing to another serial port would always set the baud rate to 57600, regardless of what was set in the properties file.
  • polargraph_server_mega – Rolled mbcook’s pbm format fixes into the mega branch.  I’d forgotten that I had to do that.  Also rejigged it a little, but cosmetic.

An improvement:

  • polargraph_server_* – All firmwares have had their straight line (C17) commands improved.  The last version was ok, but seemed to work much better on polarshields than on the adafruit shield, because of a poorly scaling acceleration algorithm.  It was pretty pausey.  I have pinched the acceleration algorithm from Mike McCauley’s Accelstepper library, and that works much, much better.  I even half understand it.

And a feature in a pear tree:

Vector art that has been created from an automatic bitmap tracing process tends to be made up of loads of tiny lines.   When processed through the controller and quantised to the grid of the machine, they often end up on top of each other, and duplicate points are just slow.

So I’ve added this new slider, which is essentially a lowhigh-pass filter that filters out lines below a certain length.  It re-samples longer lines, and discards entirely lines that are shorter than the threshold.  See these two vector previews:

The left-hand figure has only duplicate points filtered out, this brings it down from around 15,000 commands to 11,700.  Quite a few of those are still just single points – just dots.

The right-hand figure has the shortest vector filter bumped way up, and only has 300 commands.

The drawing wasn’t very good because my pen was running out and it was a bit fast, but you get the point.  Smaller filter values will result in more fidelity, while bigger values will have a more dramatic effect.

Polargraph v1.2.4.  Code in the repo as usual, and compiled and bundled up in a zip.