When I picked up my first Arduino microcontroller — the humble but wonderful Arduino Uno (Surface Mount edition), I felt the same way and had the same thought as when I picked up my first Apple Mac (the venerable SE30): “This device and its environment will be career defining”. Long lasting and intense.
Well, it’s only been a couple of months since then, so I can’t speak of long-lasting — but as for intense — well, I’m jonesing for embedded computing and the whole microcontroller environment as bad as any junkie. It has opened up a whole new world for me, one I think I’ve picked a good time to dive into.
I’ve spent the last 30-odd years working in the creative industries —I studied graphic design, and I’ve worked as a designer, art director and most lately creative director in the design, advertising and digital industries. From a my first job at Vogue Magazine, through to working with some of the world’s biggest brands, my focus has been on aesthetics, style, story, meaning and message.
Since the mid ’90s, I’ve almost exclusively worked in designing for digital media (in fact, it’s hard to see any part of design today that isn’t). It almost goes without saying that the tools of the trade during most of that time have been computer hardware and software — the Apple Mac and Adobe being the power tools in the toolkit.
Despite almost exclusively using digital tools, I’ve not taken as much advantage of the programmable features of these tools. OK, I can throw up a simple HTML/CSS site that looks a little like the comps I’ve designed; I’ve done some Flash ActionScripting — but the hard work has always, and rightly, been done by the smart guys down the corridor.
So, I’ve been a designer, a ’creative’ — using a computer for sure, but paying very little attention to actually programming the things. Until that moment when I picked up that first Uno…
It’s all about creating, so aptly described by the Interactive Telecommunications Programme at Tisch, as being the ”Art of the Recently Possible”. I can’t use the bleeding-edge tech the likes of which the NASAs and the Googles and Lockheed Martin’s are playing with, but the kind of magical technology that is now filtering down through these verticals to become available to everyone else…
It’s been frustrating, it’s been a lot of hard work, but after a few months exclusively studying the domain, it feels like I’ve joined a peculiar elite — the coders, the hackers, the geeks. It feels strange and exhilarating to be working with algorithms, mathematically generative programs, geometry, computer vision…
So, my plan is to study the domain as deeply as I can. I’m studying C++ at Harvard; How to Think like a Computer Scientist and Learning to Program with Python at MIT; Electronic Interfaces at Berkeley; and the IoT at Rice. I’m delving not only into the Arduino IDE, but other frameworks, such as Processing and openFrameworks. I’m devouring as many books on the subject as I can. I’m making plans to go back to university next year to allow me to explore fully this combination between art and technology.
I want to create art and objects, pieces and prototypes, environments, experiences and events, not necessarily using bleeding edge technology, but creating the ‘Art of the Recently Possible’ by taking advantage of the explosion in miniaturization that mobile computing has brought. Smaller, Faster, Cheaper — what’s in the R&D labs in Korea, China, Taiwan and Japan will be in the workshops of makers and hackers not too far after.
OK, so I’ve gone through the tutorials, built a couple of little things, but so far nothing particularly noteworthy — although I have two or three galleries worth of ideas. But in the last few weeks I’ve been working on my first project that is more than the smaller projects found in the books and tutorials. I hadn’t undertaken it until recently, as I hadn’t found a way to build it to match my extremely high production values.
I’ve now found the components and construction system I needed. I’ll talk more about how this project was constructed as I go, along with my ambitions for it as I progress through various prototypes.
When I first conceived of this object, I had a number of things in mind. I wasn’t prepared to spend a huge amount of time on the project until I could be sure of the following:
- the production values should be very high
- it should to be easy to assemble and disassemble
- the best materials should be used
- it could be programmed to display full colours, and many
different animated patterns
- the control system should be mobile, using Bluetooth and the IoT
- it should be able to run on batteries as well as mains supply
- it should be beautiful
- it would be ‘sheathed’ in a diffusing material — plexiglass, either black or white, or fused glass
- it should be able to hook into various data-streams and visually reflect changes and flows within that data. For example: the sound of Saturn — https://www.youtube.com/watch?v=Sh2-P8hG5-E; or feedback from you fitness monitor; whether we’re at DefCon One yet (we are?) etc etc…
I decided to use the 8x8 Neopixel Matrices sold by Adafruit of New York — www.adafruit.com. These are lovely panels, extremely well made. They are not cheap however. There are far cheaper chinese clones available, and I’ve used the to good effect, but for this project I decided to go to the source and get the very best. They are available from Adafruit’s online store here — https://www.adafruit.com/products/1487
Data and Power
The first thing to do is to make sure that I can chain all six panels together, send a data signal through them. From this I can thenwork out approximately the power needed to supply them. According to the data sheet, each panel may take as much as 3.5 Amp to light all pixels at full white. I’m running them from my own bench supply at 5 Volts for both signal and power, at around 1 Amp for all six — so there is plenty more gas in the tank if I want to run them brighter.
I’d like to run them from a 5 Volt, 4 Amp Power supply, so we should be fine for power. I’ll look at how we might add a socket for that type of power supply later.
The low power consumption means it should OK to also run this from a LiIon or LiPoly rechargeable battery, but at this stage, mains will do.
Once I was sure that the panels would run, the next thing to do was look at how they were going to fit together. This is where the wonderful Makerbeam comes in. Makerbeam — www.makerbeam.com — specializes in sales and production of small aluminum profiles and related hardware. They focus on the sale of beams with a diameter under 20mm.
There’s a great review of the system here by evilmadscientist — which goes into the history of Makerbeam and it’s sister products Makerbeam and PCB Grip.
I’ve found it really easy to work with — it’s lightweight, and the fastening system really works — a failing with the previous incarnation of Makerbeam and other T-Slot Extrusion systems.
Now it’s time to lay out the panels, and work out the wiring plan. Because I’ve made a deliberate decision to make the construction easy to disassemble, this can be quickly modified if we run into any issues.
In the image above, I’ve screwed in some of the 40mm Makerbeam profiles onto the pre-drilled mounting holes on the Adafruit 8x8 Neopixel Matrices (Neomatrix). The stickers are to make sure I don’t mix up the boards. Time to start putting some panels together…
Thats two done, another 6 to go… The beams fit really neatly, with nuts and bolts holding them to the NeoMatrices, and allow the cube to be built up panel-by-panel…
OK, that’s four of the sides bolted together with Makerbeam. Because of the different placement of the mounting holes on alternate sides of each Neomatrix panel, I’ve had to slightly fudge the way the ‘top’ and ‘base’ panels are fitted — by using a set of double nuts and the longer 12mm bolts, we can raise these panels away from the ‘collar’ panels by the right amount. Not 100% sure about this method, so looking at alternative ways to do it.
Makerbeam has a hinge component that might be a better bet than using the beams and mounting screws, but would again run into the same issues with the differently placed mounting holes on the Adafruit Neomatrix panels.
But back to the build. Now that we have the shell put together, we can start to look at wiring it up. Following the diagram from earlier, we can run the data wire from the Arduino (I’m using Digital Pin 6) to the first panel’s DIN (Data In) pin. From there, it’s just a matter of running the data wire from each panel’s DOUT (Data OUt) pins to the subsequent panel’s DIN pin. I’ll be running separate 5v and GND wires to each panel individually.
Once the data wires have been run it’s time to hook up the 5v and GND power wires. I’m going to run a wires for both to the little yellow connecting block seen above, and then breakout 5v and GND wires to each panel. That’s a lot of wires. It might be that heat management might be an issue — we may need to use a heat sink of some sort.
OK, now that’s done, we can attach the remaining two panels to the structure. Then, with a bit of luck, we can hook it up to some computation — in this case, for prototyping purposes, I’m using the Adafruit Metro board but down down the line, I expect to be using a mini board, such as one of Adafruit Feather range — possibly the Bluefruit Feather 32u4 or M0.
Another likely board is the amazing Paul Stoffregen’s mighty ‘Teensy’ — I own a couple of the 3.2 boards and they are blisteringly fast, particularly running LEDs (but that is just a hint of their true strength). The new 3.6 version has just been fully and over-funded on Kickstarter and looks to be an even better machine . We’d need to add a Bluetooth module into the mix as the Teensy does not have Bluetooth on board.
OK, now to plug it in and test it. Fingers crossed! I’ll talk more about the code later, but the following photos are just running the standard example from the Adafruit Neopixel Library. I’ve had some success with both the FastLED and Neopixel Library by Makuna . I’m also working with some excellent programmers who I’ve asked to code directly for this object — and I’m seeing some great success with various techniques and approaches — including using volumetric pixels — or ‘voxels’.