Fork me on GitHub

NeoPixels en Raspi Zero W

July 28, 2017

Los NeoPixels son geniales porque podés controlar una gran cantidad de ellos simplemente con un pin pero también poque los colores que emiten son muy nítidos. Los he venido usando tanto con Arduino como con ESP8266 gracias a la lib de Adafruit. Aunque sólo tengas que usar un único LED RGB en tu proyecto, te conviene usar un Neopixel frente a un LED RGB tradicional, porque te ahorrás 2 pines y porque los colores son realmente lindos. Hay por lo menos dos versiones: los WS2812 y los WS2812b. Yo he venido usando estos últimos, que son la versión más nueva y son los que muestro aquí.

Estos leds funcionan con 5v así que usé uno de los pines de 5v de la Raspberry. Estos pines (el 2 y el 4) están conectados directamente a la fuente de alimentación por lo que pueden proveer tanta corriente como esta esté entregando. En el sitio pinout.xyz se puede ver esto y una descripción de cada pin.

La lib que hay que instalar se llama rpi_ws281x y hay que compilarla ya que no existe actualemente un empaquetado. Así que a instalar dependencias:

sudo apt-get update
sudo apt-get install build-essential python-dev git scons swig

Luego bajamos la lib y la compilamos:

git clone https://github.com/jgarff/rpi_ws281x.git
cd rpi_ws281x
scons

Finalmente la instalamos:

cd python
sudo python setup.py install

Listo, ahora ya podemos probarla

cd example
vi strandtest.py

Aquí editamos el valor de LED_COUNT según la cantidad de leds que tengamos y finalmente:

sudo python strandtest.py

Si no funcionara posiblemente se deba a un conflicto con el audio, que utiliza el GPIO 18. Lo que hay que hacer es deshabilitarlo creando un archivo blacklist para los módulos correspondientes:

sudo vi /etc/modprobe.d/blacklist-neopixels.conf

Agregar las siguientes líneas:

blacklist snd_bcm2835
blacklist snd_pcm
blacklist snd_timer
blacklist snd_pcsp
blacklist snd

Guardar y reiniciar:

sudo update-initramfs -u
sudo reboot

Python Raspberry