LED NeoPixel Motion Sensor Stair Lighting

63,720

219

110

Hello Everyone!

This is my first Instructable so please bare with me. Any comments and suggestions will be greatly appreciated! I wanted to share my project in the hopes it can simplify your research, planning, design and execution. Like with any project, it's always a good idea to research anything and everything about the subject matter in order to grasp the different technologies available and challenges you might face. There are many solutions to each idea, and some work better or worse depending on your skill and knowledge level. I hope I can share in this instructable something that's helpful to you, and wish you luck on your build!

If you are reading this, you are probably planning on adding some "flair" to your staircase. I was in your shoes and it may be overwhelming with the different options people use to add lights to stairs. My design uses an Arduino micro-controller, motion sensors, which serve as the brains of the build, WS2812B LED strips to light up the stairs and a 5V 60A switching power supply to provide the juice for the system.

There are different types of micro-controllers that can be used, Raspberry Pi or Arduino to name the two most common. I decided to go with Arduino since it already has the Neopixel library, which makes coding significantly easier. Coding level/experience should be considered in this step. Arduino is very easy to pick up since it is just a modified version of C and there is a huge community available to assist you with any coding questions or issues you may run into. There is a lot of support from the Adafruit community as well. Throughout this instructable I will post links to websites that may be helpful during this build. There are many different lighting options that can be used, for example, an LED light strip, LED lights, Neopixels (which is just fancy for WS2812B LEDS) and many others. I decided to go with WS2812B LED strips because I wanted the flexibility of controlling each individual pixel. This makes the design more versatile in the long run. I planned on making various sequences for different holidays and using WS2812B I can make any LED any color I want, which I thought is pretty cool! So the first step is to decide which type of lighting solution to use and exactly what you want your stair lights to do!

The power supply was sized according to a few simple calculations required by the load of the LED pixels. It is always a good idea to slightly oversize your components and use the worst case scenario in your calculations, to ensure that you don't starve or over stress components - which could lead to failures and premature wear of your electronic components. In addition, incorrect component sizing can lead to excessive heat, which can melt wires and cause a fire. Don't be afraid to ask questions before implementation if you are unsure of anything at all. Improper design can result in injury and/or waste of resources. In the end, a DIY solution is ultimately a way to have cool and unique things without having to pay a fortune for it, but it's got to be done right and safely.

*CAUTION: There is always a risk of personal injury and equipment damage when handling and dealing with electronics. You are expected to follow all usage instructions for tools and equipment required for this build. I am not responsible or liable for any injury or damage as a result of following this instructable. Please proceed at your own risk. Never work with live wires. Always remember to disconnect power from the source when connecting/soldering wires. (Remember: just because a power supply is turned off that it can still malfunction and run current through the wires, which can kill you!) Good Luck!

This sums up the overall idea of the project and covers some of the major components used in this build. I will try my best to outline the design and build process step by step and with as much detail possible. However, I'm sure I might miss something - and that's what the comments section is for. If you find this instructable useful, please share, rate and/or comment. I will greatly appreciate the support and will do my best to answer questions you may have, if I have the answer. If not, others on this website, more knowledgeable than me, are welcome to assist as well.

This is a video of ,my build in action!

Step 1: Materials

Below are a few expectations and goals I set going into this project, which also factored into my parts selection:

  1. Low budget
  2. Impressive yet functional final product
  3. Power efficient
  4. Minimal modification to stairs (to protect structural integrity of the staircase)

Below is a list of the major parts used in this project. They are fairly inexpensive and, with a simple google search and some shopping around, you can find them without investing a fortune. If you're a frequent DIYer you may have some of these components laying around.

  1. 1x Arduino Uno (e-bay)
  2. 2x PIR motion sensors (e-bay)
  3. 10M of WS2812B LED Light strip (length depends on how you want to space it out. Every staircase is different!) (e-bay)
  4. 5V 60A Switching power supply (e-bay)
  5. 100ft of 18AWG data wire (green) (e-bay)
  6. 100ft of 18AWG power wire (red, black) (e-bay)
  7. Extension cable or a standard power cord for a computer (old parts)
  8. Soldering iron + solder wire, etc. (previously bought)
  9. Shrink wrap (e-bay)
  10. Mounting tape (big box store)
  11. Clear silicone (big box store)

I may be missing a few materials but it's things like jumper wires for testing, electrical tape, etc.

Hint: E-bay has a great selection of electronic parts and most of the parts for this build were ordered from e-bay. Some argue that e-bay sells junk stuff and china stuff is garbage. But the truth of it is, it depends on what you are looking for. All this stuff is made in China anyway and shipped to the US and marked up like crazy. So if you have the time to wait for shipping (usually 2-3 weeks), I would highly suggest going that route to save you a decent amount of money!

Step 2: Design and Testing

I started designing my build by determining the number of pixels I wanted and how I wanted it to look. I had some standard LED RGB strips laying around so I experimented with those and determined I wanted 35 pixels on each step. Testing showed me the amount of light dispersion I liked. The number of pixels will be different for each setup. The width of my stairs is a little shy of the standard 3'.

Once I determined the number of pixels, I ordered the light strips. This was by far the most expensive part of the entire build. WS2812B is a fairly new technology; if you wish, you can go with the cheaper alternative of one-color LED strip or an RGB strip. However, with a simple RGB strip, the entire strip will be of the same color. Also, if you use a different strip, your code will need to be modified and will not work with my code. In addition to the color options, using a WS2812B LED strip had the benefit of having only 1 output on the arduino.

Originally, I planned to use the regular strips, which would have required me to use 16 outputs on the arduino (1 for each step) since I wanted the lights to light up step by step up or down depending on which motion sensor was tripped. However, on the arduino UNO, there are only 6 PWM outputs and the arduino MEGA has only 14 PWM outputs. So this was one of the major limiting factors of why I chose the WS2812B LED strips instead of the traditional RGB light strip. The other limiting factor was if I wanted to utilize all 3 colors on each of the 16 strips, that would mean 16*3 = 48 channels/outputs would be needed. Keep this in mind while designing your build. There are other controllers available which support this many channels, but in the end, it would cost more than just going with the WS2812B LED strip.

Learning NeoPixel

You should have done all the research about WS2812B LEDs if you intend to use them. But while you wait for your parts to ship, it's a good idea to touch up on using these LED strips. I will use NeoPixel interchangeably with WS2812B LEDs since they are the same thing.

Since I've never used WS2812B LEDs before, I needed to get familiar with the NeoPixel library. You will need to download the library for Adafruit and import it into the Arduino coding software. Below are two useful links to get you started with using NeoPixels. (I will assume you are somewhat familiar with Arduino and know how to import libraries and make sketches. If not, please reference other instructables or youtube videos on this process).

NeoPixel Library

Learn about NeoPixel Library

The above links contain very thorough description of how to use, code and power NeoPixels. They also include a test sequences, which I initially used to test the strand of LED to ensure there are no bad pixels. This is highly recommended so you can exchange the product if there are some bad pixels. Or you can simply cut them out and re-solder to required length.

There are also numerous projects people have done with NeoPixels in the past which are interesting to reference.

Attached program, named "test2," is a test program that just runs through same different loops. I used it to learn the different capabilities of the LED strip and familiarize myself with some of the coding. I believe this program was downloaded from the Adafruit website. I do not take credit for the code.

Once I was familiar with how NeoPixels worked, I found an instructable that was very helpful and similar to a build I was planning. I will link his instructable because I think it is also a good reference to use while you plan your build. The author goes a bit more in-depth, and I would like to thank him for taking the time to post it. I found it very helpful, and was able to adapt his code.

I assume you have some knowledge of arduinos and wiring so to keep this shorter, I skip some of the obvious details. Also, as I mentioned before, each build is unique so it's not as straightforward as just copying this instructable. It also depends on what type of parts you use, so I expect you do some research into what components you are using.

Instructable Link. His name is Simon Jowett.

Small Scale Testing

Okay, let's get to small scale bench testing. Once I received the light strips, I cut them into 35 pixel lengths. Another benefit of WS2812B LED light strips is that they can be cut every pixel and still function properly instead of every 3 LEDs with the traditional LED strips. I used one of the 35 pixel lengths to test some different kinds of effects and scaled down the entire design to utilize only 35 pixels. So in theory, I had 6 stairs with 5 pixels on each step.

So I wanted the individual strips of light on each step to light up in the order tin which he motion detector is tripped. Review the schematic attached in this step to see the set-up of the overall build. I'm using two PIR sensors that detect if the person is walking up or down the stairs. An LDR is a Light-Dependent Resistor, also known as a photoresistor. This resistor changes values based on how much light is exposed over the resistor. Currently, the sensor is not attached, but I plan on adding it soon to save on operation cost. Currently, the setup is working 24/7. (Side-note: I've made some basic calculations and while it works 24/7 it costs around $11 annually). You can learn more about how to add an LDR to the arduino using other instructables or follow this example. In short, you connect the LDR to an analog port on the arduino so you can use "analogRead()" command in your code to see the value of the resistor.

I'll briefly explain why I chose the loop back method when connecting the lights instead of just daisy chaining them. (you might understand better when you see the code further in this report and I will also elaborate on this topic) Daisy chaining the LEDs will result in a ZIG-ZAG LED matrix.

So if I want to run a basic for loop to power up all the LEDs from start to finish, the code will look something like this:

for(uint16_t n = 0; n < strip.numPixels(); n++)

{

strip.setPixelColor(n , strip.Color(255,255,255));

}

So this code basically sets the color of each LED starting at LED 0 to the color full brightness white (255,255,255) and it continues doing this while increasing the counter until it reaches the last LED (n < strip.numPixels() ).

Note, to apply this code in the daisy chain situation, the LED strip will first light up from right to left, then at then next step left to right and so on until it reaches the last LED. So if you can picture this in your head, it will not light up the LEDs starting from the same side on each step. The LEDs light up in a Zig-Zag motion. This is why I highly recommend using a little extra wire to wire up the strips according to my diagram. This will simplify coding significantly!

Step 3: The Code

I used and modified the code written by Simon Jowett.

There are some functions in the code that are not used, but I left them in case I would like to use them later. When I have more time, I will be adding to this code to run different light sequences for different holidays. Ultimately, I would like to write an app so I could change the sequence from my phone without having to upload new code every time I want to run a different sequence. This is why it is important to think of the flexibility in the design phase so you can be prepared for whatever you want to do without having to rebuild and change your LED strips.

If you have any questions about the code, feel free to leave a comment below and I will do my best to answer since I didn't do the best job at commenting it.

Step 4: The Build

The build will be unique with every staircase. I had to remove the drywall covering the underside of the stairs to route the wires. I drilled a small hole on either side of the staircase on each stair. This allowed me to route the power and data cables so they are hidden. While wiring, be sure to test each stair and your progress to limit the amount of debugging/troubleshooting if a problem is identified after completion. I used heat shrink on all the strips to give it a clean and professional look. Reference the previous step for the wiring diagram to see how I wired each strip. There are a total of 15 strips and each strip has 35 LEDs.

Suggestions:

  1. Plan out your build before you start to drill anything!!! This includes wiring/mounting, etc.
  2. Test each strip as you go.
  3. Practice soldering.
  4. You may pre-solder wires on each strip. (I just cut and soldered wires as I went up the stairs.)
  5. Secure wires so they are not pinched or cut when installing the drywall. (regardless of the stairs, clean wiring will be helpful in debugging later on).

As mentioned, each build will be different so it's up to you how you want to proceed. I included pictures of my build in this step.

Watch the build video below:

Step 5: Final Solution

Once I mounted all the strips, I tested the lights to make sure they all work. I will attach molding in front of the LED strips to completely hide them. I decided to wait on this step to make sure everything is functioning before I attach the molding.

Make sure you fully test the final project before covering everything in case there are problems and you need to troubleshoot the circuit and or connections.

Below is a video of the almost fully completed and function LED lighting. Notice the "breathe" standby mode and then the light turning on when the bottom sensor was tripped.

Step 6: Lessons Learned and Future Improvements

  1. Mounting tape is not the best mounting solution for the LED strips. Over time, some strips began to sag. I will be re-securing the strips with liquid nail or other heavy duty epoxy/glue.
  2. I need to add extra power injection into the circuit. Current power solution does not allow me to use full brightness. Although, I am quite happy with the current setting because at full brightness it's hard on the eyes. However, I do not want to be limited later on if I want to write code using full brightness for the holidays.
  3. Need to find better mounting solution for the PIR sensors because the range is too wide.
  4. I would like to add wifi so I can upload code without having to connect a USB. Eventually, I would like to add website functionality so I could select different codes (Christmas colors, fourth of July, etc.)

These are just the major improvements that come to mind, I may add more later.

I would greatly appreciate if you can leave a comment on how well/poorly this instructable is written and what would have been more helpful to know. Any feedback will be helpful in writing further instructables. Also, if you've done a similar build and would like to share it, I would enjoy reading about it! I will be starting a new instructable on a 32 channel christmas light controller I built from scratch for the holidays.

I hope you enjoyed reading this instructable! Good luck on your LED stair lighting. You'll see, once you do it at home, you will never want to use a staircase without LED lights!

Useful links and resources:

Arduino adafruit NeoPixel Overview (Read the "Best Practices" and "Powering NeoPixels" tab)

Jowett "how to bling up a boring staircase" instructable

PIR Sensors How To

Share

Recommendations

  • Trash to Treasure

    Trash to Treasure
  • Arduino Contest 2019

    Arduino Contest 2019
  • Tape Contest

    Tape Contest

110 Discussions

0
None
VirginijusJ1

4 weeks ago on Step 3

Hello everyone, I have been working on this project for quite some time, the final code doesnt seem to be working as per youtube video above, can someone upload the original code with breathing function and two PIRs plus the LDR, you would make my day
Thank you very much
regards, Virginijus J.

0
None
MartijnVanZ

Question 6 weeks ago

Hi,

Thanks for the excellent instructions. I've build my own project at home, and its working fantastic.
All the sensors are working and the looks are beautifull.

But the only thing I like less, is the breathing function. The blue leds that are "breathing" when no one walks the stairs.

I have tried to edit the code, so the breathing function wont be there anymore, but I cant get the job done.

Do you have some advice?

0
None
JasperM23

Question 10 months ago on Step 3

Hi all, the only thing I have not been able to fix is the running up/down stairs when triggered. I have 13(stairs)x46 led's with a total of 598 leds however it does look like it is still triggering in rows of 35 although I tried to changed that in the code. also if I list the full number of 598 (0 to 597) it glitches out. I can run the test script across all 598 leds so it does not seem to be a power issue. After spending about 6 hours trying to tweak it this still does not work for me. so I'm left with a broken first or last step in the chain.

1 answer
0
None
RoyK47JasperM23

Answer 3 months ago

did you work it out? im stuck with the same problem

0
None
Vacac

4 months ago

What wattage of resistor I should use between the Arduino data output and the input of the first NeoPixel SMD 5050 WS2811 10meter length in series?

1 reply
0
None
GabrielF142Vacac

Reply 3 months ago

Hi Vacac, 0.25w will do fine.
It doesn´t matter the end lenght of the strip as each led will regenerate the signal after usage.
Regards.
Gabriel.

0
None
schianop

4 months ago

thx u very much, great instruc !
you use what resistance 500 ohm? how much in watt
thx

1 reply
0
None
GabrielF142schianop

Reply 3 months ago

Hi schianop, that resistor is a suggestion from arduino guys. My guess is that it will limit the current protecting digital output.
0.25w will work just fine.
Regards.
Gabriel.

0
None
CasaNostra

3 months ago on Step 6

An amazing instruction and description of this stylish DIY.

0
None
drumb

4 months ago

"
  1. Need to find better mounting solution for the PIR sensors because the range is too wide." try simple black marker pen to cover some sensors :)
0
None
valikow

Question 4 months ago

good time. collecting your project . how does it turn on the new year mode and how to change the color of the steps?

0
None
wise19

5 months ago on Step 3

Hello

Super article that makes me want to start.

However, the WS2812B tapes are all wired in 5 wires and your assembly only shows 3 (+, - and piloting).

Can you help me.

Best regards,

Eric

0
None
chrissyboy100

Question 5 months ago

hi, I am new to arduino and so am a little unsure on the programming. I am aiming to run a set of individually programmable RGBD strip lights up the side of my staircase with a motion sensor top and bottom. I am aiming to create a similar effect to the above project with the lights steadily turning on either on the way up or on the way down but in one continuous strip (instead of treads) and turning off in the same sequence after a short delay.
can anyone help and give me a heads up with this program.
this is a mini version of what I am after.
https://www.youtube.com/watch?v=ekGvcQKPy7A

0
None
robin6587

Question 6 months ago on Step 6

Hello,
Thank you to sharing your project.
I just want to be sure if you don't have problem with the 18 awg wires for the power supply of your leds. (amp capacity of the wires)

0
None
DonaldT47

Question 6 months ago on Step 1

Hello, trying this project in a few weeks. What type of green wire are you using? You called it a data wire. Is it just a green wire like the black and red wire?

0
None
julianpe

Question 6 months ago

Is it possible to dimm also each stairs?

I mean you just turn on and off the complete stairs. Maybe it would be nice to make a fade effect for each stair.

1
None
MichelA31

7 months ago

Hi snikogos, thanks a lot for your share, I'am currently doing it with 30 led per meter strips.

for the problems you list, i will try this :

  1. I will secure strips with glue, hope this will be ok
  2. Have bought 5v 60A on a chinese website, I Will add a capacitor to be sure to have 5v anytime
  3. bought some mini boxes to put PIR inside with only little holes
  4. no ideas about wifi but if you have worked on it dont hesitate to share with all of us :)

thanks a lot again for your work ! its a pleasure to "copy" your project.

best regards from france

Michel

0
None
epic faill

Question 8 months ago

Hello Snikogos, or anyone who can answer these questions, I have the same question as Jasper below

I have 14 stairs and they vary in size but I will keep the number of LEDs on each step the same to be uniform, the size depends on how many can fit equally, it will be either 30 or 60 on a step.

If you have installed this on your stairs what do you recommend 30 or 60 per step or, the same question being, 30 or 60 LEDs per meter strips?

I believe I can flash the sketch, with enough searching online, and install the hardware, but I'm apprehensive about editing a sketch. If you elaborate on what areas need to be edited, it would be appreciated and probaply help others.

Thanks in advance.