Annonse
Noen måneder tilbake, en dollar3000 torden og lyn stemningslampe ble viral i produsentfellesskapet. Det var et fantastisk vakkert lys, men prislappen la den utenfor rekkevidden til noen med deres fornuft intakt. Det vi skal lage i dag er ikke helt det samme - vi lager noe mer praktisk, i stedet for et kunstverk, men det kommer til å bli mye kulere og mer tilpasningsdyktig.
Jeg har valgt å utelate høyttalere under antagelse av at du sannsynligvis allerede har et godt par høyttalere på rommet ditt som du heller vil bruke, og å oppriktig høre en høyttaler i en lampe er litt rart. I stedet vil jeg legge til en mikrofon som lar lynet reagere automatisk på høye lyder - enten fra en faktisk tordenvær, eller et lydspor som spilles fra din PC eller stereo.
Vi kommer også til å bruke en streng med full RGB Neopixel LED (WS2812B), slik at vi kan gjengi andre farger enn hvit og ha kontroll over hver piksel.
Advarsel: strømforsyningen jeg har brukt i dette prosjektet har skrueklemmer som kobles til en strømkabel. Hvis du ikke føler deg trygg på å koble til en plugg, må du forsikre deg om at du kjøper en fullstendig lukket strømforsyning. I det minste må du omslutte PSU-en i en sikker prosjektboks.
Trinn 0: Introduksjon
Her er en demovideo av det ferdige prosjektet. Jeg har implementert noen få forskjellige moduser så langt, fra standard lyn til en trippy acid sky og en farge falming stemning lampe, som kan velges fra fjernkontrollen.
Den fulle koden og bibliotekene som trengs er tilgjengelige for nedlasting fra dette Github-depotet.
Trinn 1: Du trenger

- WS2812B streng, vanligvis priset til omtrent $ 50 for 5 meter. Ikke bekymre deg hvis du har en annen type Neopixel-streng, den er nesten helt sikkert støttet av FastLED grensesnitt, men kablingen din kan være annerledes (du kan kreve en synkroniseringslinje i tillegg til signalet, for eksempel).
- 5V, 10A + strømforsyning - Jeg kjøpte noen 15A enheter for 11 dollar hver. De tar 120-240V vekselstrøm inngang, og produserer en heftig 5V utgang som vil være mer nok til å drive alle våre piksler med full lysstyrke, og Arduino.
- Elektrisk kabling, plugg og inline bryter
- Prosjektinnhegning
- To Arduinoer. $ 10 Funduino-kloner er fine. Den andre er nødvendig for fjernkontroll, mens den første kontrollerer hovedlogikken og lysdiodene.
- To 2,2k (eller derimot) Ohms-motstander - den nøyaktige verdien betyr ikke så mye, rundt 1,5k opptil 47 000 burde fungere.
- Breadboard
- TSOP4838 IR-mottaker
- IR-fjernkontroll - Jeg kjøpte i bulk for omtrent $ 2 hver, men enhver fjernkontroll skal fungere med kodemodifikasjoner.
- Stor mikrofonmodul
- Skrap MDF-treverk for å skjære basen din fra, og en stikksag.
- Polystyren pakningsmateriale / eskeinnsatser.
- Polypropylen bomull pute fylling. Jeg trakk mer enn nok fra noen få forferdelige gamle puter. Hvis det ikke er et alternativ, bør du kunne kjøpe noe nytt for rundt $ 10, eller bruke enda billigere bomullsull. Jeg prøvde med begge deler - bomullsullen trengte mer arbeid for å måtte drille den ut og var ikke så fluffy, men i en klype vil den fungere.
- Kjetting og kroker for å henge skyen - skal holde mer enn 5 kg.
- Limpistol med lav temperaturinnstilling
- Spray lim - lettere å feste fyllingen på skyen din med dette, men en limpistol kan også fungere.
Den totale kostnaden er rundt $ 100, - ikke inkludert verktøy, men det meste av dette skurret jeg rundt i huset. Alle elektronikkomponentene er ofte tilgjengelige; mikrofonen kan finnes i et sensorsett eller kjøpes individuelt.
Trinn 2: Klipp basen

Skjær ut en grov base fra et skrap stykke MDF med et stikksag - den nøyaktige formen er åpenbart opp til deg, men av en eller annen grunn er en sky en nyre-bønne formet i tankene mine. Vi fester noen kroker i dette for å henge, men ellers gir det bare en solid base å bygge videre på. Det sentrale området vil være forbeholdt elektronikk, PSU og til å håndheve kjeden fra, så sørg for at du har nok plass til å plassere minst prosjektkabinettet ditt med noen kroker som omgir den.
Trinn 3: Lag på polystyren

Dette er vanskeligste og mest kreative trinn, men vi skaper egentlig noe solid og ganske-sorta skyformet for å lime LED-stripen på. Lim store deler av isopor som pakkes på basen (og under den), ved å bruke en lav varmeinnstilling på limpistolen din. Hvis du ikke har en lav innstilling, slå av varmepistolen og la den avkjøles litt før du prøver å lime. Hvis temperaturen er for høy, smelter du ganske enkelt gjennom pakningsmaterialet.
Forsikre deg om at hver brikke er solid før du limer den neste, og det er best å feste mer enn ikke nok.
Husk igjen å la et stort nok hulrom inne i skyen til å passe til elektronikk, kjede og kroker.
Trinn 4: Skjær en 3D Cloud Shape

Bruk en utskjæringskniv til å sky opp skyen din ved å avrunde hjørnene og kutte unødvendig materiale bort til du har oppnådd en grov 3D-skyform. Det spiller ingen rolle hvor grovt dette er, siden vi skal dekke alt i stuffing senere - du kan lett skjule feil.
Trinn 5: Fix Hooks, Tidy Up

Til slutt, fest tre eller fire kroker til MDF-basen, fra innsiden av hvert hjørne av hulrommet i skyen. Du må bore et lite pilothull, da MDF er vanskelig å skru rett inn.
Jeg ga også alt et enkelt strøk hvit spraymaling for å sikre en jevn fargebase, men jeg er ikke sikker på at det faktisk var nødvendig.
Trinn 6: Lim LED-strips

Før du begynner å bruke lim på lysdiodene, kan du enten starte fra en ny stripe eller telle hvor mange lysdioder du har totalt - du må finne ut hvor mange du har brukt senere i programmeringstrinnet. Skjær et lite hull på siden av skyen din og stikk gjennom ledningene som utgjør begynnelsen på LED-stripen din i skyhulen. Vær veldig forsiktig med at du begynner fra riktig ende - LED-stripene er retningsfølsomme, så sørg for at signalpilene peker bort fra hulrommet.
Arbeid langsomt, stikk LED-pikslene til polystyrenbunnen i et sirkulært mønster, før du trekker stripen ned til basen for å dekke undersiden. Igjen - du trenger ikke å være perfekt her, for når vi først har diffusert alt og kvalt det med fylling, ser det uansett ganske fantastisk ut.
Jeg brukte totalt 85 lysdioder, eller litt over 2,5 m, etter å ha omkranset hoveddelen to ganger og brukt en enkelt streng lysdioder på undersiden.
Trinn 7: Koblingsskjema

Kablingen er sammensatt, men lett oppdelt i seksjoner.
Først må du få strømtilførselen kablet og sikret, helst i en egen prosjekttaske. Jeg har ikke tenkt å forelese deg om sikkerheten til strømkabler, så jeg vil anta at du kan takle denne delen, og at du har en 5V- og GND-linje fra den.
VIKTIG: Når du programmerer og tester Arduino, skal 5V fra strømforsyningen forbli isolert fra Arduino-en (the GND-er er alle tilkoblet, skjønt) - det skal bare være å slå på LED-stripen, mens Arduino bruker 5V-en som følger med USB. Når du er ferdig med programmeringen, skal USB kobles fra, og vil ikke lenger gi 5V til Arduino - på dette punktet, bør du koble 5V fra forsyningen din til 5V skinnen på venstre side av Breadboard.
Begynn med å koble bakken og 5V-pinnene fra hver Arduino til venstre sideskinner på brødbordet. De vil dele den samme strømkilden, enten det er den eksterne PSU-en vi har eller USB koblet til en av dem.
Neste, fullfør ledningsdelen I2C - dette er det som gjør det mulig for våre to Arduinoer å kommunisere. Ta A4-pinnene fra begge Arduinos på en enkelt rad på brødplaten, og koble deretter en 2,2 k-motstand fra den raden til 5V skinne. Gjenta for A5, koble dem på egen rad, med en annen 2,2 k motstand igjen til 5V.
Koble til IR-mottakeren neste - sjekk pin-konfigurasjonen hvis du har en annen modell, men i utgangspunktet skal signalstiften gå til D11 på en Arduino. Last opp thundercloud_ir_receiver.ino skisse til denne Arduino (all kode her), koble deretter fra USB-en siden vi ikke lenger trenger den.
På den andre Arduino, koble til Data inn signalstift fra starten av din LED-stripe til D6. GND fra LED-ene skal være vanlig med alle Arduinos, men på dette tidspunktet kommer 5V direkte fra PSU.
Plugg også mikrofonmodulen til A0 på denne Arduino. Last opp den andre thundercloud.ino skisse, og hold USB-en koblet til nå mens du feiler. Begynn med å endre NUM_LEDS variabel passende.
Trinn 8: Lim på fyllingen

Som et siste trinn, lim på stuffingen din. Det er ingen spesiell teknikk her - bare spray skyen med et lag med lim og ta en håndfull fylling på. Det er lettere å jobbe med stuffing hvis du allerede har ertet den for å øke overflaten.
Hvis du har brukt den samme fjernkontrollen som jeg gjorde, setter STROBE-knappen den i lydreaktiv skymodus; FLASH er trippy fargemodus, og FADE er den langsomt falmende stemningslyset.
Trinn 9: Forklaring av kode

Hvorfor to arduinoer? Både den infrarøde mottakerprogrammeringen og WS2818B-pikseldriverbiblioteket er veldig følsomme for timing - hvis timingen er forsinket, er IR-signalet ødelagt. Ved å gi hver krets egen mikrokontroller og la dem snakke over I2C-protokollen, kan vi sikre at timingen er perfekt på hver enkelt. Du kan også finne separate IR-moduler med en egen innebygd mikrokontroller, men forskningen min fant at de faktisk koster mer enn en enkel Arduino-klon og IR-LED. Thundercloud_ir_receiever burde ikke kreve forklaring, selv om du kanskje vil lese deg opp på I2C-grunnleggende først.
På hovedkontrollen til tordenscloud definerer vi forskjellige driftsmoduser, for eksempel ON (lyneffektene er ikke lyd aktivert), CLOUD (lynet er bare lydaktivert), ACID (skyen viser trippy farger) eller enkel enkel farge moduser. Hvis du vil definere en ny modus, legger du til i enum først, så åpne konsollen og finn en fjernkontrollknapp for å kartlegge den - hvert fjernpress skal skrive ut en linje med feilsøking. I receiveEvent () metode, kartlegger vi disse tastetrykkene til en modus, så legg til en ekstra brytererklæring der. Til slutt, i hovedtrekk Løkke() metoden vi ruter disse modusvalgene til forskjellige skjermfunksjoner.
Mikrofonens utjevningskode er opprinnelig fra Adafruit - Jeg forenklet det for våre behov, og la til en trigger når det høres en høyere enn gjennomsnittlig støy.
Trinn 10: Lynmodus

Lynskjermene kombinerer tre forskjellige “typer” lyn for å oppnå noe tilstrekkelig realistisk, eller i det minste behagelig for øyet. Den første typen er sprekk(), der hver LED kort er slått på i mellom 10-100ms. Den andre typen er rullende () - der hver LED har en 10% sjanse for å aktivere, og hele sløyfen gjentas 2-10 ganger, med en forsinkelse på 5-100ms mellom hver syklus. Den tredje typen er thunderburst (), som plukker to forskjellige seksjoner av stripen, hver mellom 10-20 lysdioder, blinker disse seksjonene kort fra 3-6 ganger. Undersøk disse metodene i detalj for å se hvordan individuelle lysdioder aktiveres - HSV-fargehjulet brukes overalt (så hvitt er H = 0, S = 0, V = 255). Jeg vil oppfordre deg til å finjustere eller skrive nye lynskjerm, og deretter dele dem i kommentarene hvis du lager en du liker.
Hver gang lynet utløses eller sløyfen kjøres, velger skyen tilfeldig mellom de tre lyntyper. Til slutt, a nullstille() metoden slår av alle lysene, ellers vil de "huske" sin forrige tilstand.
Spørsmål eller problemer - ta kontakt med kommentarene, så gjør jeg mitt beste for å hjelpe. Hvis du har en Github-konto, kan du gjerne legge ut feil eller problemer på gir tracker i stedet. Hvis du har gjort noen endringer eller skrevet noen nye lysfunksjoner, kan du dele en lenke til koden din på GIST eller Pastebin.
James har en BSc i kunstig intelligens, og er CompTIA A + og Network + sertifisert. Han er hovedutvikler av MakeUseOf, og bruker fritiden sin på å spille VR paintball og brettspill. Han har bygd pc-er siden han var liten.