Annons
Några månader tillbaka, en $3000 åska och blixtar humörlampa blev viral i tillverkarsamhället. Det var ett fantastiskt vackert ljus, men prislappen lämnade den utom räckhåll för någon med sin förnuft intakt. Det vi ska göra idag är inte exakt detsamma - vi gör något mer praktiskt istället för ett konstverk, men det kommer att bli mycket coolare och mer anpassningsbara.
Jag har valt att utelämna högtalare under antagandet att du antagligen redan har ett bra par högtalare i ditt rum som du hellre vill använda, och att uppriktigt sagt sätta en högtalare i en lampa är något konstigt. Istället lägger jag till en mikrofon som gör att blixtarna reagerar automatiskt på höga ljud - antingen från ett verkligt åskväder eller ett ljudspår som spelas från din PC eller stereo.
Vi kommer också att använda en sträng med full RGB Neopixel-lysdioder (WS2812B), så att vi kan återge andra färger än vita och ha kontroll över varje pixel.
Varning: strömförsörjningen jag har använt i det här projektet har skruvplintar som ansluts till en strömkabel. Om du inte känner dig säker på att ansluta en kontakt ska du se till att du köper en helt tillsluten strömförsörjning. Åtminstone måste du lägga in PSU i en säker projektruta.
Steg 0: Introduktion
Här är en demovideo av det färdiga projektet. Jag har implementerat några olika lägen hittills, från standard blixt till ett trippy acid moln och en färg blekande humör lampa, som kan väljas från fjärrkontrollen.
Den fullständiga koden och bibliotek som behövs kan laddas ner från detta Github-arkiv.
Steg 1: Du kommer att behöva
- WS2812B tråd, vanligtvis prissatt till cirka 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 dina ledningar kan vara annorlunda (du kan behöva en synkroniseringslinje utöver signalen, för 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 rejäl 5V-utgång som kommer att vara tillräckligt mer för att driva alla våra pixlar med full ljusstyrka och Arduino.
- Elektrisk kabling, kontakt och in-brytare
- Projektkapsling
- Två Arduinos. 10 $ Funduino-kloner är bra. Den andra är nödvändig för fjärrkontroll, medan den första styr huvudlogiken och lysdioderna.
- Två 2.2k (eller däremot) Ohms-motstånd - det exakta värdet spelar ingen roll så mycket, cirka 1,5k upp till 47k borde fungera.
- Bakbord
- TSOP4838 IR-mottagare
- IR-fjärrkontroll - Jag köpte i bulk för cirka $ 2 vardera, men alla fjärrkontroller bör fungera med kodändringar.
- Stor mikrofonmodul
- Skrap MDF-trä för att klippa din bas från, och en pussel.
- Förpackningsmaterial / lådinsatser av polystyren.
- Stoppning av kudde av polypropylenbomull. 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 lite nytt för cirka $ 10 eller använda ännu billigare bomullsull. Jag försökte med båda - bomullsullen behövde mer arbete för att behöva retas ut och var inte så fluffig, men i en nypa kommer det att fungera.
- Kedja och krokar för att hänga molnet - borde 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 exklusive verktyg, men det mesta av det här skruvade jag runt från huset. Alla elektronikkomponenter är vanligtvis tillgängliga; mikrofonen kan hittas i ett sensorsats eller köpas individuellt.
Steg 2: Skär basen
Skär ut en grov bas från ett skrot av MDF med en pussel - den exakta formen är uppenbarligen upp till dig, men av någon anledning är ett moln formad njurböna i mitt sinne. Vi fäster några krokar i detta för att hänga, men annars ger det bara en solid bas att bygga vidare på. Det centrala området kommer att reserveras för elektronik, PSU och för att lämna kedjan från, så se till att du har tillräckligt med utrymme för att placera åtminstone din projektkabin med några krokar som omger den.
Steg 3: Skikt på polystyren
Detta är svårast och kreativt steg, men vi skapar egentligen bara något fast och kinda-sorta molnformad för att lima LED-remsan på. Limma stora bitar av polystyren som packas 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 limma. Om temperaturen är för hög, smälter du helt enkelt genom förpackningsmaterialet.
Se till att varje bit är solid innan du limmar nästa, och det är bäst att hålla sig mer än inte tillräckligt.
Kom också ihåg att lämna ett tillräckligt stort hålrum i molnet för att passa elektronik, kedja och krokar.
Steg 4: Skär en 3D molnform
Använd en ristningskniv för att skjuta upp ditt moln genom att runda av hörnen och skära bort onödigt material tills du har uppnått en grov 3D molnform. Det spelar ingen roll hur grovt det här är eftersom vi kommer att täcka allt i stoppning senare - du kan enkelt dölja misstag.
Steg 5: Fix Hooks, Tidy Up
Fäst slutligen tre eller fyra krokar på MDF-basen, inifrån varje hörn i molnets hålighet. Du måste borra ett litet pilothål eftersom MDF är svårt att skruva rakt in i.
Jag gav också allt ett enkelt lager med vit spraymål för att säkerställa en enhetlig färgbas, men jag är inte säker på att det faktiskt var nödvändigt.
Steg 6: Lima LED-remsor
Innan du börjar applicera lim på lysdioderna bör du antingen börja från en ny remsa eller räkna hur många lysdioder du har totalt - du måste ta reda på hur många du har använt senare i programmeringssteget. Skär ett litet hål i sidan av ditt moln och sticka genom ledningarna som utgör början av din LED-remsa i molnkaviteten. Var mycket försiktig så att du börjar från rätt ände - LED-remsorna är riktningskänsliga, så se till att signalpilarna pekar bort från hålrummet.
Stick långsamt upp LED-pixlarna i polystyrenunderlaget i ett cirkulärt mönster innan du drar remsan ner till basen för att täcka undersidan. Återigen - du behöver inte vara perfekt här, för när vi väl har diffuserat allt och kvävt det med fyllning ser det ändå ganska fantastiskt ut.
Jag använde totalt 85 lysdioder, eller drygt 2,5 m, efter att ha omringat huvudkroppen två gånger och använt en enda sträng lysdioder på undersidan.
Steg 7: Kopplingsschema
Ledningarna är komplexa, men delas lätt upp i sektioner.
Först ska du få strömförsörjningen kopplad och säkrad, helst i ett separat projektfall. Jag tänker inte föreläsa dig om säkerheten för levande AC-kablar, så jag antar att du kan hantera den här delen, och du har en 5V- och GND-linje från den.
VIKTIG: När du programmerar och testar Arduino, bör 5V från din strömförsörjning förbli isolerad från Arduino: s (den GND är dock alla anslutna) - det bör bara driva LED-remsan, medan Arduino använder 5V som levereras över USB. När du är klar med programmeringen bör USB-enheten kopplas bort och kommer inte längre att leverera 5V till Arduino - vid denna punkt bör du ansluta 5V från din leverans till 5V-skenan på vänster sida av bakbord.
Börja med att ansluta marken och 5V-stiften från varje Arduino till spåren på vänster sida. De kommer att dela samma kraftkälla, oavsett om det är den externa PSU som vi har eller USB ansluten till en av dem.
Därefter slutför du I2C-ledningsavsnittet - det är detta som gör att våra två Arduinoer kan kommunicera. Ta A4-stiften från båda Arduinos till en enda rad på brädskivan och anslut sedan ett 2,2 k-motstånd från den raden till 5V-skena. Upprepa för A5, anslut dem på separat rad, med ytterligare 2,2 k 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 skissa till denna Arduino (all kod här), koppla sedan ur USB-enheten eftersom vi inte längre behöver den.
Anslut den andra Arduino Data in signalstift från början av din LED-remsa till D6. GND från dina lysdioder bör vara vanligt med alla Arduinos, men vid denna punkt kommer 5V direkt från PSU.
Även på denna Arduino, anslut mikrofonmodulen till A0. Ladda upp den andra thundercloud.ino skissa och håll USB-enheten ansluten till nu medan du felsöker. Börja med att ändra NUM_LEDS variabel på lämpligt sätt.
Steg 8: Limma på fyllningen
Som ett sista steg, lim på din fyllning. Det finns ingen speciell teknik här - bara spraya molnet med ett lager lim och ta en handfull fylla på. Det är lättare att arbeta med stoppning om du redan har retat det för att öka ytan, dock.
Om du har använt samma fjärrkontroll som jag gjorde, sätter STROBE-knappen den i ljudreaktivt molnläge; FLASH är trippelfärgsläget och FADE är den långsamma blekningsfärgstämningslampan.
Steg 9: Förklaring av kod
Varför två Arduinos? Både den infraröda mottagarens programmering och WS2818B-pixeldrivbiblioteket är mycket känsliga för timing - om tidsinställningen är försenad är IR-signalen skadad. Genom att ge varje krets sin egen mikrokontroller och låta dem prata över I2C-protokollet kan vi se till att timingen är perfekt för varje. Du kan också hitta separata IR-moduler med sin egen inbyggda mikrokontroller, men min forskning fann att de faktiskt kostar mer än en enkel Arduino-klon och IR-LED. Thundercloud_ir_receiever borde inte kräva förklaring, även om du kanske vill läsa om I2C grunderna först.
På den huvudsakliga thundercloud-regulatorn definierar vi olika driftslägen, till exempel ON (blixteffekten är inte ljud aktiverad), CLOUD (blixtet är endast ljudaktiverat), ACID (molnet visar trippy färger) eller enkel enkel färg lägen. För att definiera ett nytt läge, lägg till i enum först öppna sedan upp konsolen och hitta en fjärrkontrollknapp för att kartlägga den - varje fjärrpress bör skriva ut en rad av felsökning. I receiveEvent () metod, vi kartlägger dessa knapptryckningar till ett läge, så lägg till ett extra switch-uttalande där. Slutligen i huvudsak slinga() metod vi dirigerar 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 trigger när ett högre ljudnivå än genomsnittet hörs.
Steg 10: blixtlägen
Blixtskärmarna kombinerar tre olika "typer" av blixtar för att uppnå något tillräckligt realistiskt, eller åtminstone tilltalande för ögat. Den första typen är spricka(), där varje LED är kort tänd i mellan 10-100ms. Den andra typen är rullande() - där varje LED har 10% chans att aktiveras, och hela slingan upprepas 2-10 gånger, med en fördröjning på 5-100 ms mellan varje cykel. Den tredje typen är thunderburst (), som väljer två olika sektioner 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 enskilda lysdioder aktiveras - HSV-färghjulet används hela (så vit är H = 0, S = 0, V = 255). Jag skulle uppmuntra dig att finjustera eller skriva nya blixtnedslag och sedan dela dem i kommentarerna om du gör en du gillar.
Varje gång blixt utlöses eller slingan körs väljer molnet slumpmässigt mellan de tre typerna av blixtar. Slutligen, a återställa() metoden stänger av alla lampor, annars kommer de "komma ihåg" sitt tidigare tillstånd.
Frågor eller problem - kontakta kommentarerna så gör jag mitt bästa för att hjälpa till. Om du har ett Github-konto kan du skicka fel eller problem till frågar tracker istället. Om du har gjort några ändringar eller skrivit några nya belysningsfunktioner, dela en länk till din kod på Sammanfattning eller pastebin.
James har en kandidatexamen i artificiell intelligens och är CompTIA A + och Network + certifierad. Han är ledande utvecklare av MakeUseOf och tillbringar sin fritid med att spela VR-paintball och brädspel. Han har byggt datorer sedan han var liten.