Et par måneder tilbage gik en $ 3000 torden- og lynstemplampe viral i makerens samfund. Det var et forbløffende smukt lys, men prislappen forlod det uden for rækkevidden af nogen med deres hygiejne intakt. Det vi laver i dag er ikke lige det samme - vi laver noget mere praktisk, i stedet for et kunststykke, men det bliver meget køligere og mere tilpasseligt.
Jeg har valgt at udelade talere på den antagelse, at du sikkert allerede har et godt par højttalere på dit værelse, som du hellere vil bruge, og helt ærligt at lægge en taler i en lampe er lidt underligt. I stedet vil jeg tilføre en mikrofon, der gør det muligt for lynet at reagere automatisk på høje lyde - enten fra en faktisk tordenvejr eller et lydspor fra din pc eller stereo.
Vi vil også bruge en række fuld RGB Neopixel LED'er (WS2812B), så vi kan gengive andre farver end hvide og har kontrol over hver pixel.
Advarsel : Strømforsyningen, jeg har brugt i dette projekt, har skrueterminaler, der forbinder til en levende vekselstrømsadapter. Hvis du ikke føler dig selvsikker ledningsføring, skal du sørge for at købe en helt lukket strømforsyning. I det mindste skal du vedlægge PSU'en i en sikker projektboks.
Trin 0: Introduktion
Her er en demo-video af det færdige projekt. Jeg har implementeret et par forskellige tilstande hidtil, fra standard lyn til en trippy sur sky og en farvefading humørlampe, som kan vælges fra fjernbetjeningen.
Den fulde kode og biblioteker, der er nødvendige, er tilgængelige for download fra dette Github-lager.
Trin 1: Du skal bruge
- WS2812B streng, typisk prissat til omkring $ 50 for 5 meter. Bare rolig, hvis du har en anden type Neopixel-streng, understøttes det næsten sikkert af FastLED-grænsefladen, men dine ledninger kan være forskellige (du kan muligvis kræve en synkroniseringslinje ud over signalet).
- 5V, 10A + strømforsyning - Jeg købte nogle 15A enheder til $ 11 hver. De tager 120-240V AC-indgang og producerer en kraftig 5V-udgang, som vil være mere nok til at køre alle vores pixels ved fuld lysstyrke og Arduino.
- Elektrisk kabelføring, stikkontakt og inline-omskifter
- Projektindkapsling
- To Arduinos. $ 10 Funduino kloner er fine. Det andet er nødvendigt for fjernbetjeningen, mens den første styrer hovedlogikken og lysdioderne.
- To 2.2k (eller deromkring) Ohms modstande - den nøjagtige værdi betyder ikke noget så meget, omkring 1, 5k op til 47k skal fungere.
- breadboard
- TSOP4838 IR-modtager
- IR fjernbetjening - Jeg købte i bulk for omkring $ 2 hver, men enhver fjernbetjening skal arbejde med kodeændringer.
- Stort mikrofonmodul
- Skrot MDF træ til at skære din base fra, og et stiksav.
- Polystyrenemballage / æskeindsatser.
- Polypropylen bomuld pude fyldning. Jeg trak mere end nok fra et par forfærdelige gamle puder. Hvis det ikke er en mulighed, skal du være i stand til at købe nogle nye til omkring $ 10, eller bruge endnu billigere bomuldsuld. Jeg forsøgte med begge - bomuldsulden havde brug for mere arbejde med at skulle retage det og var ikke så fluffy, men i en knivspids vil det fungere.
- Kæde og kroge til at hænge skyen - skal holde op mere end 5 kg.
- Limpistol med lav temperaturindstilling
- Sprøjtestrimmer - nemmere at sætte fyldet på din sky med dette, men en limpistol kan også fungere.
Den samlede pris er omkring $ 100, ikke med værktøj, men det meste af det jeg scrounged fra hele huset. Alle elektronik komponenter er almindeligt tilgængelige; mikrofonen kan findes i et sensorsæt eller købes individuelt.
Trin 2: Skær basen
Klip en hård base ud af et stykke stykke MDF med et stiksav - den præcise form er naturligvis op til dig, men en eller anden grund er en sky nyrebønneformet i mit sind. Vi fastgør nogle kroge til dette til hængning, men ellers giver det kun en solid base at bygge videre på. Det centrale område er forbeholdt elektronik, PSU og håndtering af kæden fra, så sørg for at du har nok plads til at placere i det mindste dit projektrum med nogle kroge omkring det.
Trin 3: Lag på polystyren
Dette er sværest og kreativt skridt, men vi skaber virkelig bare noget solidt og kinda-sorta sky-formet til at lime LED-stripen på. Lim store stykker polystyrenpakning på bunden (og under den), ved at bruge en lav varmeindstilling på limpistolen. Hvis du ikke har en lav indstilling, skal du slukke for varmepistolen og lade den afkøle lidt, før du forsøger at klæbe. Hvis temperaturen er for høj, smelter du simpelthen gennem pakningsmaterialet.
Sørg for, at hvert stykke er solidt inden limning af det næste, og det er bedst at holde fast mere end ikke nok.
Igen skal du huske at forlade et stort nok hulrum inde i skyen for at passe til elektronik, kæde og kroge.
Trin 4: Skær et 3D Cloud Shape
Brug en udskæringskniv til at opsluge din sky ved at afrunde hjørnerne og skære unødvendigt materiale væk, indtil du har opnået en grov 3D-skyform. Det betyder ikke noget, hvor hårdt dette er, da vi dækker alt i pakning senere - du kan nemt skjule fejl.
Trin 5: Fix kroge, rydde op
Endelig skal du rette tre eller fire kroge til MDF-basen, inde fra hvert hjørne af skyens hulrum. Du skal bore et lille pilothul, da MDF er svært at skrue lige ind.
Jeg gav også alt et enkelt lag hvid spraymaling for at sikre en ensartet farvebase, men jeg er ikke sikker på, at det faktisk var nødvendigt.
Trin 6: Lim LED Strips
Før du begynder at anvende lim til LED'erne, enten start fra en ny strimmel eller tælle, hvor mange LED'er du har i alt - du skal udarbejde, hvor mange du har brugt senere i programmeringstrinnet. Skær et lille hul i siden af din sky og blæk gennem de ledninger, der udgør starten af din LED-strimmel i skydehulen. Vær meget opmærksom på, at du starter fra den rigtige ende - LED-strimlerne er retningsfølsomme, så sørg for, at signalpile peger væk fra hulrummet.
Når du arbejder langsomt, skal du holde LED-pixels på polystyrenbasen i et cirkulært mønster, før du trækker strimlen ned til bunden for at dække undersiden. Igen - du behøver ikke at være perfekt her, for når vi har spredt alt og smidt det sammen med stuffing, ser det hele ud til at være temmelig imponerende alligevel.
Jeg brugte i alt 85 LED'er, eller lidt over 2, 5m, og havde to gange omkredset hovedlegemet og brugt en enkelt streng LED'er på undersiden.
Trin 7: Ledningsdiagram
Ledningerne er komplekse, men let opdelt i sektioner.
Først skal du få strømforsyningen tilsluttet og sikret, helst i et separat projektilbehør. Jeg kommer ikke til at foredre dig om sikkerheden ved levende AC-ledninger, så jeg går ud fra, at du kan håndtere denne del, og du har en 5V og GND-linje fra den.
VIGTIGT : Når du programmerer og tester Arduino, skal 5V fra strømforsyningen forblive isoleret fra Arduino's (GNDs er alle tilsluttet) - det skal kun strømme LED-strimlen, mens Arduino bruger den 5V, der leveres via USB. Når du er færdig med programmeringen, skal USB-enheden afbrydes og giver ikke længere 5V til Arduino. På dette tidspunkt skal du forbinde 5V fra din forsyning til 5V-skinnen på venstre side af brødbrættet.
Start ved at forbinde jorden og 5V stifter fra hver Arduino til venstre side skinner på breadboard. De vil dele den samme strømkilde, om det er den eksterne PSU, vi har, eller USB tilsluttet en af dem.
Udfør derefter I2C-ledningsafsnittet - det er det, der gør det muligt for vores to Arduinos at kommunikere. Tag A4-benene fra begge Arduinos på en enkelt række på brødbrættet, og tilslut derefter en 2, 2k-modstand fra den pågældende række til 5V-skinnen. Gentag for A5, forbinder dem på separat række, med en anden 2.2k modstand igen til 5V.
Tilslut IR-modtageren næste - Kontroller pin-konfiguration, hvis du har en anden model, men signalstiften skal i princippet gå til D11 på en Arduino. Upload thundercloud_ir_receiver.ino skitse til denne Arduino (all kode her), og tag stikket ud af USB, da vi ikke længere har brug for det.
På den anden Arduino skal du forbinde Data In- signalstiften fra starten af din LED-stribe til D6. GND fra dine lysdioder skal være fælles med alle Arduinos, men på dette tidspunkt kommer 5V'en direkte fra PSU'en.
På denne Arduino skal du også sætte mikrofonmodulet i A0. Upload den anden thundercloud.ino skitse, og hold USB tilsluttet til nu, mens du fejler. Begynd med at ændre NUM_LEDS- variablen passende.
Trin 8: Lim på fyldningen
Som et sidste trin, lim på din stuffing. Der er ingen særlig teknik her - bare sprøjt skyen med et lag lim og tag en håndfuld fyld på. Det er nemmere at arbejde med fyld, hvis du allerede har plaget det for at øge overfladearealet.
Hvis du har brugt den samme fjernbetjening som jeg gjorde, sætter STROBE knappen den i lydreaktive cloud mode; FLASH er trippy-farvetilstanden, og FADE er den langsomt falende farvestemperlampe.
Trin 9: Kodeforklaring
Hvorfor to Arduinos? Både infrarød modtager programmering og WS2818B pixel driver bibliotek er meget følsomme over for timing - hvis timingen er forsinket, er IR-signalet beskadiget. Ved at give hvert kredsløb det egne mikrocontroller og lade dem tale over I2C-protokollen, kan vi sikre timingen er perfekt på hver. Du kan også finde separate IR-moduler med deres egen mikrocontroller indbygget, men min forskning har fundet, at de rent faktisk koster mere end en enkel Arduino klon og IR LED. Thundercloud_ir_receiever skal ikke kræve forklaring, selv om du måske vil læse om I2C-basics først.
På den primære thundercloud controller definerer vi forskellige driftstilstande, som f.eks. ON (lyneffekten er ikke aktiveret), CLOUD (lynet er kun aktiveret), ACID (skyen viser trippy farver) eller enkle enkeltfarvefunktioner. For at definere en ny tilstand skal du føje til enummen først, derefter åbne konsollen og finde en fjernbetjeningsknap for at kortlægge den - hver fjerntryk skal udskrive en linje med fejlfinding. I metoden receiveEvent () kortlægger vi disse tastetryk til en tilstand, så tilføj en yderligere omstillingserklæring der. Endelig fører vi i de vigtigste loop () -metode disse modevalg til forskellige displayfunktioner.
Mikrofonudglatningskoden er oprindeligt fra Adafruit - Jeg forenklet det til vores behov og tilføjede en trigger, når der høres en højere end gennemsnitsstøj.
Trin 10: Lynmodus
Lyndisplayerne kombinerer tre forskellige "typer" af lyn for at opnå noget, der er tilstrækkeligt realistisk eller i hvert fald behageligt for øjet. Den første type er crack (), hvor hver LED er kort tændt for mellem 10-100ms. Den anden type ruller () - hvor hver LED har en 10% chance for at aktivere, og hele søjlen gentages 2-10 gange, med en 5-100ms forsinkelse mellem hver cyklus. Den tredje type er tordenbrud (), der vælger to forskellige sektioner af strimlen, hver mellem 10-20 lysdioder, blinker disse sektioner kort fra 3-6 gange. Undersøg disse metoder i detaljer for at se, hvordan individuelle lysdioder aktiveres - HSV farvehjulet bruges hele tiden (så hvid er H = 0, S = 0, V = 255). Jeg vil opfordre dig til at finjustere eller skrive nye lyndisplayer, så del dem i kommentarerne, hvis du laver en du kan lide.
Hver gang lyn udløses eller løkken løber vælger skyen tilfældigt mellem de tre typer lynnedslag. Endelig slukker en reset () -metode alle lysene, ellers vil de "huske" deres tidligere tilstand.
Spørgsmål eller problemer - kontakt venligst kommentarerne, og jeg vil gøre mit bedste for at hjælpe. Hvis du har en Github-konto, er du velkommen til at sende fejl eller problemer til problemerne tracker i stedet. Hvis du har foretaget ændringer eller skrevet nogle nye belysningsfunktioner, kan du dele et link til din kode på Gist eller Pastebin.