Spine desk lamp

a project for my work-from-home desk, with CNC cut profiles, addressable LEDs, with tentacle kinematics

Similar projects worth following

As winter started to show by shortening the amount of light coming though my windows, i realized that I was missing a crucial element on my work from home desk :  a lamp !
I had a quick look on what was commercially available but nothing caught my attention...
So let's start an overly ambitious project instead and use that as a pretext to start some digital fabrication!

Main goals

  • learn how to use a CNC
  • make a lamp
  • have it look great with a tentacle-like arm 

Secondary objectives

  • make a cool start up animation
  • be able to tune the light color to fit the time of the day
  • motorize the tentacle with stepper motors
  • have a through wood capacitive touchscreen to control those features

  • 1 × 3.6mm plywood
  • 1 × 4mm bike shifter cable
  • 2 × 0.5mm & 1mm carbon rod

  • Revival

    sebsplane05/13/2022 at 20:42 0 comments

    After taking the dust for a while, i restarted the project:

    i knew the stepper was way too weak to animate the arm so i decided to use an old standard servo that i had laying around.

    To test the idea, i went through a cardboard prototype again:

    Tested the setup with my RC transmitter:

    The servo managed to move the arm back and forth with sufficient torque !

    So i moved on with the design in fusion 360 and cut the support 

    Once in place in the lamp base, this plywood support did its job as expected, compared to the cardboard prototype, it did a better job at articulating this arm. However, i realised that i did not had any way of servicing the servo if anything when wrong with it : i had planned to glue everything in place with the lateral "feet" but the assembly was questionable. Back to the drawing board...

    This is when i had this long pause in the project because i ran out of ideas...

    I managed to get back to it by learning new skills in fusion 360 and putting blender aside :

    i redesigned the base around a rectangular core (just like skyscrapers) where the arm would slide into place. 

    The base of the arm would contain the rotary servo assembly that is now secured by four screws

  • Kinematics?

    sebsplane04/28/2021 at 19:29 0 comments

    Starting to secure

    To get a better sense of the rigidity needed for the  arm i started to secure the parts together with CA glue:

    To achieve an even spacing , i cut 3 spacers that hold the parts before securing them.
    I did the same on the bike cable for the arm. the lower half has ring supports to increase the contact surface between the cable and the vertebraes. It helps with the twisting and bending.

    Turning head

    In order to rotate the lamp's head i decided to make my own ball joint. I look what were the commercially available solution but they didn't convinced me.
    So I stacked several layers of aircraft plywood and assembled them with wood glue to reach a 10mm height. In fusion 360, i modeled 2 half spheres and set 2 passes for the cut.
    I also cut the housing which is held together with a M2.5 scew and nut.
    The result is really nice, the texture of the ball surface is a bit rough but helps to keep the joint rigid enough to support the weight of the head

    Motor, Action?

    So to actuate the arm, i planned to use a tiny stepper motor that i had in stock, a basic 28byj. I had read about capstan drive here and it seemed a good solution to my actuation problem.  I cut a pulley out of 5mm plywood and 1.5mm rims with a hole fitting the stepper shaft.

    the first motor support i made  in the picture above was not rigid enough and all the loads were on the poor stepper shaft. 

    So i designed another one with the possibility to tension it with a screw and with a support arm in front of the motor that now bear half the load and avoid the pulley torsion.
    The nice thing is that the mechanism is backdrivable and the arm stays in place , capstan was right, there is a lot of friction in those two cable loops !

    The bad new is that the stepper is way too anemic to drive this thing ( and this was confirmed by its datasheet) : i need at least 800g of pulling force on the cable to straighten the arm as above.
    I'm back to the drawing board for a drive system. I'm trying to reuse some parts i already have  and i may try to cut some gears to drive the pulley with a wounded microservo. I don't know if it will be enough and probably won't be backdrivable but i'm out of ideas....

  • Head and foot

    sebsplane03/17/2021 at 20:33 0 comments

    Tiny redesign

    The carboard prototype made me notice that the base of the spine was not rigid enough to support the weight and lever forces acting on the foot. I decided to redesign it a little bit to add a support for a second vertebrae and still have room for the electronics below:

    I made the notches in opposition to each other so they could counter the torque of the arm.
    I struggled to keep these shapes in the available workspace of my 3018 and i had to disable the end switches to gain a few mm of travel.
    I'm also using 5mm plywood this time (retailer was out of 3.6mm)  

    Unfortunately, i made another rookie mistake in the cuts set-up : i didn't add any tabs and put the two legs too close too each other, and my part broke off before the end of the path... I managed to salvage the part by cutting the leftover with a handsaw.
    Another irritating issue is the quality of the plywood i used : that micron-thick plated s..t peels as soons as it is being cut , leaving ugly scorch on the edges...

    In the end ,the foot  needed a little trim to fit to the tip of the leg but the assembly seems promising! I was really worried by the way it would work in real life, but so far so good. It gives me more confidence in my use of blender for the mechanical design !

    Cutting head

    I also cut the parts for the head and did another dry assembly to have a feel on  its volume :

    I think it'll be all right, i still need to figure out how i will link it to the arm... I'd like to have an adjustable articulation between the two to be able to shine the light away from my face if needed. Having this part ready will also help me figure out how much rigidity my arm requires: i bought several carbon rods (1 , 1.5mm and 2mm) and i'm confident that i can find a combination of those that will give the spine its stiffness...

  • Cardboard prototype

    sebsplane02/24/2021 at 18:07 0 comments


    Time for a shitty cardboard prototype to check the soundness of the foot design!
    After printing the part to scale on paper and cutting out the outlines in carboard, i assembled the minimum number of cutouts for structural integrity: the two arms and two baseplates.

    After a bit of tinkering and tape, i managed to get it standing !🤓
    I realized that the footprint is a bit large IRL but it seems to provide good enough stability. The constraints on the parts holding the base of the arm looks important , i think i'll have to strenghten a bit this area...

    Not quite...

    I tried to put it in situation here:

    But the overall shape is a bit dissapointing : the stiffness of the central shaft being the same all along the arm, it has a tendency to bend a lot a the base and the final segment is relatively straight.  No matter what tension i put on the cable , the bending will decrease toward the tip of the lamp .
    This is not what the blender render promised me ! 😭
    It's the kind of stuff that seems obvious in retrospec, but doesn't appear until you've done the mistake.

    What's next?

    I need the lamp's head to be high enough ( ideally above my secondary screen) and parallel to the desk's surface..

    So a few solutions are available to me:

    • create a "composite" central shaft with some kind of stiff material at the base and a more flexible one to the top, the main issue is that i already have drillled all the holes in my spines disks.
    • make a two ( or more ) stages mechanism but the foot might not be roomy enough to hold the actuation part
    • add some kind of springs with variable stiffness
    • use an increasing number of carbon rods  (and/or with a bigger diameter ) toward the base to increase its stiffness

    The last solution seems to be the less demanding in terms of redesign and it might also help with the lateral rigidity ... However the number ,size and location of these rods remain to be determined.
    I'll need to create the head  to account for its weight and dimension the stiffness accordingly.
    I also need to be careful on the torque needed for the actuation ...

    Even if more work needs to be done, i'm really grateful for this piece of garbage prototype, without it, i would probably have wasted a lot of plywood!

  • Foot design

    sebsplane02/14/2021 at 19:46 0 comments

    It's about the looks...

    As i said previously, i was a bit hesitant on the foot design. The head and the arm part are based on the same technique but i needed some kind of 3d assemblage for the base which need to hold at least the electronics and the stepper...
    I started some drafts in inkscape but i didn't managed to get satisfying results : i had a hard time visualising the 3d shape i wanted even with the "superposed" interpolation technique...

    Change of process

    Maaybe i need to do it differently this time : what if i designed my shapes in blender instead? Before trying anything, i had to make sure that i could export them in the familiar SVG format : i found the following blender addon that allows me to export the blender bezier curves as svg
    I think i'll have to tweak the scale because it exports the shape in viewport pixel coordinates, not a big deal , i'll see later on...

    I came up with the same interpolated shape , but this time , they are progressively angled to reach 20°, which is the inclination i find appropriate . The challenge here was to find a way to intersect the legs with those interpolated shapes and assemble them with notches.
    Earlier in this project i found some software that can do 2 profiles from 3D models but i don't think it would be flexible enough to do what i wanted :
    So i decided to do all of them manually, with the advantage of the 3D view to align the notches with one another.

    I used the duplicate linked feature which allows to clone a part and move/rotate it in place. When a modification occurs on one part, it is reported immediately on the other one: i have in a corner of my scene all the parts in a 2d plane that i'll be able to export at will. I don't know if fusion 360 or another cad soft can do that less painfully but i already know blender well so...

    I also started to find a location for the stepper and the wheel that will control the arm. I still need to find some room to place the wemos and the stepper driver.

    I think i will do a cardboard mockup to check the stability and the assembly before cutting any wood.

  • Head design

    sebsplane02/06/2021 at 13:05 0 comments

    For the lamp head design, i wanted to have a smooth transition between the body and the tip..
    I tried to use the "interpolation" functionality of inkscape but it is difficult for the plugin to guess what kind of morphing you want between shapes and it can be done only between shapes with the same number of points..
    So i decided to do the morphing manually, by stacking the shape one over another with transparency and different colors:
    I'm pretty happy with this methodology: i use the center hole that will allow me to glue these parts on a carbon tube as a reference point. Then i can control and correct the morphing between shapes to smoothly evolve them into one another.
    I did two drafts to see how i could morph into a flatter shape to host the LEDs

    Once i was kind of happy with the result , i imported it in blender, offsett each shape by 3cm and solidified them with my 3.6mm plywood  thickness.

    I also started a foot design but i'm not sure how to link them elegantly to the base of the tentacle...
    In the render below , i also adjusted the number of vertebraes to match the one i already have... As a result, the lamp has shrinked a little bit...
    Following the dry assembly, i also figured out that the base of the spine should be tilted by 15° or more: it will move the cg a bit backward and avoid a too big or too heady foot, and the aesthetics and kinematics will be better in my opinion

    I also contacted Brian from and he kindly reassured me on the soundness of the design and suggested that i should keep an eye on the twisting of the discs around the center shaft. I replaced the lateral cables by piano wires and thin carbon rods and it definitely helped to forbid lateral movement but i still wonder how i will fix the disc on the shaft.
    I'm also weighting the option of removing the rubber spacer between the disc to have a lighter tentacle....

  • First assembly !

    sebsplane01/27/2021 at 21:52 0 comments

    I managed to cut 21 profiles ( in 4 runs on the cnc )  and i couldn't help but try a dry fit with what i had on my hands :) :

    the only problem  was that i had to re-drill every hole to make the bike shifter cable go though... I also understood why my plywood started to fell off : there is only a micron thick layer glued on every side! I though plywood was made of equally thick layers but this one is plated :( .

    i used steel fishing line (rated 63kg, coated in plastic) for the actuation cables it looks lightweight and works well.
    However i'm wondering how i will turn this bendy, twisty contraption into a sturdy lamp: i  expect to have at least a lateral rigidity so i can actuate it only longitudinally . I'm still missing some spacer in between and maybe i will have to glue them to avoid torsion. I'm also thinking of replacing the lateral cables by some thin piano wire to straighten/rigidify . The assembly also suffers from the fact that the bike cable looks permanently bent in some places despite me trying to straighten it with some weight...

    here is a test with an addressable led strip in it driven by a wemos and the great library :I don't know if it will make a great lamp but it is a really fun thing to build ! 

    The movements looks really organic:

    I will look into what i can do to improve the movements predictability but for now i'm really happy on how it came out !

  • some more cuts

    sebsplane01/22/2021 at 18:34 0 comments

    Had the time to cut some more parts today ,but the finish is a little bit rougher:

    Maybe the bit start to show wear? anyways , i got 13 out of 25  vertebra done ... What i worry about is the number of spacer i have to cut: 50 meaning that i need to cut 3x50 =150 tiny plywood disk ! i'm not sure that's an effective strategy...

  • First cut !

    sebsplane12/11/2020 at 19:19 0 comments

    Back to Fusion360...

    With all due respect for open-source projects, i had a hard time using Freecad v0.18 to do what i wanted... But it helped me a lot to grip the basics notions of  CAD and CNCs. So back to fusion 360:

    This time, it was much easier to scale things up : 

    1. import svg (had to rescale it even if it was defined in mm ,weird)
    2. extrude the shape by clicking on them to match my plywood thickness
    3. create a job
    4. create a 2mm tool 
    5. select the edges i wanted to cut in the first pass : all the >2mm holes and create a 2d contour
    6. configure the number of passes ( 2 of 1.8mm each in my case )
    7. run a simulation to see everything running fine
    8.  added a drill pass to cut the 2mm cable holes
    9. repeat all the steps 3-7 to add the outside contour cut
    10. post process my gcode file and voila !

    Know your limits

    So let's fire GRBL candle and plug the cnc : after the origin setup , i send the gcode and start to see the magic :

    Unfortunately , things started to go wrong in the last step : the outlines cuts. For some reason , the bit started to go down wayyyy deeper than what i expected: 6mm instead of 1.8 ! After a second of hesitation, i see that the machine still want to cut at this depth, so be it ! I'm so close to having my first part, lets see... yes ! first part finished! it goes to the second one ...Oh no! the upper Y axis limit is hit ! ABORT ! 

    I was way too greedy on the size of my work area : they said 3018 so 30cm x 18cm workspace right? Not quite on my machine :)

    Lets do a rescue Gcode to save the remaining profiles :

    what? it also hit the X axis limit !?! what a noob !

    In the end i managed to get 2 profile out of my first cut, not that bad...

    At least it's enough to start testing some assembly schemes :

    Number one seems to be too twisty to be usable, number two is okay but with a 27mm spacing, i'd need 37 of them to complete my meter long arm! Maybe i'll go number three with 800mm-ish length /36mm spacing and 22 of them. We'll see...

  • CADs, how do they work?

    sebsplane12/10/2020 at 19:47 0 comments

    From Blender ..

    As soon as this idea popped up in my head , i had to immediately materialize it somewhere. It happens that i've been occasionally using blender for more than 10 year now and i'm familiar with a lot of its shortcut to model objects::
    With this first model i totally forgot about the basic principle of the tentacle : it has to have a central shaft to be articulated! Plus the spines are upside down,  and the spine profile lacks in details, but at least it gave me an idea of how it could look...

    To freecad...

    So how do i translate this into a physical thing i can (automatically) manufacture?

    Looks like i need a CAD software! How about freecad? I followed the first tutorial and it seemed very powerful at first :

    But thing were a bit complicated on the bezier side: so much things on the toolbar ! Do i need to constrain all the things ? how can i constrain handles? What are those green stuff displayed everywhere? seems to indicate the stiffness of the curve or something...

    To Inkscape...

    So i decided to work bezier curves with inkscape instead on which i'm much more familiar. After a quick svg import, i managed to generate a tool path for my snowflake and run a simulation , nice !

    so i think i can scale this process to get my 24-ish plywood pieces for the lamp! Lets try it ,model everything in inkscape :

    and then import it in freecad :

    Starting from here things get complicated, for some reason , when i try to convert these shapes to sketches, the axis are inverted ,  i cannot remember the process to make the holes , i need to get back to the tutorial... Same for the toolpath, i have trouble selecting the shapes i want to cut, i dont understand where my tools are saved ...

    So much for an intro to CAD !

View all 12 project logs

Enjoy this project?



Florian Festi wrote 05/12/2022 at 08:26 point

Very nice project. I wonder if trying to add an stepper motor is holding the project back. Instead of fighting friction the better option might be using it. If the lamp keeps its shape while still being adjustable by hand may be even better. Adding a motor won't make the lamp easier to adjust than just moving the lamp head around. This will also solve you issue with the spine not bending at the right position. May be adding a bit more friction at some strategic points may be necessary to keep the shape on the full length.

  Are you sure? yes | no

sebsplane wrote 05/17/2022 at 18:44 point

Thanks! you were right about the stepper, it was not the good solution, as you can see in my latest update. The motor is just to have a cool animation at startup and i'm much more confident in my new base design to achieve that objective . I plan to have the head  manually adjustable with a ball join to direct the lighting. My next challenge to overcome is to have that ball join with enough friction to support the head weight but keeping it adjustable and have it integrated smoothly with the rest of the arm. I also need to figure out how i will secure the led strip inside the arm and in the head and maybe make an aluminium reflector... hope i'll get it done for next winter :)

  Are you sure? yes | no

Florian Festi wrote 05/20/2022 at 06:33 point

The standard way to get adjustable friction is to press with a spring that is tensioned with a screw for adjustability. Balls from ball bearings can provide a very round, very smooth surface. As  you need some tension element to keep the joint together why not use two loops of string that slide on one side and provide the friction that way. This allows a large radius for the friction force. So you can achieve the needed torque with small forces. 

Mounting the led strip may be surprisingly difficult. The best way would have been to have it directly on the bending line so it doesn't change length when the spine moves. May be you can mount it "flying" so it can move back an forth a bit to change the radius when the arm moves. That way it can stay the same length. Otherwise you'll need to give it another way to change it length or fold up in a zig zag pattern. Another option is to make it slight up an down along the arm.

  Are you sure? yes | no

Mechmallow wrote 07/23/2021 at 11:47 point

Interesting design! If I want to remake it, where can I get the CAD files?

  Are you sure? yes | no

Steve wrote 07/26/2021 at 11:31 point

Yeah, very interesting, I wanna try it too! I have some recycled plastic material left from my last project, maybe I can use it to give it a more bone-alike look. I saw a similar design last time I was looking for villas for sale in Torrevieja so I think I can customize it a little bit.

  Are you sure? yes | no

sebsplane wrote 07/26/2021 at 20:53 point

Unfortunately, it is a bit of an experiment and i don't have a clean cad with all the parts (some of them aren't designed yet ! ). I have some svg files, a blender model, 2 fusion 360 projects, a dozen of gcode file, it's a mess sorry :( . 

  Are you sure? yes | no

Mike Szczys wrote 12/09/2020 at 17:25 point

This is an awesome concept! Reminds me of the work @Joshua Vasquez did with his tentacle mechanism:

  Are you sure? yes | no

sebsplane wrote 12/10/2020 at 21:02 point

Thanks for your support ! i hope i'll be able to complete it ... I'm only planning to do one axis / one stage for now but this project is a good inspiration too !  Can't wait to have a first prototype with a few vertebras :) 

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates