Några månader tillbaka gick en $ 3000 åska och blixtlampa viral i tillverkargemenskapen. Det var ett fantastiskt vackert ljus, men prislappen lämnade det utom räckhåll för alla med sin sanity intakt. Vad vi gör idag är inte exakt samma sak - vi gör något mer praktiskt, istället för en konstbit, men det kommer att bli en hel del svalare och mer anpassningsbar.
Jag har valt att släppa ut talare med antagandet att du förmodligen redan har ett bra par högtalare i ditt rum som du hellre skulle använda, och att du verkligen skulle sätta en talare i en lampa är lite konstig. I stället lägger jag till en mikrofon som tillåter blixten att reagera automatiskt till höga ljud - antingen från en verklig åskväder eller ett ljudspår som spelas från din dator eller stereo.
Vi ska också använda en rad full RGB Neopixel-LED (WS2812B), så vi kan reproducera andra färger än vitt och ha kontroll över alla pixlar.
Varning : Strömförsörjningen som jag har använt i detta projekt har skruvplintar som ansluter till en levande AC-kabel. Om du inte känner dig säker på att du ska ansluta en kontakt, se till att du köper en helt sluten nätaggregat. Åtminstone måste du bifoga PSU-enheten i en säker projektlåda.
Steg 0: Inledning
Här är en demonstration av det färdiga projektet. Jag har implementerat några olika lägen hittills, från standardljuset till ett trippy surt moln och en färgfargande humörlampa, som kan väljas från fjärrkontrollen.
Den fullständiga koden och biblioteken som behövs är tillgängliga för nedladdning från det här Github-arkivet.
Steg 1: Du behöver
- WS2812B-strängen, vanligtvis prissatt på ca $ 50 för 5 meter. Oroa dig inte om du har en annan typ av Neopixel-sträng, det stöds nästan säkert av FastLED-gränssnittet, men din ledning kan vara annorlunda (du kan behöva en synkroniserad linje förutom signalen till exempel).
- 5V, 10A + strömförsörjning - Jag köpte några 15A enheter för $ 11 vardera. De tar 120-240V AC-ingång och producerar en kraftig 5V-utgång som kommer att vara tillräckligt för att driva alla våra pixlar vid full ljusstyrka och Arduino.
- Elkablar, plug och inline-omkopplare
- Projekthölje
- Två Arduinos. $ 10 Funduino kloner är bra. Den andra är nödvändig för fjärrkontroll, medan den första kontrollerar huvudlogiken och lysdioderna.
- Två 2.2k (eller däromkring) Ohms motstånd - det exakta värdet spelar ingen roll så mycket, ca 1, 5k upp till 47k ska fungera.
- Bakbord
- TSOP4838 IR-mottagare
- IR-fjärrkontroll - Jag köpte i bulk för ca $ 2 vardera, men fjärrkontrollen skulle fungera med kodändringar.
- Stor mikrofonmodul
- Skrap MDF trä för att skära din bas från, och en pussel.
- Polystyrenförpackningsmaterial / boxinsatser.
- Polypropylen bomullspudding. Jag drog mer än tillräckligt från några hemska gamla kuddar. Om det inte är ett alternativ, bör du kunna köpa några nya för ca $ 10, eller använda ännu billigare bomullsull. Jag försökte med båda - bomullsullen behövde mer arbete med att reta ut det och var inte så fluffigt, men i en nypa, det kommer att fungera.
- Kedja och krokar för att hänga molnet - bör hålla upp mer än 5 kg.
- Limpistol med låg temperaturinställning
- Spraylim - lättare att fästa fyllningen på ditt moln med detta, men en limpistol kan också fungera.
Den totala kostnaden är cirka $ 100, inklusive verktyg, men det mesta av detta skrytte jag från runt huset. Alla elektronikkomponenter är allmänt tillgängliga. Mikrofonen kan hittas i ett sensorsats eller köpas individuellt.
Steg 2: Skär basen
Klipp ut en grov bas från en skrotdel av MDF med en sticksåg - den exakta formen är uppenbarligen upp till dig, men av något skäl är ett moln njurböna i mitt sinne. Vi ska fästa några krokar i detta för att hänga, men annars ger det bara en solid bas att bygga på. Det centrala området kommer att reserveras för elektronik, PSU och för att lämna kedjan, så se till att du har tillräckligt med utrymme för att placera åtminstone din projekthölje med några krokar som omger den.
Steg 3: Skikt på polystyren
Det här är svåraste och kreativa steget, men vi skapar verkligen bara något solidt och snällt-sorta molnformigt för att lima LED-remsan på. Lim stora bitar av polystyrenpackning på basen (och under den), med en låg värmeinställning på limpistolen. Om du inte har en låg inställning, stäng av värmepistolen och låt den svalna lite innan du försöker lima. Om temperaturen är för hög smälter du helt enkelt genom förpackningsmaterialet.
Se till att varje bit är fast före limning av nästa, och det är bäst att hålla fast på det än inte tillräckligt.
Återigen, kom ihåg att lämna ett tillräckligt stort hålrum i molnet för att passa elektroniken, kedjan och krokarna.
Steg 4: Skär en 3D Cloud Shape
Använd en snidkniv för att sneda upp ditt moln genom att avrunda hörnen och skära onödigt material bort tills du har uppnått en grov 3D-form. Det spelar ingen roll hur mycket det här är eftersom vi kommer att täcka allting i fyllning senare - du kan enkelt dölja misstag.
Steg 5: Fixa krokar, städa upp
Slutligen fixa tre eller fyra krokar till MDF-basen, från insidan av varje hörn av molnets hålrum. Du måste borra ett litet pilothål eftersom MDF är svår att skruva in i.
Jag gav också allt en enkel beläggning med vit sprayfärg för att säkerställa en jämn färgbas, men jag är inte säker på att det var nödvändigt.
Steg 6: Lim LED-remsor
Innan du börjar applicera lim på LED-lamporna, antingen starta från en ny remsa eller räkna hur många LED-lampor du har totalt - du måste uträtta hur många du har använt senare i programmeringssteget. Klipp ett litet hål i sidan av ditt moln och peka genom de trådar som utgör början på din LED-remsa i molnhålan. Var försiktig med att du börjar från rätt ände - LED-remsorna är riktningskänsliga, så se till att signalpilen pekar bort från hålrummet.
Arbeta långsamt, klistra LED-bildpunkterna på polystyrenbasen i ett cirkulärt mönster innan du drar ner remsan ner till basen för att täcka undersidan. Återigen - du behöver inte vara perfekt här, för när vi någonsin har spridit allt och krossat det med fyllning ser det allt ganska fantastiskt ut i alla fall.
Jag använde totalt 85 lysdioder, eller drygt 2, 5m, med att ha omringat huvudkroppen två gånger och använde en enda sträng av lysdioder på undersidan.
Steg 7: Ledningsdiagram
Kablarna är komplexa men lätt uppdelade i sektioner.
Först, få strömförsörjningen ansluten och säkrad, helst i ett separat projektfodral. Jag kommer inte att föreläsa dig om säkerheten för levande AC-ledningar, så jag antar att du kan hantera den här delen, och du har en 5V och GND-linje från den.
VIKTIGT : Vid programmering och testning av Arduino borde 5V från strömförsörjningen förbli isolerad från Arduino s (men GNDs är alla anslutna) - den ska bara driva LED-remsan medan Arduino använder 5V som levereras via USB. När du är klar med programmeringen måste USB-enheten kopplas från och inte längre ge 5V till Arduino. Vid den här tiden borde du ansluta 5V från din matning till 5V-skenan på baksidan av brödbrädet.
Börja med att ansluta marken och 5V stiften från varje Arduino till brödskivans vänstra skenor. De kommer att dela samma strömkälla, oavsett om det är den externa PSU vi har eller USB ansluten till en av dem.
Därefter kompletterar I2C-ledningsdelen - det här låter våra två Arduinos kommunicera. Ta A4-stiften från båda Arduinos på en enda rad på brödbrädet, anslut sedan ett 2, 2k-motstånd från den raden till 5V-skenan. Upprepa för A5, koppla dem i separat rad, med ytterligare 2, 2k motstånd igen till 5V.
Anslut IR-mottagaren nästa - kontrollera stiftkonfigurationen om du har en annan modell, men i princip bör signalstiftet gå till D11 på en Arduino. Ladda upp thundercloud_ir_receiver.ino skiss till denna Arduino (all kod här), koppla ur USB sedan vi inte längre behöver det.
På den andra Arduino, anslut Data In- signalstiftet från början av din LED-remsa till D6. GND från dina lysdioder ska vara vanligt med alla Arduinos, men vid denna tidpunkt kommer 5V direkt från PSU.
Också på denna Arduino, anslut mikrofonmodulen till A0. Ladda upp den andra thundercloud.ino- skissen och håll USB-kontakten för tillfället när du debuggar. Börja med att ändra NUM_LEDS- variabeln på lämpligt sätt.
Steg 8: Lim på fyllningen
Som ett sista steg, lim på din fyllning. Det finns ingen speciell teknik här - spruta bara molnet med ett lager lim och ta en handfull fyllning på. Det är lättare att arbeta med fyllning om du redan har retat ut det för att öka ytan.
Om du har använt samma fjärrkontroll som jag gjorde, sätter STROBE-knappen den i ljudreaktivt molnläge; FLASH är det trippy färgläget, och FADE är den långsamma blekande färgens humörlampa.
Steg 9: Kodförklaring
Varför två Arduinos? Både infrarödmottagaren och WS2818B pixeldrivrutinsbiblioteket är mycket känsliga för timing - om tidsfördröjningen är fördröjd är IR-signalen skadad. Genom att ge varje krets en egen mikrocontroller och låta dem prata över I2C-protokollet, kan vi se till att timing är perfekt på var och en. Du kan också hitta separata IR-moduler med egna mikrokontroller inbyggda, men min forskning fann att de faktiskt kostar mer än en enkel Arduino-klon och IR-LED. Thundercloud_ir_receiever ska inte kräva förklaring, men du kanske vill läsa först om I2C-basics först.
På huvudskyddsreglaget definierar vi olika driftlägen, t.ex. ON (blixten aktiveras inte), CLOUD (blixten är endast aktiverad), ACID (molnet visar trippy färger) eller enkla enskilda färglägen. För att definiera ett nytt läge lägger du till enummen först och öppnar sedan konsolen och hittar en fjärrkontrollknapp för att kartlägga den till - varje fjärranslutning ska skriva ut en rad felsökning. I metoden receiveEvent () kartlägger vi dessa tangenttryck till ett läge, så lägg till ett ytterligare omkopplingsdeklaration där. Slutligen, i huvud- loop () -metoden, sträcker vi dessa lägesval till olika visningsfunktioner.
Mikrofonutjämningskoden är ursprungligen från Adafruit - Jag förenklade det för våra behov och lade till en utlösare när det hörs ett högre än genomsnittligt ljud.
Steg 10: Blixtlägen
Blixtskärmen kombinerar tre olika "typer" av blixten för att uppnå någonting som är tillräckligt realistiska, eller åtminstone tilltalande för ögat. Den första typen är spricka (), där varje LED kort är påslagen för mellan 10-100ms. Den andra typen rullar () - där varje LED har 10% chans att aktivera, och hela slingan upprepas 2-10 gånger, med en 5-100ms fördröjning mellan varje cykel. Den tredje typen är thunderburst (), som väljer två olika delar av remsan, var och en mellan 10-20 lysdioder, blinkar dessa sektioner kort från 3-6 gånger. Undersök dessa metoder i detalj för att se hur individuella lysdioder aktiveras - HSV-färghjulet används hela tiden (så vitt är H = 0, S = 0, V = 255). Jag skulle uppmuntra dig att tweak eller skriva nya blixtskärmar, sedan dela dem i kommentarerna om du gör en du gillar.
Varje gång blixten utlöses eller slingan körs, väljer molnet slumpmässigt mellan de tre typerna av blixtnedslag. Slutligen slår en återställning () -metod av alla lampor, annars kommer de att "komma ihåg" deras tidigare tillstånd.
Frågor eller problem - snälla ta kontakt i kommentarerna och jag gör mitt bästa för att hjälpa till. Om du har ett Github-konto kan du skicka in fel eller problem till frågeställaren i stället. Om du har gjort några ändringar eller skrivit några nya belysningsfunktioner, vänligen dela en länk till din kod på Gist eller Pastebin.