Geplaatst op Geef een reactie

Een neopixel LED strip met een Raspberry Pi Pico aansturen

Raspberry Pi Pico WS2812 LED strip

In deze tutorial zien we hoe we de Raspberry Pi Pico kunnen programmeren om neopixels of ook wel individueel adresseerbare RGB-LED’s aan te sturen. We gebruiken een LED-strip van het type WS2812B en op basis van een MicroPython-script op een Raspberry Pi Pico, leren we hoe de kleur van elke LED afzonderlijk te programmeren.

  1. Voorbereiding

    – Eerst heb je een computer nodig om Thonny op te laten draaien. In deze tutorial gebruiken we een Raspberry Pi 4 als computer. En Thonny is een gebruiksvriendelijke Python IDE om te communiceren met het Raspberry Pi Pico-bordje. Als je Thonny nog nooit hebt gebruikt om de Raspberry Pi Pico te programmeren, kun je best, vooraleer je verder gaat, onze tutorial “Start met het programmeren van de Raspberry Pi Pico” bekijken.

    – Vervolgens heb je een USB-kabel met micro-USB-stekker nodig.
    – Je hebt natuurlijk ook een Raspberry Pi Pico nodig. Voor deze tutorial heb je pin-headers nodig die op de GPIO-pinnen van je bord zijn gesoldeerd.

    En tot slot heb je nog wat extra componenten nodig:
    – een breadboard (we gebruiken een breadboard van 400 punten)
    – een neopixel of individueel adresseerbare RGB LED-strip (we gebruiken een strip van 1 meter WS2812B LED’s met 30 LED’s per meter)
    – Dupont jumper kabelsRaspberry Pi Pico breadboard WS2812 RGB LED strip

  2. Maak kennis met de neopixel of individueel adresseerbare led-lichtstrip

    Individueel adresseerbare LED’s of NeoPixel zijn RGB-LED’s met een geïntegreerde kleine microcontroller op elke LED. Naast een gewone VCC (5v in ons geval) en GND-verbinding, is er een datalijn die van de ene LED naar de andere gaat. Deze configuratie stelt ons in staat om individuele informatie over kleur en helderheid naar elke LED van de strip te sturen.

    Wanneer een microcontroller zoals onze Raspberry Pi Pico informatie naar de strip stuurt, is dat altijd in een bepaalde richting. Om te beginnen worden de gegevens naar de eerste LED gestuurd. De chip van de LED leest de gegevens die gekoppeld zijn aan het adres van de eerste LED. Het voert de instructies uit en geeft de gegevens door aan de volgende LED. En dit gaat door tot de laatste LED van de strip.

    Dit betekent dat er geen probleem is om de LED-strip door te knippen na een bepaald aantal LED’s dat je best uitkomt. En naast LED-strips zijn de WS2812B LED’s verkrijgbaar in verschillende vormen, zoals bijvoorbeeld LED-matrixpanelen van verschillende afmetingen. Rekening houdend met het kleine formaat en het gemak om alle elementen te bedraden, maakt dit de individueel adresseerbare RGB LED erg gemakkelijk te installeren.

    De manier waarop we onze gewenste kleur naar een gekozen LED sturen, is op basis van het klassieke RGB-kleurmodel. Dit betekent dat we voor de 3 kleurkanalen (Rood, Groen en Blauw) die elke LED bevat, een verschillend helderheidsniveau kunnen definiëren. Er zijn 255 helderheidsniveaus voor elk kleurkanaal. En met een specifieke helderheid voor elk kanaal kunnen we alle mogelijke kleuren genereren.

    Er bestaan veel verschillende soorten neopixel LED-strips:
    – uiteraard zijn de LED strips in verschillende lengtes beschikbaar
    – de dichtheid (het aantal leds per meter) kan variëren
    – de spanning kan 5V of 12V zijn (gebruik 12v voor langere afstanden)
    de bescherming (IP-code) is een andere specificatie en kan bijvoorbeeld belangrijk zijn voor buitenprojecten
    – ten slotte is er de RGBW of RGB+W-variant (met een extra witte chip, naast de rode, groene en blauwe)

    De LED strip die we in deze tutorial met onze Raspberry Pi Pico verbinden, heeft volgende kenmerken: WS2812B-strip van 1 meter, 30 LED’s/meter, 5V, IP30, RGB.

    WS2812 RGB LED stripJe kan meer informatie over NeoPixels vinden op deze adafruit-webpagina.


    Let op! Voordat je begint met het aansluiten van componenten op de GPIO-pinnen van je Raspberry Pi Pico, dien je ervoor te zorgen dat je de Pico losgekoppeld is van je computer.

  3. Stel de hardware op

    Raspberry Pi Pico WS2812 pinout– sluit de +5V van de LED strip aan op de VBUS pin (rode draad), GEBRUIK HIER NIET DE VSYS PIN
    – sluit de datapin van de ledstrip aan op GP28 (gele draad)
    – sluit de GND van de LED strip aan op een GND (massa) pin (zwarte kabel)

    Let op ! Zoals uitgelegd in de vorige stap, heeft de datastroom naar de LED’s een specifieke richting. Sluit dus de Raspberry Pi Pico aan op de “Din”-kant van de ledstrip. De ledstrips van onze kits hebben een mannelijke en vrouwelijke stekker. Gebruik de vrouwelijke stekker.

    Wees voorzichtig!
    Voor een LED-strip met een beperkt aantal LED’s is het OK om de LED-strip via de Raspberry Pi Pico van stroom te voorzien. In deze tutorial gebruiken we een LED strip met 30 LED’s. De maximale stroom van elke LED van onze strip is 33mA. Dat geeft een maximale stroom van ongeveer 1A door de Pico. Dat is OK om te testen, maar beschouw het als een maximum. Als je een toepassing met een ledstrip wil opzetten, gebruik dan altijd een afzonderlijke 5V voeding die voldoende stroom kan leveren aan alle leds van je ledstrip.

    Raspberry Pi Pico WS2812 breadboard

  4. Schrijf de code

    Het doel van dit eenvoudige script is om enkele van de specifieke commando’s te verkennen die we kunnen gebruiken om de kleur van de RGB-LED’s te programmeren.

    Installeer eerst de bibliotheek
    Om uitgebreid en ingewikkeld codeschrijven te voorkomen, wordt vaak gebruik gemaakt van bibliotheken. Voor onze WS2812B ledstrip gaan we ook een bibliotheek gebruiken. We hebben de meest geschikte bibliotheek bij Blaz Rolih gevonden. Omdat het bestand uit deze bibliotheek vrij specifiek is, komt het niet automatisch met MicroPython. Dat betekent dat we het zelf moeten installeren.

    Dus voordat we de code schrijven, moeten we de bestanden uploaden naar onze Raspberry Pi Pico. Je kan hier een ZIP-map downloaden met daarin de te installeren bestanden.

    Eenmaal gedownload en uitgepakt op je computer, zie je 2 bestanden. ‘colorwave.py’ is een voorbeeld van hoe je een LED-strip kan aansturen. We komen er aan het einde van deze tutorial op terug. En het bestand ‘neopixel.py’ bevat de eigenlijke bibliotheek. Upload beide bestanden naar je Raspberry Pi Pico. Als je niet weet hoe je dat moet doen, bekijk dan onze tutorial ‘Bestanden tussen computer en Raspberry Pi Pico uitwisselen‘. Als je meerdere mappen op je Raspberry Pi Pico hebt, zorg er dan voor dat je de bestanden uploadt in dezelfde map als het nieuwe bestand dat we voor onze hoofdcode zullen maken. En wijzig natuurlijk niet de bestandsnaam van de bibliotheek.

    Overigens, je kan dezelfde bibliotheek gebruiken voor RGBW ledstrips (zie uitleg in stap 2).

    OK, nu de bibliotheek geüpload naar onze Raspberry Pi Pico is, schrijf of plak de volgende code in de IDE:

    import time
    from neopixel import Neopixel
     
    numpix = 30
    pixels = Neopixel(numpix, 0, 28, "GRB")
     
    yellow = (255, 100, 0)
    orange = (255, 50, 0)
    green = (0, 255, 0)
    blue = (0, 0, 255)
    red = (255, 0, 0)
    color0 = red
     
    pixels.brightness(50)
    pixels.fill(orange)
    pixels.set_pixel_line_gradient(3, 13, green, blue)
    pixels.set_pixel_line(14, 16, red)
    pixels.set_pixel(20, (255, 255, 255))
     
    while True:
        if color0 == red:
           color0 = yellow
           color1 = red
        else:
            color0 = red
            color1 = yellow
        pixels.set_pixel(0, color0)
        pixels.set_pixel(1, color1)
        pixels.show()
        time.sleep(1)


    Let op! MicroPython is witruimte gevoelig. Verwijder de “tabs” niet.

    MicroPython Pico WS2812 LED strip
    Wat verklaringen over de code:
    import time  : de tijdmodule te importeren. Dit stelt ons in staat om tijdgerelateerde taken te gebruiken.
    from neopixel import Neopixel :  om het bestand uit de neopixel-bibliotheek te importeren.
    numpix = 30 : we gebruiken een ledstrip met 30 leds, wijzig dit aantal naargelang het aantal leds van je LEDstrip.
    pixels = Neopixel(numpix, 0, 28, "GRB") : configureren van de ledstrip: aantal pixels, machinenummer, datapin (GP28), RGB-modus (=specifiek voor de ledstrip die we gebruiken).
    yellow = (255, 100, 0) : In de volgende regels definiëren we verschillende variabelen voor de kleuren die we zullen gebruiken. Elke kleur wordt gedefinieerd op basis van het RGB-kleurmodel.
    pixels.brightness(50) : om de helderheid van de LED’s te definiëren.
    pixels.fill(orange) : om alle LED’s van de strip dezelfde kleur te geven.
    pixels.set_pixel_line_gradient(3, 13, green, blue) : om de kleur van de LED’s geleidelijk te veranderen, hier zal de kleur van de derde tot de dertiende LED geleidelijk overgaan van groen naar blauw.
    pixels.set_pixel_line(14, 16, red) : om een reeks LED’s (van 14 tot 16) dezelfde kleur te geven.
    pixels.set_pixel(20, (255, 255, 255)) : om 1 LED (20) een specifieke kleur te geven, en in plaats van een variabele kunnen we de RGB-waarden ook direct gebruiken.
    while True: : is een oneindige loop (tot het programma gestopt wordt).
    In de volgende regels wisselen we de kleur van LED nr 0 en nr 1 af.
    pixels.show() : om de gegevens daadwerkelijk naar de ledstrip te sturen.
    time.sleep(1): tot slot, voordat we de lus herhalen, wachten we 1 seconde.

  5. Voer het script uit

    Nu is het tijd om je script op te slaan. Zorg ervoor dat je dit MicroPython-bestand opslaat in dezelfde map als het bestand uit de bibliotheek die je eerder hebt geüpload.

    Klik vervolgens op de ‘Run’ knop van de Thonny IDE. En controleer de kleur van de LED’s volgens het script.Raspberry Pi Pico WS2812 LED strip

  6. Experimenteer met aanvullende methoden, andere kleuren en andere sequenties

    Geweldig! Nu heb je de basisvaardigheden om een LED strip met een Raspberry Pi Pico aan te sturen!

    Voordat we verder gaan met andere experimenten, is het goed om te weten dat de bibliotheek nog 2 andere nuttige methoden bevat:
    – rotate_left(aantal pixels): om de kleur van de pixels naar links te verschuiven
    – rotate_right(aantal pixels): dezelfde methode, maar in tegengestelde richting

    Het ‘colorwave.py’-bestand dat je eerder hebt geüpload, is een mooi voorbeeld van hoe je deze methode kan implementeren. Probeer het en nog veel plezier ermee!

    WS2812 RGB LED strip

Hoe nuttig was deze tutorial?

Klik op een ster om deze te beoordelen!

Gemiddelde score 0 / 5. Aantal stemmen: 0

Geen stemmen tot nu toe! Wees de eerste die dit bericht beoordeelt.

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Hoe nuttig was deze tutorial?

Klik op een ster om deze te beoordelen!

Gemiddelde score 0 / 5. Aantal stemmen: 0

Geen stemmen tot nu toe! Wees de eerste die dit bericht beoordeelt.

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?

ontdek hier meer producten

Blijf als eerste op de hoogte van onze nieuwste tutorials en producten door u in te schrijven op onze nieuwsbrief

freva.com respecteert uw privacy. Lees ons privacybeleid over hoe wij omgaan met uw persoonlijke gegevens.