NeoPixel stick aansturen met een Raspberry Pi

Bij Raspberry Pi gebruikers is het aansturen van RGB leds zeer populair, het aansturen van leds is direct mogelijk vanaf de GPIO. Kwalitatief goede led zijn de WS2812 5050 RGB welke ook als NeoPixel worden verkocht. Een NeoPixel bestaat uit een aantal adresseerbare WS2812 5050 RGB leds die worden verkocht in de vorm van een strip, ring of matrix. Iedere led kan individueel worden aangestuurd en van een RGB kleur worden voorzien. In dit stappen plan gebruiken we een NeoPixel stick met 8 leds.

De aansturing van de leds in de WS281x serie kan op een Raspberry Pi met behulp van python en een speciale python library.

Componenten voor dit project

NeoPixel Stick 8x led ws2812 (link)
• Dupont verbindingkabels male/female (link)

Raspberry Pi Zero
Raspbian Jessie (2016-05-27 kernel 4.4.13)

NeoPixel Stick aansluitschema

NeoPixel Raspberry Pi pin Functie
5V 1 3.3v
GND 6 Ground
(D)IN 12 GPIO 28

Hoewel er op de NeoPixel 5V wordt aangegeven volstaat 3.3v voor de versie met 8 leds.

neopixel stick 8 leds rpi

Python library installeren

Om te kunnen communiceren met de NeoPixel hebben we een speciale Python library nodig, deze kun je vanaf Github installeren met behulp van de onderstaande stappen:

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

Hierna installeren we ws281x ondersteuning:

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

Compileer de library:

scons

Voeg de library toe aan Python:

cd python && sudo python setup.py install

In de library is een test script aanwezig om de werking van de leds te testen, die vind je terug in de rpi_ws281x map en kun je starten met behulp van het commando:

cd ~/rpi_ws281x  && sudo ./test

De leds gaan nu in een willekeurige kleur onafhankelijk van elkaar knipperen, zie bovenaan deze pagina.

NeoPixel Stick Python Script

Vanuit Python is het nu mogelijk om de leds individueel aan te sturen. Het onderstaande script genereert een Knight Rider effect. De leds zullen rood oplichten, beginnend bij de eerste tot de laatste led, waarna de richting wordt omgekeerd. Na vijf maal heen en weer wordt het script automatisch beëindigd.

import time

from neopixel import *
from random import randint

LEDS        = 8      # Aantel LEDS
PIN         = 18     # GPIO 18 / PIN 12
BRIGHTNESS  = 55     # min 0 / max 255

KLEUR_R     = 0
KLEUR_G     = 0
KLEUR_B     = 255	# rood waarde

def loopLed(stick, color, wait_ms):

        for i in range(stick.numPixels()):
                stick.setPixelColor(i,color)
                stick.show()
                time.sleep(wait_ms/1000.0)
                stick.setPixelColor(i,0)
                stick.setPixelColor(i-1,0)

        for i in range(stick.numPixels()-1,-1,-1):
                stick.setPixelColor(i,color)
                stick.show()
                time.sleep(wait_ms/1000.0)
                stick.setPixelColor(i,0)
                stick.setPixelColor(i+1,0)

def resetLeds(stick, color, wait_ms=10):

        for i in range(stick.numPixels()):
                stick.setPixelColor(i, color)
                stick.show()

if __name__ == '__main__':

        stick = Adafruit_NeoPixel(LEDS, PIN, 800000, 5, False, BRIGHTNESS)

        stick.begin()

        for t in range (0, 5, 1):
                loopLed (stick,Color(KLEUR_G, KLEUR_R, KLEUR_B),100)

        resetLeds (stick,Color(0,0,0))

Kopieer het bovenstaande Python script en plaats de code in het bestand, gebruik hiervoor nano of een andere editor. In het onderstaande commando gebruiken we de nano editor en geven het script de naam stick.py.

sudo nano stick.py

Kopieer het script in de editor en sla de wijzigingen op (ctrl + x, y, enter).

Je kunt het python script ook downloaden met:

wget https://raspberrytips.nl/files/stick.py

Hierna kun je het script uitvoeren met:

sudo python stick.py

Aanpassingen script

LEDS pas deze parameter aan met het aantal leds dat je gebruikt.
KLEUR_R, G ,B Je kunt de kleur ook zelf selecteren door de juiste worden op te geven. Bijvoorbeeld voor groen:

KLEUR_R 0, KLEUR_G 255, KLEUR_B 0

.

1 gedachte over “NeoPixel stick aansturen met een Raspberry Pi”

  1. Top, hier was ik naar op zoek.
    Een punt van zorg: bij
    from neopixel import *
    komt de melding naar boven:
    ‘module’ object has no attribute ‘WS2811_STRIP_RGB’

    Hoe kunnen we dat omzeilen; enig idee?

    Beantwoorden

Plaats een reactie