Inhoudsopgave:
- Stap 1: De koepel
- Stap 2: Maak de stutten
- Stap 3: Bouw de koepel
- Stap 4: Verhoog het
- Stap 5: Plan hoe de LED's eruit moeten zien
- Stap 6: Meer over de LED-layout
- Stap 7: Leg de Fadecandys en voedingen neer
- Stap 8: lijnen in stroken veranderen
- Stap 9: De LED-strip voorbereiden
- Stap 10: Maak de panelen
- Stap 11: Kabelbinder de LED-strip aan de panelen
- Stap 12: Hang de panelen in de koepel
- Stap 13: Stroom- en datadistributiepanelen maken
- Stap 14: stoffen bekleding
- Stap 15: De stof ophangen
- Stap 16: De Kinect bevestigen
- Stap 17: Verdieping
- Stap 18: Dat is de Build Done … Op de code
- Stap 19: Fadecandy-server
- Stap 20: Configureer de Fadecandy Server
- Stap 21: De pixels in kaart brengen
- Stap 22: Kinect-integratie
- Stap 23: Kinect-diepte volgen
- Stap 24: Koepel klaar
Video: Interactieve LED Dome met Fadecandy, Processing en Kinect - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
Wat
When in Dome is een geodetische koepel van 4,2 m bedekt met 4378 LED's. De LED's zijn allemaal individueel in kaart gebracht en adresseerbaar. Ze worden bestuurd door Fadecandy en Processing op een Windows-bureaublad. Een Kinect is bevestigd aan een van de steunen van de koepel, zodat beweging in de koepel kan worden gevolgd en mensen kunnen communiceren met de lichten.
Waarom
Ik onderzoek groepservaringen door middel van gedeelde interactie. Ik maak graag interfaces die veel mensen tegelijk kunnen gebruiken. Het LED-oppervlak van de koepel is een geschikte uitgang voor een multi-user interface, omdat het enorm groot is, zodat veel mensen het kunnen zien. De koepel creëert ook een gezellige, bolvormige ruimte, die mensen uitnodigt om naar elkaar toe te keren. De Kinect werkt geweldig als invoer voor meerdere gebruikers, omdat mensen kunnen bewegen en tegelijkertijd het diepteveld kunnen beïnvloeden, de enige limiet is hoeveel mensen samen in de ruimte kunnen passen.
Voor When in Dome ben ik continu bezig met het ontwikkelen van nieuwe interactiemethoden, om te kijken welk effect verschillende invoermethoden hebben en wat goed werkt voor verschillende groepen mensen. Ik ben vooral benieuwd welke interfaces verbinding tussen de vrienden en vreemden in de koepel aanmoedigen, en wat de gedeelde ervaring zinvol en de moeite waard maakt.
Waar
Ik ontwierp en bouwde When in Dome als het laatste project voor mijn master, Design for Performance and Interaction bij het Interactive Architecture Lab, The Bartlett, UCL.
Hoe
Enkele van de gebruikte technologieën en tools:
- Fadecandy
- Verwerken
- Kinect (ik heb de mijne van eBay)
- Verstekzaag
- Rupszaag
- Naaimachine
- Soldeerbout
- Hitte geweer
- Heet lijmpistool
- Lasersnijder
- Oefening
Een deel van de gebruikte apparatuur:
- Buildwithhubs naafkit
- Behandeld gezaagd hout voor koepelsteunen
- 4 mm populieren multiplex
- Witte diffusiestof
- Zwarte stof
- Aluminium platte staaf
- Wago-connectoren
- 12awg en 24awg kabel
- 5v 30A voedingen
- Schuimvloeren
- Jst-connectoren
- condensatoren
Laten we gaan
Er zijn veel componenten in dit project die ik zal bespreken, ik hoop dat je er iets nuttigs en interessants in vindt!
Stap 1: De koepel
Naafkit
Ik besloot mijn dome te bouwen met een kit van buildwithhubs en ik zou ze zeker aanbevelen.
Ze verkopen kits met connectoren en geven advies over welke materialen je moet kopen voor de stutten. De meeste van hun koepels worden gebruikt in de eigen tuinen van mensen, terwijl de mijne in het openbaar zal zijn, dus ik kocht ook hun set extra veilige doppen, die voorkomen dat de stutten eruit springen als iemand op de koepel leunt.
Maat
Mijn koepel heeft een diameter van 4,2 meter. Ik koos deze maat omdat het betekende dat de langste zijde van de driehoeken waaruit de koepel bestaat 1,2 m zou zijn, en dit paste mooi in multiplexplaten toen ik de panelen ging maken om de LED's vast te houden.
Stap 2: Maak de stutten
lengtes
Ik heb de veerpootcalculator van buildwithhubs gebruikt om de lengtes te berekenen die nodig zijn om een koepel van 4,2 m te maken. 30 "shorts" op 1059 mm en 35 "longs" op 1209 mm.
Materiaal
2 pakken van 24 19 mm x 38 mm x 2400 mm gezaagd hout van B&Q (zoals aanbevolen op de buildwithhubs-site) zijn voldoende voor één koepel. Dit werkt goed genoeg, maar als ik het opnieuw zou doen, zou ik iets krijgen dat meer zijdelingse sterkte heeft.
Proces
De stutten werden op lengte gesneden met een verstekzaag en vervolgens schilderde ik ze door ze allemaal plat op een stofdoek te leggen en eroverheen te rollen. Dit leverde een leuke timelapse op!
Daarna heb ik ze samen gebundeld in batches van 6 tegelijk en de verbindingsstukken in de uiteinden geschroefd.
Stap 3: Bouw de koepel
Zodra de stutten zijn gemaakt, is het bouwen van de koepel super eenvoudig. Ik ga het proces niet in detail bespreken, want er zijn instructies op de buildwithhubs-site en ze bieden ook een boekje.
Stap 4: Verhoog het
Ik wilde niet dat de LED-panelen vlak bij de vloer zouden komen, omdat dit zou betekenen dat veel van hen zouden worden geblokkeerd door mensen in de koepel. Ik wilde ook de koepel hoger maken, zodat het ruimer en gastvrijer aanvoelt.
Poten
Ik maakte 50 cm hoge poten van 2x4s en schroefde er dezelfde connectoren in als de stutten.
Vervolgens heb ik, om de sterkte en structurele integriteit van de basis te vergroten, aluminium platte staaf gebruikt om X's tussen elk beengedeelte te creëren.
De deur
Ik heb een van de horizontale stutten verwijderd om een deuropening te maken en deze vervangen door een stuk triplex op de vloer om de poten op de juiste afstand te houden.
Stap 5: Plan hoe de LED's eruit moeten zien
Software
Ik heb SketchUp gebruikt voor mijn 3D-planningswerk omdat het gratis beschikbaar is in een app in de browser. Gelukkig (aangezien ik geen 3D-modelleringsexpert ben) vond ik een geodetisch koepelmodel beschikbaar in het 3D-magazijn, waar heel veel gratis modellen zijn.
Hoeveel LED's?
Bij de lay-out moest rekening worden gehouden met esthetiek, maar ook met stroom- en datadistributie. Ik besloot om 11 Fadecandy's (en 11 voedingen) te gebruiken om 33 van de driehoeken van de koepel te bedekken. Dit zou betekenen dat de Fadecandy's (en voedingen) elk 3 driehoeken zouden aandrijven, en dat één kant van de koepel open zou kunnen zijn zodat mensen van buiten naar binnen konden kijken.
Dit gaf me een maximum van 512 LED's per 3 driehoeken, aangezien elke Fadecandy 8 strips van maximaal 64 elk kan aansturen.
Een lay-out bepalen
Niet alle driehoeken zijn gelijk gemaakt! Mijn koepel is een 2V-stijl, wat betekent dat hij twee soorten driehoeken heeft, gelijkzijdige en gelijkbenige.
Ik bedacht vier verschillende mogelijke lay-outs voor de LED's en ging naar Instagram om mensen te vragen welke ze het leukst vonden. Stijl 1 en stijl 3 leken als beste uit de bus te komen. Stijl 3 was mijn favoriet, maar de concentrische driehoeken in stijl 3 hebben eigenlijk veel meer LED-strip nodig dan de gestreepte lay-out, dus ik koos voor stijl 1. Dit betekent dat er 8 gelijkzijdige driehoeken zijn met een concentrische driehoekige LED-lay-out en 25 gelijkbenige driehoeken met gestreepte LED indeling.
Omdat de gelijkzijdige driehoeken groter zijn en de concentrische lay-out bevatten, gebruiken ze elk veel meer LED's dan de gelijkbenige driehoeken. Daarom moest ik de gelijkzijdigen over de Fadecandy's verdelen.
8 van de Fadecandy's controleren elk 1 gelijkzijdige en 2 gelijkbenige driehoeken. 3 van de Fadecandys controleren elk 3 gelijkbenige driehoeken.
Stap 6: Meer over de LED-layout
Toen ik de algemene lay-out had bepaald, moest ik precies uitrekenen hoeveel LED's ik op elk paneel zou plaatsen. Ik deed dit met een combinatie van een spreadsheet om de beste manier te vinden om de mogelijkheden van de Fadecandy te maximaliseren, en tekeningen op schaal in Illustrator, zodat ik kon zien hoe de lay-out eruit zou zien.
De mogelijkheden van de Fadecandy maximaliseren: lijnen en stroken
Ik heb eerder gezegd dat elke Fadecandy tot 8 strips van elk 64 pixels kan aansturen. Mijn driehoeken bevatten veel lijnen van verschillende pixellengtes, sommige lijnen met maar heel weinig pixels.
Als ik elk van die lijnen als een strip zou behandelen, zou ik VEEL van het vermogen van de Fadecandy verliezen.
Omgekeerd, als ik het vermogen van de Fadecandy volledig wilde benutten en 64 LED's op elke strip wilde hebben, zou ik een aantal strips nodig hebben die in het midden van een lijn begonnen, en dat zal verwarrend zijn om later in kaart te brengen.
Ik moest uitzoeken hoe ik de lijnen het beste in strips kon samenvoegen om de stripcapaciteit zoveel mogelijk te benutten, zonder lijnen te splitsen.
Uiteindelijk…
Gelijkzijdige panelen hebben vier stroken, bestaande uit:
- 30, 30 (60 totaal - rood op bijgevoegde afbeelding)
- 30, 22 (52 totaal - oranje op bijgevoegde afbeelding)
- 22, 22, 14 (58 totaal - geel op bijgevoegde afbeelding)
- 14, 14, 6, 6, 6 (46 totaal - groen op bijgevoegde afbeelding)
Gelijkbenige panelen hebben twee stroken, bestaande uit:
- 23, 28 (51 totaal - blauw op bijgevoegde afbeelding)
- 3, 7, 11, 15, 19 (55 totaal - paars op bijgevoegde afbeelding)
Stap 7: Leg de Fadecandys en voedingen neer
Deze afbeelding toont een afgeplat beeld van het oppervlak van de koepel.
De LED-panelen
Elk driehoekig paneel is gelabeld met een nummer 1-11, wat verwijst naar de Fadecandy die het bestuurt. Elke Fadecandy heeft drie driehoeken, dus de driehoeken hebben ook een letter, A-C.
Andere elementen
De groene vakken geven de locatie van de Fadecandy's aan. Elke Fadecandy is gemonteerd op een klein paneel dat ook de stroom verdeelt, ik zal dit in een paar stappen tijd in detail laten zien.
De paarse vakjes tonen de USB-hubs. Via deze hubs zijn de Fadecandy's verbonden met een Windows desktop.
De blauwe vakjes geven de locatie van de voedingen aan, die in 3 droogkasten zitten, op de vloer rond de koepel.
Om het iets ingewikkelder te maken
Als je de locatie van FC10 en FC11 vergelijkt, zul je zien dat FC10 het dichtst bij de langste lijn van zijn gelijkbenige panelen ligt, terwijl FC11 het dichtst bij de kortste lijn ligt.
Als je naar 10C kijkt, zie je ook dat de Fadecandy zich rechts ervan bevindt, terwijl 10A zich links bevindt.
Met deze variaties moest ik rekening houden bij het overwegen hoeveel kabel elke ledstrip in het begin nodig had en bij het in kaart brengen ervan.
Stap 8: lijnen in stroken veranderen
Deze spreadsheet was bedoeld om erachter te komen hoeveel kabel er aan het begin van elke sectie van de LED-strip moest gaan.
Hoeveel kabel is er nodig?
Sommige lijnen hebben het label "jst", wat betekent dat ze het begin van de strip zijn en alleen een JST-connector nodig hebben.
Sommige strips hebben "jst" en een lengte, wat betekent dat de strip op enige afstand van de Fadecandy begint (zoals we zagen in de lay-out in de vorige stap), en die lengte van de kabel nodig heeft om deze te bereiken voordat de JST-connector wordt toegevoegd.
Sommige strips hebben slechts een lengte, wat betekent dat ze met die lengte van de kabel op het stripgedeelte vóór hen moeten worden bevestigd.
Stap 9: De LED-strip voorbereiden
De LED-strip
Ik gebruik een ledstrip in ws2812b-stijl, die drie ingangen heeft, 5V-voeding, aarde en gegevens. Door 3-pins vrouwelijke JST-connectoren te gebruiken, kan ik elk van deze pinnen afzonderlijk aansluiten. De mannelijke tegenhangers van de JST-connectoren zullen de stroom en data leveren.
Solderen
Met behulp van mijn spreadsheet uit de vorige stap heb ik alle LED-strips op de vereiste lengtes gesneden, gesoldeerd op de vereiste kabellengtes en de JST-connectoren. Ik heb ook een condensator aan het begin van elke strip geplaatst, dit is om te voorkomen dat pieken in de beginstroom de eerste pixel in de strip verpesten. (Ik heb dit eerder meegemaakt in eerdere projecten waar ik de condensator niet heb toegevoegd, dus het is zeker de moeite waard om te doen.)
Afdichting
Ik voegde wat RTV-siliconen toe aan het blootgestelde deel van de strip, bedekte het met heldere krimpkous en bestraalde het met een warmtepistool om de waterdichtheid opnieuw af te dichten.
Stap 10: Maak de panelen
Materiaal
Ik besloot om 4 mm populieren multiplex te gebruiken om de panelen te maken. Ik hield het dun om het gewicht te verminderen. Ik berekende het totale gewicht van het triplex en nam contact op met buildwithhubs om te controleren of ik binnen de toegestane gewichten zat om spullen van de koepelstructuur te hangen. Omdat het gewicht redelijk gelijkmatig over de koepel wordt verdeeld, is het prima. Ik had graag acryl gebruikt, maar helaas was het voor mij buiten budget voor dit project.
Ledstrip bevestiging
Ik wilde de LED-strip niet rechtstreeks op de panelen lijmen, omdat ik delen van de defecte strip zou willen vervangen en mogelijk op een bepaald moment de hele strip opnieuw zou willen gebruiken, dus besloot ik gaten in de panelen te maken om te gebruiken kabelbinders. De stippen op de bijgevoegde afbeelding tonen de lay-out van de kabelbindergaten.
Het uitsnijden van de panelen
Er zijn in totaal 33 driehoeken en ze passen in 9 vellen multiplex van 2440 x 1220 mm via de lay-out die u in de bijgevoegde afbeelding ziet.
In een ideale wereld zou ik elk van de 9 lagen multiplex rechtstreeks in een lasersnijder hebben gestoken en tegelijkertijd de driehoeken en de kabelbindergaten hebben gesneden. Helaas leven we in een wereld waar lasersnijders van 2440 x 1220 mm zeldzaam zijn, dus de driehoeken moesten worden uitgesneden met behulp van een baanzaag.
Nog treuriger, we leven ook niet in een wereld waar zelfs maar één van mijn driehoekige panelen in de lasersnijder op school zou passen, dus moest ik een sjabloon van de helft van elk van de driehoekige ontwerpen lasersnijden en gebruiken om de gaten met de hand te boren.
Ik heb ook de achterkant van de driehoeken geverfd, de meeste zwart en vervolgens zes willekeurige zilveren.
Stap 11: Kabelbinder de LED-strip aan de panelen
Dit was veel kabelbinden! Gelukkig had ik wat vrienden om te helpen.
Kabellabels
Ik heb elke JST-connector gelabeld met een kleurgecodeerd kabellabel, om het gemakkelijker te maken om hem op zijn Fadecandy aan te sluiten. Ze zijn regenboog geordend, dus voor elke Fadecandy is er:
- Strook 1- Rood
- Strook 2 - Oranje
- Strook 3 - Geel
- Strook 4 - Groen
- Strook 5 - Blauw
- Strook 6 - Paars
- Strook 7 - Grijs
- Strook 8 - Wit
Geen exacte regenboog, maar dat zijn de kleuren waarin de labels kwamen en het werkt!
(Sommige van de Fadecandy's, degenen die slechts 3 gelijkbenige panelen aandrijven, in plaats van 1 gelijkzijdige en 2 gelijkbenige, gebruiken slechts 6 strips.)
Stap 12: Hang de panelen in de koepel
Mijn driehoekige panelen zijn iets kleiner dan de opening tussen de stutten, ik wilde dat ze vrij in de ruimte zouden hangen in plaats van ze stevig aan de stutten te bevestigen.
Ophangmethode:
Elk knooppunt van de koepel heeft een oogbout - deze worden niet standaard geleverd, maar Buildwithhubs verkoopt ze wel in een pakket. Deze oogbouten zijn perfect om dingen aan op te hangen (maar pas op dat u niet te veel gewicht van één knoop hangt).
Ik besloot paracord en kleine karabijnhaken te gebruiken. Het snoer wordt door twee gaten in elke hoek van het paneel gelust. De karabijnhaak klemt het koord op de oogbout. Om het snoer strakker te maken en ervoor te zorgen dat het paneel correct in de ruimte wordt gepositioneerd, heb ik ook aan elk een plastic knevel toegevoegd. Dit betekent dat ze gemakkelijk kunnen worden vastgeklikt terwijl ze los zitten en daarna worden vastgedraaid om ze in het midden van de ruimte te plaatsen.
Ik ben erg blij met hoe de methode van de karabijnhaak is verlopen. Het geeft veel voldoening om de panelen op de koepel te klikken, klik klik klik. Het is ook snel en gemakkelijk om ze te verwijderen.
Stap 13: Stroom- en datadistributiepanelen maken
Dus we hebben heel veel JST-connectoren gesoldeerd aan heel veel LED-strips, maar waar worden ze op aangesloten?
Elke strip moet worden aangesloten op stroom, aarde en gegevens van de Fadecandy. Er zijn 11 aansluitpanelen die de 11 Fadecandy's bevatten en de stroom van de 11 voedingen verdelen. Ik laser gesneden deze panelen uit overgebleven 4 mm populieren laag. Aan de zijkant zijn sleuven voor stukjes klittenband, waarmee de panelen netjes aan de koepelsteunen worden bevestigd.
Stroom
Elke LED gebruikt een 0.06A bij volledige helderheid. Dit betekent dat het totale vermogen dat nodig is om 4378 pixels op vol vermogen te laten werken ~ 1,3 kW is.
Ik heb echter in wezen 11 volledig gescheiden stroomcircuits. (Ze zijn alleen verbonden via -ve via de Fadecandy. Sluit de +ve van aparte voedingen niet aan, want dit is gevaarlijk.) Elk circuit voedt maximaal 428 pixels, in totaal 128W, dus de stroom is op een veel veiliger niveau.
Mijn voedingen kunnen elk 150W leveren (30A bij 5V).
Op het aansluitpaneel komt de voeding en massa uit de voeding aan de onderkant, deze wordt dan aangesloten op wago connectoren, die deze verdeelt over 8 mannelijke JST connectoren.
Gegevens
De Fadecandy wordt aan de linkerkant van het paneel bevestigd en de USB-kabel komt van de onderkant op dezelfde manier als de stroomkabels.
De datakabel van de JST-connector is gesoldeerd aan een strip met vrouwelijke pinnen met één kop die in de pinnen van de Fadecandy wordt gestoken. Een van de aardpennen op de Fadecandy is verbonden met het aardingscircuit. (De aardpennen zijn allemaal met elkaar verbonden, dus het is niet nodig om ze allemaal aan te sluiten)
Stap 14: stoffen bekleding
Het aan elkaar naaien van de stoffen bekleding was onverwacht een van de moeilijkste en tijdrovendste onderdelen van dit project. Gelukkig had ik een vriend om te helpen!
Lay-out
Op het afgeplatte diagram van de koepel kun je zien dat het deksel bestaat uit 5 vijfhoeken die elk zijn opgebouwd uit 5 gelijkbenige driehoeken, plus 8 gelijkzijdige driehoeken. We hebben de omslag in deze volgorde gemaakt - eerst de 5 vijfhoeken aan elkaar genaaid en ze vervolgens samengevoegd met de gelijkzijdige driehoeken.
(De zwarte delen op dat diagram zijn open en onbedekt.)
Meten
We probeerden de afmetingen voor de driehoeken te berekenen met wiskunde zoals normale mensen, maar om de een of andere reden kwam het steeds verkeerd uit en paste het niet helemaal in de koepel, dus uiteindelijk gebruikten we een stuk polycord door de oogbouten van de knopen om meet de maat en gebruik deze polycord-driehoek als sjabloon. Ik weet niet waarom het gebruik van de bekende metingen van de struts+node gaps steeds fout ging, 3D-driehoeken zijn verwarrend.
vijfhoeken
Terwijl we de gelijkbenige driehoeken maakten en ze aan elkaar naaiden tot vijfhoeken, hingen we ze vaak aan de koepel om te controleren of alles op één lijn lag. Het is aan de koepel bevestigd met behulp van kleine stukjes elastiek die zijn genaaid op de punten waar de driehoeken samenkomen.
Samen aan de slag
Nadat we de vijf vijfhoeken hadden gemaakt, begonnen we de gelijkzijdige driehoeken uit te snijden met dezelfde methode - polykoord door de oogbouten. Toen we twee van de vijfhoeken op deze manier aan elkaar naaiden, realiseerden we ons dat het helemaal niet goed op één lijn lag. Dus besloten we in plaats daarvan alle vijfhoeken in de koepel op te hangen en de gelijkzijdige driehoeken erop vast te pinnen. Toen het allemaal vastgespeld was, haalden we het naar beneden en naaide mijn vriend het samen tot één stevig stuk.
Het op deze manier vastzetten was veel werk, veel met mijn armen recht boven mijn hoofd, vaak terwijl ik stof probeerde vast te spelden vanaf de buitenkant van de koepel, terwijl ik aan de binnenkant stond. Plezier!
Etikettering
Onderweg hebben we de stukken gelabeld met een in water oplosbare stoffen pen … deze dingen zijn geweldig omdat je direct op de stof kunt schrijven en het vervolgens met water kunt spritzen en de inkt zal verdwijnen (soms duurt het een paar keer, maar het werkt wel)
Stap 15: De stof ophangen
De stof wordt in de koepel gehangen door middel van elastiekjes die op elk punt zijn vastgenaaid, deze worden vastgemaakt aan de oogbouten op de knopen van de koepel.
Het vastbinden en losmaken van de elastieken gaat niet zo snel als het knippen op de panelen, dus ik zou deze methode op een bepaald moment willen vervangen door karabijnhaken of een andere clip.
Stap 16: De Kinect bevestigen
In een gedurfde blijk van vertrouwen in het universum heb ik op geen enkel moment de opening tussen de panelen gemeten om er zeker van te zijn dat een Kinect echt zou passen. (Vertel het alsjeblieft niet aan mijn docenten)
Je kunt je mijn vreugde voorstellen toen het zo paste.
Deze afbeelding toont een Kinect v2 maar ik heb uiteindelijk een Kinect v1 gebruikt om redenen die ik later zal bespreken.
Het is gewoon aan de veerpoot bevestigd met dubbelzijdig klittenband.
Stap 17: Verdieping
De vloer is gemaakt van in elkaar grijpende EVA-schuimmatten die ik van B&Q heb gekregen. Ik heb deze nu voor twee projecten gebruikt en het is geweldig voor binnenshuis. Het is erg comfortabel om op te zitten.
Buiten op winderige festivals zoals Burning Man moet het overal worden vastgezet, want de wind zal er recht onder komen en het hele ding optillen.
Stap 18: Dat is de Build Done … Op de code
Bedankt dat je tot nu toe bij me bent gebleven. Dat is alle fysieke bouw DONE. Laten we nu de software bespreken.
Stap 19: Fadecandy-server
Download de software
De Fadecandy-software is hier beschikbaar.
Download de hele github en pak deze uit.
Voer de server uit
Navigeer naar de map 'bin' in de fadecandy-dingen die je zojuist hebt gedownload.
Klik op fcserver.exe.
Hierdoor wordt een cmd-venster geladen waarin alle aangesloten Fadecandy-apparaten worden weergegeven. In dit geval zijn er 11.
Test de LED's
Navigeer naar https://127.0.0.1:7890/ om de gebruikersinterface van de Fadecandy-server te zien. Dit toont alle aangesloten apparaten opnieuw en zorgt voor een klein beetje controle.
Als u op de vervolgkeuzelijst voor het testpatroon klikt, kunt u alle pixels voor die Fadecandy op volledige of halve helderheid instellen. Het is ook mogelijk om de kleine groene LED op de fadecandy zelf te laten knipperen door op "identificeren" te klikken.
Stap 20: Configureer de Fadecandy Server
Op dit moment worden de Fadecandy's allemaal in willekeurige volgorde geladen. Eerder heb ik mijn driehoeken 1-11 gelabeld, maar de computer kan op dit moment niet weten welke welke is. Om dat te doen, moeten we een configuratiebestand maken.
Welke Fadecandy is welke?
Voordat we de computer kunnen vertellen in welke volgorde de Fadecandy's zich bevinden, moeten we zelf uitzoeken welke dat is. Ik deed dit door de gebruikersinterface van de browser te gebruiken om elke sectie te laten oplichten en vervolgens te noteren welke het was en wat het serienummer is.
Het configuratiebestand
In het configuratiebestand vermelden we alle serienummers, de indexpixel waarmee ze beginnen en hoeveel pixels ze theoretisch beheersen. Ik zeg theoretisch omdat ik de pixels in kaart zal brengen alsof er 512 per Fadecandy zijn, ook al zijn het er in feite minder. Dit maakt het alleen maar gemakkelijker omdat we weten dat de eerste pixel van een Fadecandy altijd [Fadecandy-nummer * 512] is.
Het maakt de Fadecandy niet uit dat ze eigenlijk allemaal minder pixels hebben dan het maximum, en we zullen er ook voor zorgen in de verwerkingscode.
Het configuratiebestand laden
Om nu de Fadecandy-server te starten, in plaats van alleen op fcserver.exe te klikken, moeten we dit configuratiebestand eraan doorgeven.
We doen dit door een cmd-prompt in de bin-map te openen en te typen
fcserver config.json
Hiermee worden nu alle Fadecandy's op de juiste adressen geladen.
Stap 21: De pixels in kaart brengen
Dymaxion-toewijzing
Buckminster Fuller (die geodetische koepels populair maakte), creëerde ook de dymaxion-kaart, die een weergave is van de aarde alsof deze zich op het oppervlak van een icosaëder bevindt. Het kan worden gevouwen om 3D te zijn of platgedrukt om 2D te zijn.
Op dezelfde manier maak ik het oppervlak van mijn koepel plat van zijn 3D-vorm naar een 2D-weergave, zoals weergegeven in de bijgevoegde afbeelding. Deze 2D-weergave wordt in kaart gebracht in een verwerkingscanvas waar alles wat ik op het canvas teken onmiddellijk over de LED's wordt weergegeven.
Verwerken
Processing is een visuele programmeertaal. Net zoals u een rechthoek in Photoshop zou tekenen met de muis, kunt u een rechthoek tekenen in Processing door code als volgt te schrijven:
recht(100, 80, 10, 50);
Dat zou je een rechthoek geven die begint met 100 px in, 80 px omlaag, 10 px breed en 50 px hoog.
Als je niet bekend bent met Processing, raad ik Daniel Shiffman's tutorials op YouTube ten zeerste aan, die even vermakelijk als informatief zijn.
Lijnen tekenen van LED's
Verwerking werkt met Fadecandy uit de doos. Er is een functie om LED's in lijnen uit te zetten, door het te vertellen:
- de startindex / het adres van de LED's in die regel
- het werkelijke aantal pixels in de lijn
- de x, y locatie van het midden van de lijn
- de afstand tussen hen
- de hoek van de lijn
Driehoeken tekenen
Ik schreef een functie voor elk van mijn soorten driehoeken (gelijkzijdige en gelijkbenige). Ik vertel het:
- de startindex / adres van de LED's in deze hele driehoek
- het midden van de driehoek
- de hoek waarop de hele driehoek staat
Uit deze informatie schrijft het de lijnen van LED's, met behulp van trigonometrie om ze correct op het verwerkingscanvas te plaatsen.
(Je herinnert je misschien veel stappen terug, ik heb erop gewezen dat vanwege de locatie van de Fadecandys, sommige gelijkbenige driehoeken beginnen bij de langste strook en sommige bij de kortste, en sommige komen van links en sommige van rechts. Dit betekent dat ik hebben eigenlijk vier functies voor gelijkbenige driehoeken)
Over adressen
Als ik index / adres zeg, verwijs ik naar hoe de Fadecandy de LED's adresseert.
bijv.
- Op de eerste Fadecandy begint de eerste strip bij 0
- Op de eerste Fadecandy begint de tweede strip bij 64 (ongeacht hoeveel pixels er daadwerkelijk op de eerste strip staan)
Op de eerste Fadecandy begint de derde strip bij 128 (ongeacht hoeveel pixels er daadwerkelijk op de eerste twee strips staan)
- Op de tweede Fadecandy begint de eerste strip bij 512 (ongeacht hoeveel pixels er daadwerkelijk in de eerste Fadecandy zitten)
- Op de tweede Fadecandy begint de tweede strip bij 576 (… je snapt het idee)
Code
Een "lege" versie van mijn dome-code is hier beschikbaar op github.
Deze code bevat de hierboven beschreven mapping, maar geen afbeeldingen behalve een cirkel die is getekend waar de muis is.
n.b. De pixels worden alleen weergegeven in deze code als de Fadecandy-server draait.
Stap 22: Kinect-integratie
Kinect 1 of 2?
Er zijn twee versies van de Kinect. Kinect v1 werkte met de Xbox 360, terwijl Kinect v2 werkte met de Xbox One (verwarrend).
Ik gebruik een Kinect v1. Een deel van de reden hiervoor is dat het erg moeilijk is om de lengte van de USB-kabel op de Kinect v2 te verlengen vanwege de hoeveelheid gegevens die wordt verzonden. Het vereist een dure en moeilijk te vinden verlengkabel. Omdat mijn Kinect aan de bovenkant van de dome is gemonteerd, kan ik een Kinect v2 niet rechtstreeks aansluiten op het bureaublad op de vloer. Een belachelijk probleem om te hebben, maar daar zijn we dan.
Sommige van mijn foto's en video's tonen een Kinect v2, dit komt omdat ik aanvankelijk een opstelling had waarbij ik de Kinect v2 had aangesloten op een laptopkabel die halverwege de dome was vastgemaakt, die informatie via OSC naar de desktop stuurde die de LED's bestuurt. Dit werkte prima voor sommige toepassingen, maar toen ik eenmaal de hele dieptefeed wilde gebruiken, kon ik het niet helemaal over OSC sturen, dus schakelde ik over naar Kinect v1.
Installatie
Ik ga het niet hebben over het installeren van de SDK en het verkrijgen van de juiste kabels voor de Kinect, want er zijn veel handleidingen over hoe dat te doen. Ik heb de SDK v1.8 geïnstalleerd en binnen Processing gebruik ik de OpenKinect-bibliotheek.
Stap 23: Kinect-diepte volgen
Code
Mijn code is hier beschikbaar op github. Het is best goed becommentarieerd, dus blader door!
Dit is een overzicht van wat de code doet:
De Kinect-dieptecamerafeed wordt op kleur toegewezen (bijv. ver weg = rood, dichtbij = groen) en direct boven de LED's weergegeven. Maar er is meer dan dat.
Ten eerste schommelt de kleur van elke pixel in de dieptefeed heen en weer rond de werkelijke tint, om een glinsterend effect toe te voegen.
Ten tweede, bij het starten van de schets, zal klikken met de muis een achtergrondmeting uitvoeren, waarna alleen pixels die dichterbij zijn dan die achtergrondmeting worden weergegeven. Dit voorkomt dat de vloer / eventuele kussens / de structuur van de koepel zichtbaar wordt.
Er is ook een functie om de achtergrond elke x frames te resetten, dus als mensen in de koepel stil liggen, komen ze niet opdagen. Dit betekent dat daadwerkelijke beweging opvalt, in plaats van de hele globby massa diepe onzin te tonen. (Ik zal dit binnenkort vervangen door een lerped-versie, dus de achtergrond doet niet zo'n "harde" reset, maar evolueert in de tijd)
Er is ook een achtergrondanimatie die clusters van kleurvlekken toont, het aantal clusters is omgekeerd toegewezen aan de hoeveelheid actie die in de koepel plaatsvindt, dus als er niemand aanwezig is of ze zijn stil, is er veel animatie. Daarna verdwijnt het geleidelijk naarmate er meer beweging binnenin plaatsvindt.
Stap 24: Koepel klaar
Ik hoop dat je iets hebt geleerd en dit interessant vond. Bekijk de volledige video met een heleboel beelden van de werking van de koepel.
Ik heb hier voor de lol ook enkele foto's met lange sluitertijd toegevoegd die ik heb gemaakt van When in Dome. Genieten van!
Eerste prijs in de Make it Glow-wedstrijd 2018
Aanbevolen:
De interactieve verhalenradio: 6 stappen (met afbeeldingen)
De Interactive Storytelling Radio: In dit project bouwen we een nette radio om tot een spraakgestuurde, interactieve verhalenverteller. Toekomst, hier komen we
Interactieve kunstinstallatie: 4 stappen (met afbeeldingen)
Interactieve kunstinstallatie: in dit project combineren we codering en fysiek computergebruik om een interactieve kunstinstallatie te creëren. Het voorbeeld dat in deze Instructable wordt gedeeld, is een codeerproject voor studenten dat grafische en geluidselementen combineert met een speciaal gebouwde interface. De
Interactieve windgong: 4 stappen (met afbeeldingen)
Interactive Wind Chimes: Perpetual Chimes is een set versterkte windgong die een escapistische ervaring biedt waarbij uw samenwerking de soundscape componeert. Omdat er binnen geen wind is, is interactie met het publiek vereist om zachtjes te tikken of te zwaaien en aan te moedigen/n
Interactieve paardenbloem: 11 stappen (met afbeeldingen)
Interactieve paardenbloem: Dit project laat zien hoe je een interactieve afbeelding van een paardenbloem maakt. Het begint als een gele bloem met LED's voor bloemblaadjes en verandert dan in een witte paardenbloemklok, die kan worden geblazen om de zaden te verspreiden. Het is gebaseerd op een prachtig kunstw
Interactieve LED-tafel: 14 stappen (met afbeeldingen)
Interactieve LED-tafel: hier is een begeleide instructie over hoe u uw eigen interactieve LED-tafel kunt maken met behulp van een van de kits van Evil Mad Sciencitst. Hier is een video van mijn finaletafel in actie in het donker, en een foto van hoe het eruit ziet :