Category Archives: Hardware

Sponsored by Element14!

The_element14_company_logoThe good folks at Element14 got in touch after they read some of the Raspberry Pi tutorials on this website. They offered to send me some parts for a project, so I decided to start with a networked baby monitor. I’ll post progress as I go!

Seeed Studios GPRSv2


I picked up a couple of these GPRS boards when Radioshack liquidated their stock. You can use them to place/receive phone calls and SMS messages. I’ve got two, so stay tuned for some wicked M2M project that I have yet to dream up. In the meantime, I pushed my initial tech research to Github.

Hacking the Knitting Machine (workshop) @ ISEA 2015, Vancouver


Hacking the Knitting Machine
Friday August 14, 2015 9:30am – 5:30pm
Room 4945, Simon Fraser University Goldcorp Centre for the Arts
149 West Hastings Street, Vancouver, BC V6B 1H4, Canada

Update: Our workshop went really well! You can read about it on vancouverisawesome and the New Media Caucus website.

Textiles are the original digital medium – It’s no coincidence that the Luddites were named for artisans that protested against the mechanization of textile production in 17th century England. Unlike their predecessors, today’s Luddites are associated with a distaste for the virtuality of modern devices. However, with the arrival of affordable 3D printing and the Internet of Things, it’s becoming clear that the technologist need not choose between digital and actual. Machine knitting is a great example of this overlap.

Dieter Kirkwood and I will demonstrate a useful modification (originally exploited by Davi Post and Becky Stern) to the Brother KH-930e knitting machine at ISEA 2015. These devices were originally released in the 1980s, so they are available relatively inexpensively on sites like eBay. The KH-930e features an early digital input capability, meaning that users could purchase patterns to communicate to the device via floppy disk. We will show how to spoof this connection, upload custom patterns, and “print” them into actual knit shapes.

Each workshop participant will get to design and knit their own custom beer koozie. Is there anything more Canadian than that? Space is limited, so email me or Dieter see this link to reserve your seat today!


OpenKnit build progress

The OpenKnit build is coming along nicely! We’ve had to make a few alterations to account for US suppliers. Here’s a preview…

OpenKnit build underway

Dieter Kirkwood and I are building an OpenKnit this summer with financial support from Columbia College Chicago.  OpenKnit is an awesome open-source project with a really generous instigator, so we’ve been emailing back and forth with project leader Gerard in Madrid to get things off the ground.  We’ll be converting the BOM for Americans, making design improvements, and having a good time.  All the data we generate will be redistributed online.

Fun fact!  Gerard initially got a takedown notice for the video above because his project documentation included visible commercial logos.  He contested and the video was restored.  Fight the power!

Beer koozies @ ChDM

Dieter Kirkwood and I made a set of Chicago-themed beer koozies for the Pop-up Design Museum in Chicago (ChDM).  The opening is June 13 at Block 37.  You can find more info on the event’s Facebook page.  Come on out and buy some fun stuff!

CTA bus tracking clock prototype complete

CTA bus tracking clock prototype

This is my first complex Raspberry Pi project.  The guts are working great:  plug the device in and it automatically boots up and starts checking arrival times at my favorite stop.  Planned improvements include a Flask-based web interface for selecting bus routes and a nicer case.

Preparing Gimp files for machine knitting

This tutorial assumes you’re working on a PC and have no background in digital imaging.

Finding your image

  1. Open up a web browser like Firefox or Explorer and find a simple, high-contrast image.
  2. When you find an image you like, right-click it and “save image as”.
  3. Keep track of where you save.  Saving to the Desktop makes things easy to find.

Modifying your image

  1. Click on the start button in the lower left corner of the computer screen.
  2. Type in “gimp” and click on the program when it pops up.
  3. In the menu, navigate to FILE > OPEN and select the image that you downloaded.
  4. IMAGE > SCALE IMAGE and change the width to 60px.
  5. Press the number keys to zoom in and out.  Try 4 to start.
  6. COLORS > BRIGHTNESS/CONTRAST and move the sliders until you have almost no greys left in the image.
  7. COLORS > POSTERIZE and enter 2 for the number of colors.
  8. Select the paint bucket tool.  This will bring up some options in the vertical window on the left.  For fill type, select pattern and select one of the dot patterns we discussed in the lecture.
  9. Fill all black areas with the dark pattern and all white areas with the light pattern.

Saving your image

  1. FILE > SAVE AS to save a Gimp version of your project.
  2. Insert a USB thumb drive into the computer.
  3. FILE > EXPORT and pick JPEG from the drop-down menu.
  4. Save this file to the thumb drive.
  5. Make sure to eject the drive safely.  Ask for help if you’re not sure how to do this.
  6. Now go knit!


As requested in the comments, here’s the pattern we used to prevent long floats. I enlarged it for visibility, but you should make it 5×5 when preparing the tile in Photoshop or GIMP.



RoboKnitting Workshop @ HWL Innovation Lab, Chicago

Back due to popular demand!  Dieter Kirkwood and I are running a knitting workshop at the Harold Washington Library Innovation Lab every Tuesday evening in March.  Participants can transfer a simple digital image to an 80’s-era knitting machine via img2track software.  See workshop calendar to sign up – seats are free but limited.

See the results of the first set of workshops here.

Hardening a headless RPi to run an infinite script

Though a Raspberry Pi can act like a conventional desktop computer, my RPi projects are generally “headless”, in that no monitor, keyboard or mouse are present.  This means that we must “harden” the system settings and code to be self-starting and fault-tolerant.  Here are the steps I took to ensure that my CTA bus tracker could run indefinitely without user input.

  1. Set the default user “pi” to automatically log in on power up.
  2. Follow these instructions to daemonize your script.  This allows it to run as a service, which is easier to monitor and restart.
  3. Install and configure Monit to resurrect the daemon if it dies.  A script can die/exit unexpectedly if it encounters an unhandled error.  It’s good practice to take care of these errors within the script itself, but I kept getting occasional script exits despite my best efforts.  Here’s a nice little python tutorial about exceptions.
  4. sudo nano /etc/kbd/config and search for BLANK_TIME=30 and POWERDOWN_TIME=30.  Change both values to zero (meaning never).  This prevents the Pi from falling asleep.

Update:  I’ve been chasing bugs for a month, and I’ve finally got 24 hours of up time according to Monit.  I think the problem had to do with the python requests module.  I added a timeout to each URL request, allowing the loop to continue even if the CTA server is acting up.

Update 2:  It also looks like the API will start bouncing requests once you hit a certain number in 24 hours from the same IP.