Final project: Theremin-Lamp

Project description

Searching the idea

There was a long way from first questioning myself about "what would I like to do for this project?" to this point where I finally decided what do I want. At first I wanted to make some smart-house subsystem. The main point was that the smart-house system was meant to be sparced, spread all over the house and it wasn't easy to decide which part I would like to begin with, and that was the problem.
But then one day my instructor, Ohad, told me to focuse on a single thing that would be much easier to develop, and I decided to make a smart lamp with interesting user interface. I find the theremin interface really interesting and this is a good thing to start my smart-house-developement from studying such a thing!
You may find my early ideas on my previous-idea-page or on my some-more-ideas-page or on my CAD-assignment.

What's the goal?

The idea for my final project is to make a lamp (multi-coloured) that is controlled by gestures and provides the end-user with the brand new user experience in customising his surroundings. I call it theremin-lamp after the musical instrument theremin (or thereminvox) and it's inventor, russian engineer and physicist Leo Theremin (because my lamp works on the similar physical principles with this instrument).
I would like to run the spiral developement for this project, so I need to understand what do I want to get in the end and then determine the macro-steps (iterations, spirals):

what was done on this subject before?

First I decided to look for any information about making theremin-like things at FabAcademy before.
Search request "theremin" gave me almost no results in capacitive sensors but Casper Koomen page a this year's FabAcademy (quite interesting design!). Not too much.
But searching Capacitive gave me a lot more results (about 50 pages!). I watched first 10 through and find really useful for my project (though many other were really interesting too):

  • this (because of interesting idea with two antennas);
  • this and this - because of detailed planning;
  • this (because of using multiple points) and this - because the design concepts are brilliant.

  • The problem is that most of them are about making touch-sensors and my main point is to make a gesture-sensor, but I hope that everything will be solved simply by incrementing the resistor's values.

    Dissemination plan

  • Make the chain of different prototypes (according to the idea of spiral developement) and by testing them with me mysel and some of my friends to get pros and cons for each of them (the closed testing). Do that by october.
  • Make a social network page about this product and some derivative (the capacitive sensors and some others), post some articles onthematic resources in web - in other words develop the strategy of the idea promotion (not the good itself). Do that by december.
  • When there is enough of people interested in this thing (or it's derivative) try to make a crowdsourcing by seting up an event based on design-solutions including project-based ideas. Propose tech suppot for a humble fee (make a landing page with prices and documentation (CC-BY-NC-SA).
  • Make the chain of reports and articles about the event py promoting the culture of using the product and derivatices.
  • Scale everything up.
  • Machines and processes

    It takes laser-cutting, PCB-manufacturig and maybe even CNC-routing to pass through all the basic operations needed to ccreate the lamp. I am thinking about making some interesting covers from composite materials, but that will be later (see the developement process).

    Materials and components

    Skeleton is made either from cardboard or from thin plywood.
    Making electronics needs FR4, microcontrollers and some other details
    Cover is made from really thin cardboard now

    Developement process documentation

    The desirable result

    Running the spiral develpement means divide the project into the developement stages. And that is the way I see that:

    The triangular spiral

    First step is to determine the desirable result and all the others are attempts to get as close to it as possible concidering that our resources (time first of all) are limited.

    Here is the general (undetailed) description of my project, that is the way I want it to be. I would like to separate it into two concepts: the functional design and styling.

    Functional design

    Functionaly my project consist of the following components:

  • Main controller (runs the program). It has to be fabricated PCB!
  • Sensor (capacitive sensors).
  • The lamp module (on RGB + white ultrabright LEDS).
  • Styling

    At the same time on the styling side there are some tasks too:

  • It's fabrication has to include as many different techniques as possible but I think that it is fine to ignore this on the early iterations adding different technologies bit by bit.
  • I want this lamp to be stylized theremin somehow. Not like being a box with antennas but to keep somehow the very spirit of this unique musical instrument or at least showing that it has some roots in the area of musical instruments.
  • ThereminLamp iteration_0

    What do I focus on during this iteration

    In this iteration_0 the main thing I wanted was to pay as much attention as it's possible to the rapid functional prototyping and the design parts. Thus electronic part is being prototyped in the most fast and simple way - by using breadboards and through-hole circuit boards for prototyping. Thus for this iteration we have one microcontroller that takes information from one input chanel and controls one output chanel.

    ThereminLamp iteration_0: structure and planning

    Functional design

    Here are the tasks (based on the project structure) for iteration_0 functional design:

  • Main controller. Everything is made on the same microcontroller (to defer the communication between different controllers and thus to ease the project at this moment) - Attiny44. May be assembled on breadboard or on prototyping board.
  • Sensors. Simple capacitive sensor made from resistors and copper foil (a piece of FR4).
  • The lamp module. Now it is just one LED (just to be able to see whether simple testing algorythm works or not).
  • Styling


    Here are the tasks (based on the project structure) for iteration_0 styling:

  • Make a 2d-design for the lamp skeleton.
  • Make a press-fit constructor for the lamp skeleton.
  • Decorate the lamp with some misic-related patterns (to pay a tribute to the thereminvox)
  • The lamp itself is stylized table lamp. None of electronics os specially hidden to ease the debugging process.
  • It has to be compact and stylish. My very early sketches about it look like this:
    What I wanted it to look like What I wanted it to work like

    This figures show how does my lamp have to look like and what gestures does it have to understand. Styling depends on both of this criterias and I will be keeping it in mind during all the iterations but on the very beginning (iteration_0) my main priority will be to make a single-input-single-output device to test the sensors and study the related programming.
  • ThereminLamp iteration_0: implementation

    Part 1: functional design. Click to see more!

  • Main controller.
    Attiny44 runs the whole program (gets the data from one capacitive sensor and controls one red LED). I know that it is not really good to use the preadboards (I got away from that in iteration_1) and it is good to make details instead of buying (even if you already have some. Later while replicating it may cause the dependancy on this details and on their reseller) but for now the main priority was to build the working prototype as fast as it's possible, so that's what I've got: Attiny44 on the breadboard - prorotype_0
    I have all the connections needed to make the controller work (reser is pulled up) and be flashed (you may see specially soldered for such occasions connector) with FAB_ISP. At this point everything is powered from Arduino Uno (I connect black and red wire to 5V and GND). That is the most simple way to prototype (yet not always the most stable!).
    That's how does it work (so far):

    It runs the very simple program: when any conductor (my hand for example) is getting closer to the sensor, the LED starts to shine brighter and when you get the conductor away, it fades.
    I made a program in the arduino IDE (here is the source sketch if you want to try it), it contains the basic arduino capacitive sensor library (desctiption and how-to-use are here). You may find the instructions about how to use attiny44 with arduino IDE here. And yes, the LED is HUGE!
  • Sensors. Simple capacitive sensor made from resistors and copper foil (a piece of FR4).
  • The lamp module. Simple prototyping board with RGB+W ultrabright LEDs without charlieplexing.
  • Part 2: Styling. Click to see more!

  • 2D-design:
    As I wrote above, there are some requirements on styling. To reach this goals I decided to make a press-fit kit from cardboard at first:
    pressfit blueprints
    At this point I am not making the central column and the lamp base. It is up to further iterations.
  • Press-fit fabrication
    That's how does it look after laser-cutting (with epilog helix laser, speed = 30,power = 40, frequency = 500) and assembling: pressfit assembled
    As you see, the lamp looks nice. In fact there was a little problem with assembling it, maybe I little messed up with sizes, but I will make 3D-model to check out for sure during the next iteration.
    The next step is to make the musical-stylized cover. To reach this goal I decided to put different musical patterns on the cover and laser-cut them. Sounds easy, doesn't it? Still, there is a little problem: the shape of side surface is a little complicated and it is not easy to make it's planar scan (not only planar projections) and I had to measue this shape from the assembled lamp by attaching the paper to it and tracing the touch outline. After that I tried to digitise it in CorelDraw and that's what I've got:
    Lamp cover
    And that's what do we have when everything is cut: The lamp with cover
  • Iteration_0 result analysys: what did I study from that?

    There are some things that didn't work really good:

  • The way I was prototyping eectronics isn't really good enough (I mean for sensors). At first it seems that using pre-fabricated prototyping-pcb is faster, but at the same time, if I want to use two of them and if I want them to be interchangeable, I need them to be completely same (which isn't easy when it depends on the size of additional piece of FR4 that is working like a foil or on the way I solder it).
  • When trying to implement any new design, better spend some time for making 3d-model and check if all the details fit well! When I sent my 2d-blueprints to my instructor, it turned out, that the size of one detail was wrong and the lamp would never be assembled! And at the same time, when I made a cardboard prototype, I managed to assemble everything (which means that the material is in tension and more than this - all the lamp may be deformated. That is not good). So first thing to do in iteration_1 design-block is to make a 3d-model of my lamp and fix everything that doesn't fit!
  • What I have for now is:

    Assembled lamp:
    The lamp with cover
    Working single-input/single-output prototype:
    Attiny44 on the breadboard - prorotype_0

    ThereminLamp iteration_1

    What do I focus on during this iteration

    After I made a single-input/single-output device in the iteration_0 it's time to play with more complicated things!
    Now I want my lamp (based on the fabkit from now on) to work with multiple inputs and outputs. All those sensors and actuators have to be fabricated PCB-s I could use with FabKit.
    I also want to make sure everything is ok with my 2d-design (by making 3d-design for my lamp). In fact I want it to be more simple to avoid the problem with side surface (It makes the lamp a little less stylish IMHO but at the same time it ease makint the cover a lot, because in the next iterations the shape of the lamp will be pyramidal!

    ThreminLamp iteration_1: structure and planning. Click to see more!

    Functional design


    Here are the tasks (based on project structure) for iteration_1 functional design:

  • main controller Main controller is FabKit. It allows us to attach more sensors and control more complex output devices.
  • sensor Sensors are the fabricated SMD-boards. They can be attached to FABKIT's pins, so they are some kind of extension boards.
  • The lamp module The lamp is a fabricated SMD-board that is attached to FABKIT's pins. It has complete RGBW-colour set and is also an extension board.
  • Styling for iteration_1. Click to see more!

    Here are the tasks (based on the project structure) for iteration_1 styling:

  • Make a 3d-design for the lamp skeleton (to fix the size problems)
  • Change the 2d-design for the lamp skeleton (fix the size problems, make it more simple)
  • Different fabrication techniques. As much as possible here.
  • The musical part of design is not improved in this iteration (just change the details form to fit new simple shape of lamp).
  • The lamp itself is stylized table lamp. None of electronics is specially hidden to ease the debugging process.
  • ThereminLamp iteration_1: implementation

    Part 1: functional design. Click to see more!

  • main controller Main controller is FabKit. It allows us to attach more sensors and control more complex output devices.
    That's what I've succeeded to fabricate:
    Etched the PCB's
    Fabkit is etched!
    Rinsed them to clean the paintspray
    Fabkit is clean!

    Soldered the FabKit:
    Fabkit is ready!
  • Sensors and lamps Sensors and lamp modules are the fabricated SMD-boards. They can be attached to FABKIT's pins with wires.
    That's what I've succeeded to fabricate:

    Lasercutted the paintspray
    electronics is lasercutted
    Etched the PCB's
    Electronics is etched!

    And soldered them:
    Partially soldered Everything is done!
  • Part 2: Styling. Click to see more!

  • make the 3d-design for the lamp skeleton
    To reach this goal I made exported my 2d-design from coreldraw (cdr -> dxf) and then imported it in rhino. I wanted to use 123D-design at first, but there were some problems with scaling while importing svg-files I've got after exporting details from coreldraw (cdr->svg). So I decided to try anything else and I choose rhino after my instructor's recommendations.
    That was really wise choise because rhino turned out to be really easy-to-start thing for me. You may find some more details at my CAD-seek page, but to be short - that's what I had as the firt result: first 3d-assembly
    As you see, I really messed up with sizes and the next thing to do was to fix it.
  • Change the 2d-design
    After 3D-modelling my lamp I understood that I have either to change the side ribs, or change the upper part. I choose the second option, because it was way more simple (and it increases the "window" at the top of the lamp, where I can put another LED-panel. That is how it all looked like before and how does it looks like now:
    Before fixing:
    blueprints before fixing
    After fixing:
    blueprints after fixing

    I also fixed the 3D-design and now it really can be assembled: rhino good
    The other thing to do with 2d-design was to make the ribs shapes be more simple (that's because I want to experiment with minimalistic design and also it is really difficult to make side surface blueprints with patterns. That is the result: simple 2d-design
  • ThereminLamp iteration_1 result analysys: what did I study from that?

    The main thing about this iteration was to make a progress from the previous state, and it seems to me that this goal I've reached. Rhino experience was really interesting and making new PCB's was really cool!
    The only thing that's left to do here is to program my ThereminLamp!

    Back to my main page