I've had a vision for a particular project for quite some time, but up until now haven't quite felt I possess the right combination of necessary skills and opportunity to execute it. The Homemade Hardware class has given me sufficient motivation to finally attempt the project.
I've held a certain fascination with light-painting for quite some time. Even before coming to ITP I was thinking about ways to explore this unusual medium. Wikipedia defines light painting as
Light painting, or light drawing, is a photographic technique in which exposures are made by moving a hand-held light source while taking a long exposure photograph, either to illuminate a subject or to shine a point of light directly at the camera.
I envisioned a way of generating the images computationally, or generatively, using custom software and some sort of CNC machine. Hence, my idea for the light printer was born.
A traditional inkjet printer moves a printhead along two axes, let's call them X and Y, and the paper being printed on serves as the canvas. The light printer is conceptually similar, except instead of using a physical piece of paper as the canvas, and the printhead leaving a physical trail of ink, the long exposure photograph records the movement of the light by recording the light's movement over time.
The final installation will be comprised of three elements:
- The light control module (LCM)
- The CNC system (stepper motors and drivers)
- The custom UI / software
Eventually the user will interact with the installation using a tablet and stylus to draw out an image. This image will then be converted to a type of g-code and sent to the light printer. At the same time, as DSLR camera will be activated to begin taking a long exposure photograph. My focus for the mid-term project was the lighting control module.
Mid-term: Designing the Light control module (LCM)
In order to create an 8-bit color image as the final result, I'll be using an addressable WS2812B LED, which has a control IC built-in. To facilitate the real-time communication between the application and the LCM I elected to utilise the RFM69HW in favor of a BLE module. I based my design on the open-source Moteino module, which makes use of the same RFM module and has the tried and tested ATmega328 at its heart. Because the LCM will be mechanically moved in the XY plane, most likely using a system of pulleys, wires and bearings, has not been fully resolved yet, I wanted the design of the LCM to be as flexible as possible with regards to configuration, as well has having the smallest possible cross-sectional footprint. For this reason, I decided to design it in a modular fashion using three separate boards. The first board is a very simple PCB onto which the LED is mounted. This is the front-facing board that's seen by the camera. The middle board simply acts as a connected, carrying power and the control signal to the LED. The main board, which is situated at the back (think of the three boards stacked on concentrically on top of each other, with an inch or so spacing between them). The main board hosts the ATmega328 and RFM369HW module. The PCB design files for the boards are presented below:
The pictures below show the fabrication process for creating the boards:
Successes and Failures:
Despite meticulous checking the board for continuity errors, and taking great care using the pick-and-place machine, I was unable to load firmware onto the ATmega328 (TQFP package) SMT IC. In hindsight, not considering how to burn a bootloader onto the chip was perhaps my biggest shortcoming. In future, I think i'll make a point of ordering chips that already have the bootloader loaded. Despite not being able to load the code, I'm happy with how the board turned out, as all the connections worked and the parts were placed correctly on the board.
Redesigning the board and spacing out the components is probably a good idea, as allowing for a few extra millimeters of space will not hinder the design in any way. The steps forward forward are as follows:
> redesign LCM board,
> refine firmware to handle communication between software and LCM,
> design motor control board (MCB),
> complete mechanical design of CNC,
> fabricate CNC,
> complete custom software / UI,
> integrate LCM, MCB and software as a connected system of devices, including the DSLR camera