Peter Needs A Pint

Created for the 2013 MolyJam at the Durham location.

Peter is down at the pub and needs some drinking buddies. Gather up the townsfolk so he won’t have to drink alone.


Play by yourself or with a friend. Earn more beer for yourself by bringing the most people down to the pub. If you have a MolyBot, it will pour your beer for you at the end of each round; otherwise you’ll have to pour the beer yourself (MolyBot and beer not included).

Continue reading “Peter Needs A Pint”

Iron Man 3 Chest Arc Reactor

I made this prop to wear to the Iron Man 3 release (and to test out some new technology for a future project).

Arc Reactor
Arc Reactor


The whole thing was designed in OpenSCAD and 3D printed in ABS (both the housing and the diffusor puck).  A Teensy 2 module drives the LED strip (WS2812 clone, 60 pixels/m) and is is wired up to a BLE112 module for communications.

You can control it via Bluetooth (no app yet, you hand craft a 1, 3, 6, or 7 byte message in a BLE explorer app to set a greyscale color, or one/two RGB colors and a ping-pong speed).  By default it boots up into ‘Arc reactor blue’ with a soft breathing animation.

Multi-turret water cannon

I’ve been holding off on posting about this until I got some time to finish it up, but now seems like a good time since it was mentioned in a community blog post.

Multiturret water cannon

I didn’t capture a proper video of it in action, but there are a couple snippets in this awesome picnic compilation video put together by Aaron:

The cannon uses a pre-pressurized water bladder, typically used to smooth out variations in water pressure for houses or RVs. The pressure of the output water will be roughly the same as the water supply used to charge the tank (and it can also be run in ‘continuous’ mode by leaving the hose connected). At the picnic site, the park water supply pressure was crazy high, which resulted in very nice performance. However, I saw about 90 psi on the pressure gauge at one point, which is uncomfortably close to the tank safety rating.

The drive electronics are just an Arduino that sequences four relays in turn controlling the sprinkler valve solenoids.

Speeding up LPD8806 show() without hardware SPI

If you’re using LPD8806 LED strips and you can’t use the hardware SPI port (e.g., when using an Ethernet board), there are two other options in the Adafruit library: the default mode and ‘slowmo’ mode. The default mode is decent, but the flexibility of being able to choose the pins at runtime comes with a cost.

However, you can still get a decent speedup by defining your pin usage at compile time in a replacement show() function. I measured the time required to update an 86 LED strip using each method on an EtherTen board (Atmega328 @ 16 MHz, same as the Uno):

30.23 ms - Adafruit 'slowmo' method (digitalWrite)
7.76 ms - Adafruit default method (port pointers)
1.54 ms - Compile-time method
1.43 ms - Adafruit hardware SPI method

Continue reading “Speeding up LPD8806 show() without hardware SPI”

Reducing code size on Arduino Ethernet boards

The Ethernet library grew in size several KB from 0022 to 1.0, which is a big deal when you only have 32 KB to play with. You can save about 2 KB by compiling out DNS support:

Wrap the following pieces of code in #if WITH_DNS

  • Dns.cpp and Dns.h:
    The entire file
  • EthernetClient.h and EthernetClient.cpp:
    int connect(const char* host, uint16_t port)
  • EthernetUDP.h and EthernetUDP.cpp:
    int beginPacket(const char *host, uint16_t port)
  • Client.h:
    virtual int connect(const char *host, uint16_t port)
  • Udp.h:
    virtual int beginPacket(const char *host, uint16_t port)

Add #include "EthernetUDP.h" to EthernetUDP.cpp, since it’s currently relying on the indirect include from Dns.h.

Faster Arduino development

I’ve been using Arduino boards for a bunch of random projects lately. They may not be as inexpensive or as small as throwing together a microcontroller and a resonator on a piece of perf board, but they’re a lot faster when making one-offs: lots of shields with ready-to-go libraries, quick programming / test cycle, etc…

One major downside is that the official Arduino IDE has a super-awful text editor, but there is a solution. Visual Micro has a plugin called Arduino for Visual Studio that makes everything ‘just work’ in the VS IDE, even VAX. Install the Arduino 1.0 IDE, then install the plugin, and all you have to do is point the plugin to your Arduino directory the next time you run devenv. It handles the rest, setting up syntax highlighting for .ino/.pde files, adds a toolbar to pick the board type and COM port, etc… To top it all off, it compiles about 10 times faster than the official IDE (0.2 – 0.5 s versus 5-10s); so much faster that it seems like there is a bug in the current version of the Arduino IDE.

Long story short, if you are doing any Arduino development and have VS 2008 or VS 2010 (the express edition won’t work since it doesn’t have support for plugins), you should download it now for a massive productivity boost.

Robotender Mk3

Finished Robotender Mk3 just in time for my halloween party (with literally minutes to spare). This one is a pretty radical departure from the previous designs, using a robotic arm instead of pressurized dispensing. I managed to pick up a Scorbot ER-III arm and controller off of eBay. They were originally used for teaching robotics and motion planning at universities, and are generally pretty used-and-abused (two motors were almost falling out of their mounts on this one), but it runs quite nicely after everything was cleaned and tightened up.

Robotender Mk3, wide view

It’s a little slow compared to the Mk1, but it’s a lot of fun to watch, can hold more bottles, and is easier to maintain. It uses custom bottle carriers that hold 710 mL soda bottles, and can hold up to 24 such bottles. There is a digital scale hooked up to the computer as well, which gets zeroed once a bottle reaches the pour site, letting it determine how much liquid has been poured much more accurately than the simple time-based approach used in Mk1.

Pouring an ingredient

I took a number of pictures during construction on this one, so I may do a build log post later.

Next steps:

  • I’m going to look into building a new motor controller for it, so I can get better feedback and drive it faster while still keeping a solid grip on bottles (can’t currently ignore the gripper stall state for fear of missing any other motor stalls, meaning I have to do a slow 1/10th speed backout on the gripper to get the max grab force I can).
  • The bottle holders are on their 6th iteration already, but positive grip is still a bit of a problem, so I’m probably going to redesign the bottle holders with a triangular slot and make some triangular nylon plates for the gripper. This might also allow me to be a little less precise in the back-off, and speed it up without a new motor controller.

Infected Omen Light Box

I pulled an all-nighter and designed/fabricated a LED edge lighting box plus etched plate in advance of the Gears 3 launch. The original plan was to slide an unused junk android tablet in and show some numbers from the stats dashboard in that central window, but I wasn’t able to get the tablet on the secure network at work, so now it’s just a pretty light box sitting on my desk. I almost slid my iPad in, but the slot I machined for the tablet is about 0.5 in too short for an iPad, though it had 0.75 in of slack for the target tablet.

The light gently pulsates / undulates around the border (driven by an Arduino), aiming to look a bit like the corrupted omen on the title screen.

The LED strip I used are LPD8806 driven strips from Adafruit, and they are a dream to use compared to the older Christmas light strand style strips I’ve used in the past. Each LED is individually addressable via a SPI-like interface to set a 21 bpp RGB color, and they have their own internal PWM clock, so you can fire and forget, no need to keep clocking them.

Also, Gears of War 3 is out, you should play it!

Glitchovision 3000

This is an audiovisual instrument that I created for the 555 timer contest.

The Glitchovision 3000 is a 4 step sequencer controlling an ‘Atari Punk‘ synth with a greyscale NTSC video visualization of the output audio, built using two 558 quad-timers and two 556 dual-timers.

Here is a video of it in action:

Continue reading “Glitchovision 3000”