Wiring NeoPixels to work with a Raspberry Pi is quite simple. The only issue to deal with is converting the Pi's GPIO from 3.3V up to about 5V for the NeoPixel to read. There are two ways you can do this level conversion, either with a simple 1N4001 power diode or with a level converter chip like the 74AHCT125.
Note that you might be able to get your NeoPixels to work without any level conversion, but it's not really guaranteed because the data line needs to be at least 0.7 * VDD (5 volts), or about 3.5 volts. Try one of the level conversion options below if you can't directly drive the pixels from your Raspberry Pi.
The diode method is a quick way to reduce the power supply voltage slightly so the NeoPixels can read the Pi's 3.3V output. However you need to be careful to use a diode that can handle all the current drawn by the NeoPixels. The diodes Adafruit sells only handle 1 Amp of continuous current so they're good for driving up to about 16 NeoPixels at full 100% bright white - and about 50 NeoPixels if they're all lit with various colors. Also because the NeoPixels aren't running at 5 volts they might be a little dimmer than normal.
A level converter chip like the 74AHCT125 is a better method because it will convert the Pi's 3.3V output up to 5V without limiting the power drawn by the NeoPixels. You'll get full NeoPixel brightness that's only limited by the current capability of the power supply.
To follow this guide you'll need the following parts:
- 5 volt power supply
- Make sure the supply can handle powering all the NeoPixels. Remember each pixel can draw up to 60 mA so don't skimp on the power supply!
- 2.1mm female barrel jack adapter
- Solderless breadboard and hookup wires
- 1N4001 diode OR 74AHCT125 level converter
- Note that this method of driving NeoPixels is limited by the maximum size of a kernel memory page and can in theory control up to about 450 LEDs.
- Also be aware the rpi_ws281x library only supports GRB NeoPixels/WS281x LEDs right now. Support for RGB and BGR will likely come in the future (but pull requests are happily accepted!).
If you're using a 74AHCT125 level converter, wire up your hardware as follows:
- Connect power supply ground to 74AHCT125 ground & 1OE pins, Raspberry Pi ground, and NeoPixel ground.
- Connect power supply 5V to 74AHCT125 VCC and NeoPixel 5V.
- Connect Raspberry Pi pin 18 to 74AHCT125 pin 1A.
- Connect 74AHCT125 pin 1Y to NeoPixl DIN.
If you aren't sure where the pins are on the 74AHCT125 chip then check its datasheet for more information.
- Connect power supply ground to Raspberry Pi ground, and NeoPixel ground.
- Connect power supply 5V to 1N4001 diode anode (side without the stripe).
- Connect 1N4001 diode cathode (side with the stripe) to NeoPixel 5V.
- Connect Raspberry Pi pin 18 to NeoPixel DIN.
Make sure to get the orientation of the diode correct, with the cathode (side with the stripe) going to the NeoPixel!