Remote Controlled IKEA Death-Star Lamp





Introduction: Remote Controlled IKEA Death-Star Lamp

Being an engineer myself I could not resist adding remote control to this manually expandable lamp I saw at IKEA, no matter the cost. In this project I've replaced the pull string with M3 threaded rod and DC motor, added a micro-controller to drive it and after a bit of soldering, cutting, drilling... it moves by itself. The lamp can be controlled two ways. First of all, as you would expect, the light can be switched on, off and dimmed using standard wall switch. In addition to that, there is an Infra-Red remote control for more precise and programmable movement. In fact, it allows to save 3 positions and remembers the last position when switched on.

Sadly, at the time of building it, I didn't plan to make detailed instructions. Consequently, most of the pictures posted here are of the finished assembly. Hopefully, my description will be detailed enough for you to be able to achieve similar result.

Step 1: Parts Used

Step 2: Mechanics

Luckily, there was no need for a significant alteration of the lamp itself. I only had to remove the pulley and the string that were used to expand it. The string I've replaced with standard M3 threaded rod (could not find a lead screw of such a small size), while in the pulley's place I've mounted a DC motor to drive that rod. It was fairly easy to mount DC motor using plastic bracket that I've made out of a 5mm flat plastic piece (see drawing).

On the other end of M3 rod I've mounted a ball bearing from an old 2.5" hard drive for support. Without this support the rod was vibrating too much when spinning.

To the moving piece I've mounted an extra long M3 nut. I tried a standard size nut, but found that the thread wears off very quickly. Hopefully the larger one will last long time. At the time of writing it has been around 7 months of daily use and its still working. Going back to the design, to mount the nut, I have soldered two pieces of wire around it (see diagram) and slotted into the place of the spring that used to support the string. As long as both ends of M3 rod are supported, there is no need to fasten the nut in any way. You might want to add an O'ring to it though, as there is a significant vibration and noise when it's moving.

Finally, to join M3 rod to the motor I used brass joint that was a real challenge to find. It did need threading on one end for the rod and balancing wasn't easy, but it worked pretty well at the end.

Step 3: Position Sensor

DC motor is fine to drive the lamp, but without knowing lamp's position it could be difficult to control it. Running a motor for a precise time was not an option as due to friction and other factors the motor speed was not repeatable. I've also tried a stepper motor instead of DC, but this appeared to be too slow and sometimes would skip a step or two. So instead I've mounted a 10K potentiometer for a sensor, continuously providing position to the micro-controller. This turned out to be repeatable and more precise than I expected.

Mounting it was fairly easy by removing one of the pins acting as a hinge for two green parts. On one side, I've used a small piece of PCB to support the potentiometer, while on the other side I've fitted a screw securing those two parts together.

Step 4: Control Board

As for the brain, I've managed to put it all inside the canopies. It was a bit of a challenge as I had to mount a 12V power supply, Arduino Nano micro-controller, DC motor driver, power regulator for DC motor and 240V relay to control the light itself all on a single control board. Of course it was well worth the effort as I managed to hide most of the components from the view making it look more like a standard lamp as oppose to a geeky project. Even my partner was OK to put it into our bedroom.

Its not shown in the diagram, but all the cables are wired the the PCB using connectors making assembly slightly easier. At the same time, the Arduino Nano and motor driver are mounted with header connectors so they could be easily removed/replaced if necessary.

Arduino Nano has got a voltage regulator of its own, but I had to add another regulator for the DC motor, mainly because I wanted better control over the motor. I ended up adjusting it to 7V as going any higher was making the motor a bit warmish. In fact, as you can see in the second picture, I had to mount a radiator for voltage regulator to dissipate some heat. If I would do it all over again, knowing what I know now, I would probably go for motor driver with higher voltage rating and get rid of the voltage regulator entirely.

Step 5: Software

The software is fairly straight forward. First of all I programmed in a standard wall switch with the following functions:

  • Switch ON - toggle the switch once while lamp is OFF;
  • Switch OFF - toggle the switch once while lamp is ON;
  • Dim (move to closed position) - toggle the switch twice within 1 second (in ON or OFF state);

Then, for the remote control I used a low cost Sparkfun remote control. It fit perfectly for what I needed. Here are the functions it supports:

  • (I) - switch lamp ON or OFF (move to last known position if switched ON);
  • A, B, C - switch lamp ON and move to a preprogrammed position;
  • < and > - move in and out one step respectively;
  • ^ and v - move all the way out or all the way in respectively;
  • O - switch to programming mode (press A, B, C to save current position under that option);

This gives the flexibility to switch to different positions while at the same time, using wall switch makes, it very practical. You wouldn't want to train people before they can switch the light on or spend the time searching for remote control in the middle of the night.

Arduino (.ino) file is attached. Please note that the code, diagram and all the rest are provided as is without any expressed or implied warranty or fitness for a particular purpose.



  • Creative Misuse Contest

    Creative Misuse Contest
  • Clocks Contest

    Clocks Contest
  • Oil Contest

    Oil Contest

36 Discussions

Can you make me a servo for my lamp.. how much?

Hi @AdriusA1,

I am making progress. I have one question for now.

The pot-meter does not fit the holes in the lamp (I have the silver one)

Did you cut / drill to make the hole bigger? Also is the screw holding the pot-meter only 'touching' it or really through the plastic of the knob?

So in general a bit more information about the pot-meter mounting could be helpful.

Thank you very much!

3 replies

Hi RogierH1, yes I had to enlarge the hole using a drill. The screw you see in the photo only touches the shaft of the potentiometer and holds it in place. Also, you might notice a piece of cardboard used around the shaft to center it as the hole was a bit too big. On the other side, the potentiometer itself (covered with white tape) is secured to a small piece of PCB that is screwed in to the side of the green part. Sadly, I did not take any pictures at the building stage so that part is not visible.

Hi Audrius,

Thanks, this part is working. The problem is now with the mechanics..
I was happy I did find a lead screw of 12cm, but unfortunately the motor is not strong enough to pull the lamp up when fully assembled.

I have see 2 options right now and would like your opinion:

1. Do not use the lead screw

Buy a standard rod and long nut, just like you have done. Question: What size should I use, I can find motor couplings from 2mm to up-to 6mm. I cannot find a long nut of M3 size, also an M3 rod seems very wobbly, needing an extra stabilisation like you did with the hard drive part. Maybe a 4, 5 or even 6 mm is less flexible and can be used without any extra stabilizer. Do you think (apart from fitting it) it will mechanically be problem to use a wider rod?

2. Use a different (geared?) motor.

So keep the lead screw, but have a stronger motor. The problem is it needs to fit beneath the lamp. Do you have any suggestions for motor?

Thanks again!


That's an interesting find, but I can see why it would be difficult for a small DC motor to pull. The pitch is 4 times greater than the standard M3 rod that I used so it would require 4 time more strength. Perhaps a stepper motor would be strong enough? I discarded a stepper as being too slow, but with this rod that would not be an issue.

A big enough motor, DC or stepper, would do it, but as you say, the lamp gets in the way. In that case, can you change the lamp to something with a lower profile? Maybe with multiple smaller laps around the motor?

You will probably experience a wobbling effect with any rod. Of course, the thinner the rod and the faster it spins the bigger vibrations you'll get. But the problem with the thicker rod is that it would be harder for the motor to spin it. Basically, you'll end up in the same situation. I've done a bit of testing with M3, M4 and M5 screws on pull strength and I were convinced that M3 was my best option. But your mileage may warry.

As for the long M3 nut, how about this one
Please be aware that some of the sizes come in 2 way only (blocked in middle), as it is written in the description. In that case, simply chop it in a half. Of course, make sure you buy the nut at least twice as long as you need.


5 months ago

Great project.
As nowerdays Tradfri is available I think it would be an improvement to use the zigbee-module from a Tradfri warmwhite GU10 (6,99€) instead of an infrared remote. The Tradfri zigbee module has one PWM output. One pin from Arduino used with PulseIn() should be able to measure the pulselenght and therefore the "brigness" the lamp is set. Completly no pulse = dark -> fully close lamp, permanent on = brightest -> fully opened lamp. And all between.

So instead of seperate remote control you can use Zigbee and Hue-Bridge and Szenes and so on.


@AdriusA1: Could you elaborate more about the motor driver? It's a field I am not familiar with. The motor driver you listed is capable of delivering the needed 7v (2.7v - 10.8v) output, so I guess the LM317 is only for being able to use a 12v power supply with it. Correct?

I am thinking about using a wemos D1 mini with this shield:

or maybe this one is better?

Also is using a 12v rated motor a better option instead of driving a 6v motor at 7v, because of heat? Any suggestions?

Finally do I understand correctly the motor is at the bottom of the lamp?

(I see no wires running, but maybe they are out of sight or through the plastic)


1 reply

Hi RogierH1, indeed LM317 is just to adjust the power to the motor. If I were to do it again I would use PWM on 12V rated driver to control the motor. IMO, I2C seems too complex for a simple control like that.
Higher rating motor probably would be better, but I struggled to find one of such a low profile. As you can see in the first photo of the second step, it is mounted in the middle, just under the bulb (taped white). I wanted it to be as small as possible not to look clunky. Wish it would run faster though.

Hi I was wondering how to make it into a lamp because I can't hardwire it into the ceiling.

Hi I was wondering how to make it into a lamp because I can't hardwire it in the ceiling.

hi, my son saw your video and love it. I would like to try and make one myself but without the control, I would like to make one that works with just the switch like the first part of your video. What would I need and would it be less complicated?

1 reply

Hi, the complexity here is not the remote control, but rather the microcontroller and all the wiring that comes with it. If to have just on-off operation then you could get away with a relay or two and a couple of position switches to physically break the wires. However, mounting switches to detect position at each end could be a callenge on its own. I'll leave that to you to figure it out.


1 year ago

Great Instructable, I'm in the process of putting it all together but I've had problems with the feedback 10k pot. I've mounted it as close to how you've done it but I don't seem to get any reaction from it. I've used a single turn 10k, approximately how much does yours turn? And do I need to change anything in the code to adjust its limits and sensitivity?

2 replies

Hi, I'm pleased to hear that you are making progress. Assuming you've wired potentiometer correctly, you should be able to read the position value on POSITION_PIN. In fact, there is a commented out line in the GetPosition() that when uncommented would show position in the Serial Monitor. Most likely that value will be slightly different then mine so you will need to calibrate it. To do that, move the lamp to the top position (open) and set constant TOP_POSITION value to whatever is on POSITION_PIN + 1. Then move the lamp to the bottom position and set constant BOTTOM_POSITION value to POSITION_PIN - 1. Its important that the top value would be less that the bottom value. If that is not the case you will need to change the polarity on the potentiometer. Please note that +1 and -1 are the offset values to make sure that the lamp doesn't hit the max position as it could get stuck. This offset might need to be increased if position reading is not stable. Hope this helps and I would be definitely interested to see your final result.

Extremely helpful, its all working now, thank you very much. I just need to tidy up the mechanics to make it all repeatable and try and fit it all in the space! I had 200 for the top position and 310 for the bottom but that the way I've aligned the pot.

I'm still in the prototyping stage so once I've refined some of the parts I will post some pics.

I've pretty much followed your purchase list accept for the LM317, I went for a off the shelf module that handles 2A.

Very great tutorial!!!

I'm approaching to realize it with little changes (Wi-Fi control instead IR)... But I really don't get how the potentiometer works to give me the position of the lamp!

How can I know the position of the lamp using it? Where do I have to connect it in the circuit? Directly to driver board or to the microcontroller?

Great idea and implementation! How did You connect the M3 rod with the hard drive bearing?

Hello, great project! I have all parts here, but have problems understanding the circuit board. Can u upload your fritzing file? The circuit boards shows 2 potentiometers, 10k and 5k.


1 year ago

If you turn off the light, how can there be power for the motor to close the lamp?