Time Traveling with Old Laptops and Arduino Compatibles
Shrimping is a form of digital upcycling somewhere between skimping, scrimping, and pimping, turning old discarded devices into something you’d want to rescue from a house fire. I’m running workshops to teach local kids and adults how to shrimp devices which other people have given up on. It’s amazing how quickly people lose interest as newer machines come along. The most recent donated laptop was running fine, and just four years old!
Notebooks do have a bunch of problems as they age. Bits fall off them. Fullscreen HD video on our 2005 Fujitsu P1510D is like watching the pages of a flipbook. However, they have one big advantage for makers. Nobody cares about them. That means you can spray them with sparkly paint, glue them with fuzzy felt, try unheard-of experimental operating systems, chop the screen from the keyboard base and squeeze it into a modded case or, as we will do in this series of builds, slap them with a digitally-controlled full-color lighting array, bespoke graphic equalizer software and microcontroller hardware, and crank up the tinny speakers til they squeal (see the graphic equalizer video).
Our recently donated Compaq Presario 700 was released in late 2001 for $1199, but a friendly freecycler, Charles, gave it to me for nothing. The battery lasts less than an hour, the hinge is cracked, strange voids gape from its casing, but it runs fine. There’s nothing for it. We’re going to hack this thing not only into the present, but into the future. We want this thing to end up as pride of place in someone’s cold-fusion-powered Google hovercar.
You probably have a few old machines yourself rotting in a cupboard. Why not grab one and follow along as we shrimp our laptop from the ancient past into the distant future.
Extra hardware: Arduino
For prototyping convenience we use stock Arduinos, retailing at around $25-$30 for official boards, with similar Arduino-compatible clones and specialist variants like Jeenodes also good for the job. The Arduino toolset is supported by loads of books, starter kits and howto guides and is a really easy entry point for newbies to build and program their own digital devices. In the end, when we build the final version, we won’t use a prototyping board at all. In a later instalment, we’ll be prototyping our own minimal Arduino-compatible and USB-controllable device on a breadboard for $6!
From there you can easily transfer to stripboard to wire them in as permanent modifications to your laptop. Getting the price this low means visitors to our workshops can walk out the door with their own shrimped laptops for literally pocket money, combining them with components from old toys, stepper motors recovered from scanners and the like.
Extra hardware: RGB LED Strips
For this shrimp, we’re using HL1606 digitally controllable LED strips to create a unique display to augment the laptop and give it a new lease of life. Each HL1606 chip on the strip controls its neighbouring two lights, passing the control signal it receives down the line, meaning you can chop it into any even number of RGB units and the resulting strips are each independently controllable with just three lines, (data, clock and latch), plus ground and 5v power. A 5m strip containing 160 RGB lights cost me $80 on eBay, but the smallest number you can buy seems to be 64 for around $36. Adafruit popularised experimentation with the HL1606, but unfortunately no longer sell it, preferring the more capable, but more expensive, LPD8806. However, the Adafruit resources are still by far the best reference and most reliable set of libraries for controlling them.
Optional 5V transformer
Lighting red, green and blue in all our 64 units needs nearly 4 amps for full illumination! Wiring to multiple USB ports increases the available power, but each USB port you attach to allows no more than 500 mA, equivalent to lighting 24 Red Green or Blue LEDs (or 8 units showing white). That Adafruit article helped again with the power calculations. We have to either attach an external power supply, or very carefully control the number of individual colored LEDs which are on at the same time. For development work, using a transformer, or limiting experiments to an 8-unit strip helps simplify the circuit and reassure me that I won’t need to reach for the fire extinguisher just because of a misplaced line of code!
Configuring the discarded machine
Older machines cough badly with resource-intensive Microsoft Windows builds, and things will get worse after Microsoft stops maintaining XP in early 2014. Wiping them and installing alternative, lightweight virus-free and popup-free desktop software can make them zoom again, and it’s not just PCs.
It seems to be possible to put some version of linux on almost anything and bring it bang up to date. Machines without screens like routers can run as servers for home automation or music. Our oldest recovered laptop–a 1998 Toshiba 490XCDT–acts as a server for our workshops, running the same version of Debian as NSLU2 devices, modern Pogoplugs and Raspberry PIs. Any of these devices would be able to drive our HL1606 Graphic Equaliser shrimp, as all it needs is a USB to TTL serial connection to communicate with the Arduino. If your target machine is really basic, it will most likely still be able to drive the LEDs, but you’ll need to program the Arduino and Python code on a different desktop.
Just like the Raspberry PI project, we use the lightweight LXDE as a graphical desktop for older machines. If you’re happy to wipe the machine, and assuming a Lubuntu LiveCD boots and runs (albeit slowly), you can install the Lubuntu desktop to the laptop’s hard drive where it will run much faster. To rebuild really old and slow machines boot the text-based Ubuntu Alternate Install CD, hit F4 and select “Install a command-line system”. When installed, connect to a network, launch Terminal and use apt-get to install a graphical desktop or anything else you need. For example typing…
sudo apt-get install lubuntu-core synaptic
…and hitting enter will get you the bare minimal components for a desktop and software package manager with almost no fluff.
Once a desktop is installed we need to install some packages to give us development tools and some utilities to help us play music, monitor the soundcard and talk to the Arduino.
Launch Synaptic and install arduino, python-serial, python-gst0.10, python-numpy (a music player) and geany (a python editor) by searching for each package, and clicking the checkbox next to the name to select it. Once all the packages are selected, click apply and they will be downloaded and automatically installed for you.
If you prefer the command line run…
sudo apt-get install arduino python-serial python-gst0.10 python-numpy geany
…which will achieve the same thing.
The build: Choose and lay out your display shape
Although our laptop drives a grid of LEDs, you could make an illuminated border, circle, star or other shape which uses many fewer lights. Equally, you can wrap a spiral around a cardboard tube to create a column of controllable lights using the whole strip.
Once you’ve chosen your design, be careful to cut any sections cleanly down the middle of the copper joints (with sharp wire cutters or heavy-duty scissors) leaving leave solderable pads on both sides of the cut (it’s easy to end up with pads on one side which are too small.
The signal will need to be wired from the Arduino to to the Data In end (labelled DI) not the Data Out (DO) end. Chain any additional strips by soldering six lines (or ribbon cable) from the DO end of one already connected, to the DI end of the one you want to connect. Refer to these instructions for more detail. Helpfully, the strip I received has high-tack self-adhesive backing tape, making it easy to attach each section to a laptop exactly how I want.
I’ve used 64 lights, chopping the strip and soldering it back together with ribbon cable in an 8×8 square grid, an arrangement which just fits on the back of our recovered Compaq laptop. This is how it looks with the diffuser (crepe paper) removed.
Testing your build
To prove you have wired your display correctly, download and install the HL1606-LED-Strip-PWM library and install it into your Arduino sketchbook folder. You can find your sketchbook folder by launching the Arduino IDE and choosing Preferences. For example in Lubuntu, the default location for the Arduino sketchbook is ~/sketchbook (using the ~/ abbreviation for your home folder). After installing, the files HL1606stripPWM.cpp, HL1606stripPWM.h and the examples folder should all end up in a folder ~/sketchbook/libraries/HL1606stripPWM. You’ll need to restart the Arduino IDE for it to recognise any new libraries. More detail about Arduino libraries and installing them is available here.
You should be able to immediately test your display with examples distributed within the library, following the wiring guidance in the comment headers of the files, and changing the number of lights in the program to match with the number of lights you’re using. The pulse example is most suitable for a situation where you have little power available, as it illuminates only a small number of the red LEDs at a time. However, the color_swirl example is what we need to impressively shrimp our Presario, immediately transforming the back of its screen into a hypnotic rainbow surface (see video of a Compaq Presario 700 running color_swirl).
That’s all for now. In future installments, we’ll learn how to control the display from the laptop in real time, turn it into a huge graphic equaliser, and fix it up permanently to the laptop
Safari Books Online has the content you need
These books in Safari Books Online will help you enhance your Arduino project:
|Getting Started with Arduino gives you lots of ideas for Arduino projects and helps you get started with them right away. From getting organized to putting the final touches on your prototype, all the information you need is right in the book.|
|Arduino Cookbook, 2nd Edition helps you create your own toys, remote controllers, alarms, detectors, robots, and many other projects with the Arduino device.|
|In Beginning Arduino teaches by using an amazing set of 50 cool projects. You’ll progress from a complete beginner regarding Arduino programming and electronics knowledge to intermediate skills and the confidence to create your own amazing Arduino projects.|
|Building Wireless Sensor Networks helps you build a series of useful projects, including a complete Arduino- and XBee-powered wireless network that delivers remotely-sensed data.|
|Arduino Robotics will show you how to use your Arduino to control a variety of different robots, while providing step-by-step instructions on the entire robot building process.|
|Arduino Projects to Save the World shows that it takes little more than a few tools, a few wires and sensors, an Arduino board, and a bit of gumption to build devices that lower energy bills, help you grow our own food, monitor pollution in the air and in the ground, even warn you about earth tremors.|
About this author
|Cefn Hoile sculpts open source hardware and software, and supports others doing the same. Drawing on ten years of experience in R&D for a multinational technology company, he works as a public domain inventor, and an innovation catalyst and architect of bespoke digital installations and prototypes. He is a founder-member of the CuriosityCollective.org digital arts group, and a regular contributor to open source projects and not-for-profits. Cefn is currently completing a PhD in Digital Innovation at Highwire, University of Lancaster, UK.|