Inhoudsopgave:

Raspberry Pi Christmas Tree Light Show - Ajarnpa
Raspberry Pi Christmas Tree Light Show - Ajarnpa

Video: Raspberry Pi Christmas Tree Light Show - Ajarnpa

Video: Raspberry Pi Christmas Tree Light Show - Ajarnpa
Video: I run untested, viewer-submitted code on my 500-LED christmas tree. 2024, November
Anonim
Image
Image

Update: ik heb een bijgewerkte evolutie van deze boom voor 2017 uitgebracht op deze instructable

Dit project omvat het gebruik van een Raspberry Pi om 8 stopcontacten aan te sturen die zijn aangesloten op kerstboomverlichtingssets. De AC-lampen zijn eenvoudige lichtstrengen in één kleur, maar om de lichtshow een dynamischer bereik te geven, is er ook een 25 programmeerbare RGB LED-ster. Een van de voordelen van het gebruik van de Raspberry Pi in plaats van een Arduino-controller is dat ik de audio uit de Raspberry Pi kan sturen om de lichten te laten timen met muziek (om nog maar te zwijgen van het voordeel dat ik een wifi-verbinding heb om op afstand aan de software te werken).

Stap 1: Materialen

Materialen
Materialen

Houd in gedachten dat de onderstaande materialen zijn wat ik voor dit project heb gebruikt. In veel gevallen kunnen alternatieve onderdelen/oplossingen worden gebruikt.

Dit zijn de materialen die ik voor dit project heb gebruikt:

Voor de regelaar:

  1. Raspberry Pi (B-model is wat ik heb gebruikt)

    • SD-kaart
    • USB wifi-adapter
  2. SainSmart 8-kanaals 5V SSR-modulekaart - Amazon

    Ik vermeed de mechanische relais omdat het klikkende geluid van de schakelaar merkbaar hoorbaar zal zijn, en gingen we SSR's. Dit bord heeft een vermogen tot 2 AMP per SSR, wat voldoende is om een reeks kerstverlichting van stroom te voorzien

  3. Doorverbindingsdraden - Goedkoop te vinden op Ebay
  4. JST SM Stekker + Recipiënten - Adafruit
  5. 32ft rol draad (of vier 8 ft stukken draad)
  6. Verlengsnoer x 8"
  7. Stroomverdeelblok x 2 - AdaFruit
  8. Stekkerdoos
  9. Voedingen

    • 5 Volt, 3 Ampère of meer om LED's en Pi. aan te sturen
    • 5 Volt, 1 Amp of meer om SSR-module aan te sturen
  10. Behuizing
  11. Sprekers

Voor de ster:

  1. 12 mm RGB LED's (Strand van 25) - AdafruitWS2801-chip in dit product zorgt ervoor dat de Pi de streng slechts één keer hoeft te pulseren in plaats van continu de lijn te pulseren om de LED's verlicht te houden.
  2. Kunststof ABS-plaat om LED's op hun plaats te houden - Walmart
  3. Lexan plaat voor diffuse LED's - Lowes
  4. Zwarte spuitverf
  5. Witte spuitverf
  6. Hout

Voor de boom:

  1. Wit 100 lichtstreng x 4
  2. Wit 50 lichtstreng
  3. Rood 100 lichtstreng x 2
  4. Groen 100 lichtstreng x 2
  5. Blauw 100 lichtstrengen x 2

Stap 2: Stel de Raspberry Pi in

Voordat ik in de bedrading dook, wilde ik de Pi eerst aan de praat krijgen om de componenten te testen zoals ze waren aangesloten. Deze setup werd gedaan vóór de setup van de behuizing, en omvat de Raspberry Pi die via USB-voeding is aangesloten op een monitor en toetsenbord. Het doel is om het systeem zodanig te configureren dat de ontwikkeling op de Pi in de behuizing kan worden voortgezet.

De standaard Pi-installatie heeft niet de bibliotheken die nodig zijn om de WS2801-LED's correct in de ster aan te sturen, dus installeerde ik het Occidentalis-besturingssysteem van AdaFruit op de Pi.

Na de installatie van Occidnetalis kwam er nog wat extra setup bij kijken:

1) Configureer de Pi om op te starten naar een opdrachtprompt (niet de GUI-interface)

2) Stel de draadloze netwerkinterface op de Pi in door /etc/network/interfaces te bewerken. Zorg ervoor dat u een statisch IP-adres kiest, zodat u kunt inloggen op een bekend adres om op de Pi. te werken

3) Installeer Telnet- en FTP-services.

4) Installeer Pygame. De bibliotheek wordt gebruikt in de python-scripts voor het afspelen van MP3/WAV-bestanden

Gedetailleerde instructies voor de installatie/configuratie zijn gemakkelijk te vinden via zoekopdrachten op internet. Er zijn veel bronnen online op de Pi.

Na dit punt kan ik elke video-out en toetsenbord loskoppelen, omdat je op de Pi op afstand kunt inloggen.

Stap 3: Begin met het opzetten van de behuizing

Begin met het opzetten van de behuizing
Begin met het opzetten van de behuizing

Ik zal niet ingaan op veel details over het bouwen van de behuizing, want het is gewoon een doos gemaakt van hout. Ik heb houders met een diameter van 1,5 inch aan de uiteinden van de behuizing geboord. Aan de rechterkant is het gat waar alle verlengsnoeren en het stersnoer naar buiten lopen en aan de linkerkant is het gat waar de stekkerdoos en de audio-uitgang lopen.

De eerste componenten die moeten worden gemonteerd zijn de stekkerdoos en Raspberry Pi. Om de Pi van stroom te voorzien, gebruik ik dezelfde 5V-transformator om de ster en Pi (in groen weergegeven) van stroom te voorzien. Hierdoor heb ik de stroom naar een aansluitblok (wit gemarkeerd) waar de 5V aftakt naar de sterbedrading en naar de Pi

Pin 2 = 5V

Pin 6 = Aarde

Eenmaal aangesloten, zet u de stroom aan en moet de Pi opstarten en toegankelijk zijn via Telnet zoals ingesteld in de vorige stap.

Stap 4: De Raspberry Pi aansluiten op de relaismodule

De Raspberry Pi aansluiten op de relaismodule
De Raspberry Pi aansluiten op de relaismodule

Met alle Power Off (voedingen en Pi), sluit u de 5 volt aan op de onderste twee externe voedingsbronconnectoren. Ik reed dit met een speciale 5 Volt voeding aangesloten op de stekkerdoos. Dit is zo dat de Pi niet de volledige belasting van het aansturen van het relais heeft (het probleem is dat 8 gelijktijdige relais zijn ingeschakeld) en in plaats daarvan gewoon een transistor kan aansturen om externe voeding naar het relais te schakelen.

Bepaal nu de locatie van de GPIO0 tot en met GPIO7 op de Raspberry Pi. Op mijn B-Model is dat:

GPIO0 = Pin 11

GPIO1 = Pin 12

GPIO2 = Pin 13

GPIO3 = Pin 15

GPIO4 = Pin 16

GPIO5 = Pin 18

GPIO6 = Pin 22

GPIO7 = Pin 7

Aarde/0V = Pin 6, Pin 9, Pin 14, Pin 20, Pin 25

Omdat de verbinding op de SSR-module inschroefposten is, heb ik elke jumper op de juiste maat getrimd op basis van hoe ik de componenten uit elkaar hield. Sluit alle 8 ingangskanalen en aarde van de Pi op het bord aan. Een punttang helpt om de jumpers goed in de Pi-header te plaatsen.

Elk kanaal heeft een LED op de SSR-module die oplicht wanneer GPIO hoog wordt op de Pi. Voer een eenvoudig testprogramma uit om alle verbindingen te controleren, bijgevoegd als test.py, waarbij elke GPIO0-7 twee seconden hoog staat.

Stap 5: Knip en bereid verlengsnoeren voor

Verlengsnoeren knippen en voorbereiden
Verlengsnoeren knippen en voorbereiden

Knip op elk verlengsnoer het uiteinde van de stekker af en laat de maximaal beschikbare lengte aan het uiteinde van het snoer met stopcontacten, aangezien het mogelijk naar de top van de boom moet gaan. Splits op het koord de uiteinden van de draad door het dunne stuk plastic dat de twee draden bij elkaar houdt door te knippen. Strip nu de uiteinden zodat ongeveer 1/4 draad zichtbaar is voor de schroefconnectoren.

Gebruik een Sharpie-markering op elk uiteinde van het snoer met sockets om de nummers 1 tot en met 8 te schrijven, zodat u gemakkelijk kunt zien welke socket naar welk kanaal op de SSR-module gaat.

We hebben ook een stekker nodig en ook wat extra draad voor de volgende stap, dus kannibaliseer een 9e verlengsnoer of laat wat extra ruimte op de 8 verlengsnoeren wanneer u het stekkeruiteinde afknipt.

Stap 6: De AC-verlengsnoeren aansluiten

De AC-verlengsnoeren aansluiten
De AC-verlengsnoeren aansluiten
De AC-verlengsnoeren aansluiten
De AC-verlengsnoeren aansluiten

De volgende stap haakt het uitvoeruiteinde van de SSR-module met 8 verlengsnoeren. Omdat de hoeveelheid draden hier heel gemakkelijk rommelig kan worden, heb ik een stroomverdeelblok en een nietpistool gebruikt om te proberen alles op zijn plaats te houden.

Als de stroom is uitgeschakeld, neemt u het afgeknipte stekkeruiteinde van de vorige stap en steekt u deze in de stekkerdoos. Strip de andere twee uiteinden en sluit ze elk aan op het bovenste en onderste stroomverdeelblok en niet deze twee verbindingen vast.

Sluit nu een van de opgeknipte verlengsnoeren uit de vorige stap aan. In mijn geval heb ik een behuizing met een gat van 1,5 diameter waar alle snoeren uit kunnen stromen, dus groen gemarkeerd is een van de snoeren waarvan het ene uiteinde is aangesloten op het distributieblok en het andere op het uitvoeruiteinde van de SSR-module. Om het circuit te voltooien, hebben we een veel kortere draad nodig (weergegeven in blauw) die het andere verdeelblok verbindt met de SSR-module. Trim en niet om alles zo netjes mogelijk te houden. Niet alleen houdt het nietje de zaken netjes, maar het dient ook een trekontlasting zodat trekken en trekken bij het aansluiten van de lampen aan de boom de verbindingen niet uit de componenten trekt. Het is onnodig te zeggen dat bij het nieten het nietje de draad of isolatie niet doorboort.

Stap 7: Test de AC-aansluitingen

Test de AC-aansluitingen
Test de AC-aansluitingen
Test de AC-aansluitingen
Test de AC-aansluitingen

In plaats van volledige snaren kerstverlichting aan te sluiten, heb ik goedkope nachtlampjes van $ 1 aangesloten op elk verlengsnoer om de animaties te testen en te ontwikkelen voordat de boom stond. Ik schilderde de lichten die verbonden waren met de koorden die de rode, groene en blauwe lichtsnoeren zouden bedienen.

Voer hetzelfde testprogramma uit dat wordt gebruikt om de SSR-module te testen en zorg ervoor dat elke verbinding goed oplicht.

De doos met lichten gaf aan dat elke snaar 0,34 ampère zou trekken, en voor de gekleurde lichten zou ik twee sets aan elkaar rijgen, wat zou resulteren in een totale trekking van 0,68 ampère. Dit is ver onder de classificatie van de SSR, die 75 - 200 VAC bij 2 ampère is, maar ik wilde het nog een keer controleren omdat de zekering op de SSR-module aan het bord is gesoldeerd, waardoor het moeilijk te vervangen is.

Stap 8: De ster maken

De ster maken
De ster maken
De ster maken
De ster maken
De ster maken
De ster maken
De ster maken
De ster maken

De eerste stap bij het maken van de ster is het maken van een afdrukbare sjabloon om het houten frame en plastic vorm te geven. Na het schalen en afdrukken van de sjabloon op de juiste maat nam ik een stuk hout van 4,25 "x 0,125" uit de ambachtelijke winkel en mat de afstand die nodig was voor elke kant van de ster. Ik heb geen van de verbindingen echt afgeschuind toen ik ze aan het snijden was, dus het vormen van de ster vereiste ondersteuning om de stukken op hun plaats te houden tijdens het lijmen.

Door de sjabloon op het werkoppervlak te plaatsen, heb ik steunen gebruikt om de twee stukken hout op hun plaats te houden, zoals in bruin op de afbeelding wordt getoond. Terwijl de twee randen van het hout elkaar raken, werd aan weerszijden van de verbinding lijm aangebracht. Toen nam ik een dun stuk balsa en knipte ik een driehoek uit om de twee stukken aan elkaar te maken en plakte dat op de ster. De reden voor het gebruik van balsa is dat zodra de ster stevig op elkaar zit, ik de driehoek gemakkelijk naar beneden kon schuren om overeen te komen met de contouren van de ster, omcirkeld weergegeven in de afbeelding van de ster.

Vanwege de constructiemethode moest ik een paar uur wachten op elke voeg om de lijm te laten drogen voordat ik naar de volgende voeg ging.

Nadat de hele ster was gevormd, gebruik ik gipsplaat om de openingen te bedekken waar twee stukken hout elkaar aan de uiteinden van de ster ontmoetten.

Vervolgens heb ik een paar kleine stoppers rond de binnenkant van de ster gelijmd om de LED-assemblage op zijn plaats te houden wanneer deze wordt geplaatst, gemarkeerd met een rechthoek. Ik geloof niet dat ze echt nodig zijn, omdat de zwaartekracht de LED-assemblage op zijn plaats houdt.

Leg de geassembleerde ster op de Lexan-plaat, volg de vorm van de ster en knip de ster uit de Lexan. Controleer na het snijden van de Lexan-ster of deze in het houten frame past en breng vervolgens 2 lagen witte spuitverf aan op één kant van de Lexan en laat deze 24 uur drogen. Hierdoor kunnen de LED's worden verspreid en aan het zicht worden onttrokken.

Om de dop tussen de Lexan-ster en het houten frame te verbergen, gebruikte ik een kleine strook balsahout van 0,25 inch en sneed het in vorm en dekte het frame af zodat de balsa de opening bedekte.

Eindelijk een stok / plug toegevoegd om de ster aan de boomtop te bevestigen.

Stap 9: Maak de LED-montage

Maak de LED-montage
Maak de LED-montage
Maak de LED-montage
Maak de LED-montage

Gebruik dezelfde sjabloon om de houten ster te vormen en knip de ABS-kunststofplaat op maat uit, maar iets kleiner om in de houten ster te kunnen steken. Test of het goed in de houten ster past.

Gebruik dan nog steeds de sjabloon met gatenlocaties, boor de 25 LED-gaten. De LED's van AdaFruit hebben een siliconen flens aan de buitenkant zodat ze perfect passen in gaten geboord op 12mm. Op de afbeelding zie je de flens en ik heb een groene lijn gebruikt om aan te geven waar het ABS-plastic de flens zou aangrijpen om de LED op zijn plaats te houden.

Begin met een van de punten en werk rond de buitenkant van de ster, ga dan naar de binnenste 5 steunen om het stuk te voltooien. In mijn programma heb ik de LED-posities bedraad zoals numeriek weergegeven in de afbeelding, waarbij 1 de eerste LED is na de connector.

Breng wat isolatietape aan op de rode en blauwe uiteinden van de kabel. Het zijn secundaire ingangen voor stroom die we niet zullen gebruiken, en in plaats daarvan de rood/blauwe aansluiting gebruiken met de klok/signaalaansluiting over de kabel zelf.

Stap 10: Het verlengsnoer maken voor de LED-ster

Het verlengsnoer voor de LED-ster maken
Het verlengsnoer voor de LED-ster maken
Het verlengsnoer voor de LED-ster maken
Het verlengsnoer voor de LED-ster maken

Het volgende is het maken van een 8 ft kabel om van de behuizing naar de ster aan de bovenkant van de boom te lopen.

Knip 4 stukken van 8 ft draad van gelijke lengte en gebruik aan het ene uiteinde van de kabelbundel elektrische tape of kabelbinders om de bundel bij elkaar en netjes te houden. Doe dit om de paar centimeter over de gehele lengte van de 4-kabelbundel.

Aan beide uiteinden van de bundel strip je de draden en soldeer ze aan de JST-connectoren, zodat de draad het ene uiteinde kan verbinden met de behuizing en het andere met de ster. Zorg ervoor dat u de relatieve positie van de draden in de juiste volgorde houdt, zodat de blauw/groen/geel/rode aansluitingen aan het andere uiteinde van de kabel bij het aansluiten op de ster overeenkomen. Gebruik een multimeter om te controleren of de kabel goed is aangesloten.

Stap 11: Verbind de ster met de Pi

Verbind de ster met de Pi
Verbind de ster met de Pi

We moeten nu de houder in de behuizing maken voor de ster / verlengdraad om in te pluggen.

Rood = 5 Volt

Blauw = Grond

Dus we kunnen deze twee lijnen op de JST-connector aansluiten op het aansluitblok waarop de stroom van de Raspberry Pi is aangesloten.

De andere twee verbindingen zijn:

Geel = Data = MOSI = Pin 19

Groen = Klok = SCLK = Pin 23

Ik volgde de bedrading van de tutorial van AdaFruit. Strip dus de uiteinden van twee startkabels zodat ze op de JST-connector kunnen worden gesoldeerd.

Als u er zeker van bent dat de bedrading de juiste signalen naar de LED's zal krijgen, kunt u de connector in de behuizing neerzetten voor trekontlasting, zodat trekken aan de verlengkabel de jumpers niet uit de Pi trekt.

Stap 12: Test de LED-ster

Test de LED-ster
Test de LED-ster
Test de LED-ster
Test de LED-ster

Met de LED-ster verbonden met de Pi. Voer een eenvoudig testprogramma uit om te controleren of de verlichting goed werkt. Veel van mijn code is aangepast van de AdaFruit-zelfstudie en een forumbericht op de website over het aanpassen van de zelfstudiecode aan de LED's die we gebruiken.

De bijgevoegde ledtest.py laat de ster langzaam veranderen van puur blauw naar puur rood.

Stap 13: Sluit de luidsprekers aan, bouw een behuizing boven

Sluit de luidsprekers aan, bouw een bovenkast
Sluit de luidsprekers aan, bouw een bovenkast

Niets bijzonders hier, sluit de luidsprekers gewoon aan op de audio van de Raspberry Pi en sluit ze aan op de stekkerdoos. Een eenvoudige actieve luidspreker met een volumeregelknop zal werken.

Voor de bovenkant wilde ik in de behuizing kunnen kijken, dus ik monteerde een stuk 8,5 x 11 glas (van een fotolijst) op het deksel en gebruikte klittenband aan de bovenkant zodat ik de bovenkant snel kon verwijderen als dat nodig was. Een groot deel van de behuizing is blootgesteld aan 110 VAC, dus het is belangrijk dat de bovenkant bescherming biedt tegen iets of iemand die per ongeluk contact maakt.

Stap 14: Sluit de verlichting aan op de boom

Verbind de verlichting met de boom
Verbind de verlichting met de boom

Ik heb de lay-out van kanalen op de kerstboom gekozen om me de maximale flexibiliteit te geven om verschillende soorten beweging/effecten te genereren. Bijgevoegd is een foto van hoe ik de verlichting voor de 5 witte strengen heb aangelegd. De overige drie kanalen waren elk een set van twee 100 lichtgekleurde lichten: rood, groen, blauw.

Het specifieke verlengsnoer dat u op elke streng aansluit, is niet essentieel, omdat ik in de volgende stap de mapping tussen GPIO0-7 en welke lampjes in de boom kan aanpassen.

Stap 15: Laad/maak muziek, software, sequenties…

Image
Image

Er zijn talloze kerstlicht-sequencers online beschikbaar voor de Raspberry Pi, maar ik heb een eenvoudige helemaal opnieuw gecodeerd. Alle sequenties werden gegenereerd door timings van beats/maten in Audacity (audio-editor) uit te lijnen met bepaalde commando's naar mijn sequencer.

rxmas.py

Dit programma kiest elke minuut willekeurig een statische lay-out voor de boom. Ik laat dit script draaien bij het opstarten van de Raspberry Pi (via een cron-taak) als het standaardgedrag bij het aansluiten van het apparaat.

kerstmis.py

Dit is het sequencer-programma, dat een sequence-bestand en een MP3 als invoer gebruikt

setup.txt

In de vorige stap heb ik de lay-out opgegeven die ik voor elk logisch kanaal heb gebruikt. Dit bestand wijst elke werkelijke GPIO0-7 toe aan het logische kanaal. Dus in de setup.txt die ik heb aangesloten, stuurt het verlengsnoer van GPIO0 logisch kanaal 8 (blauw), GPIO1 stuurt logisch kanaal 6 (rood), enz …

test.mp3 / test.txt

Dit is een eenvoudige testcase van een audiotelling van de nummers 1 tot en met 8 waarbij de equivalente lichtsnaren oplichten

Dus om dit voorbeeldtype aan te roepen:

./xmas.py test.txt test.mp3

carol.txt

Het sequencerbestand voor Christmas Sarajevo van Trans-Siberian Orchestra

LetItGo.txt

Het sequencerbestand voor Let It Go uit Disney's Frozen Movie

russisch.txt

Het sequencerbestand voor "A Mad Russian's Christmas" van Trans-Siberian Orchestra

U moet uiteraard uw eigen LetItGo.mp3- en carol.mp3-bestanden aanleveren! Koop ze gewoon bij Amazon.

OPMERKING: de ingesloten YouTube-video wordt versneld tot 110%, dus het klinkt misschien een beetje vreemd

Laat het gloeien!
Laat het gloeien!

Eerste prijs in de Make it Glow!

Aanbevolen: