Advertentie
Een paar maanden geleden, een $3000 donder en bliksem sfeerlamp ging viraal in de makersgemeenschap. Het was een verbluffend mooi licht, maar het prijskaartje liet het buiten het bereik van iedereen met intacte gezondheid. Wat we vandaag gaan maken, is niet precies hetzelfde: we maken iets praktischer in plaats van een kunstwerk, maar het wordt een stuk cooler en meer aanpasbaar.
Ik heb ervoor gekozen luidsprekers weg te laten in de veronderstelling dat je waarschijnlijk al een goed paar luidsprekers in je kamer hebt die je liever zou gebruiken, en eerlijk gezegd is het nogal raar om een luidspreker in een lamp te plaatsen. In plaats daarvan voeg ik een microfoon toe waarmee de bliksem automatisch kan reageren op harde geluiden - van een echt onweer, of een soundtrack die wordt afgespeeld vanaf je pc of stereo.
We gaan ook een streng volledig RGB Neopixel-leds (WS2812B) gebruiken, zodat we andere kleuren dan wit kunnen reproduceren en controle hebben over elke pixel.
Waarschuwing: de voeding die ik in dit project heb gebruikt, heeft schroefklemmen die worden aangesloten op een actieve AC-draad. Als u er niet zeker van bent dat u een stekker moet aansluiten, zorg er dan voor dat u een volledig ingesloten voeding koopt. U moet op zijn minst de PSU omsluiten in een beveiligde projectdoos.
Stap 0: Introductie
Hier is een demovideo van het voltooide project. Ik heb tot nu toe een paar verschillende modi geïmplementeerd, van de standaard bliksem tot een trippy acid cloud en een kleurvervagende sfeerlamp, die kan worden gekozen met de afstandsbediening.
De volledige code en de benodigde bibliotheken kunnen worden gedownload vanaf deze Github-opslagplaats.
Stap 1: wat je nodig hebt
- WS2812B-streng, meestal geprijsd op ongeveer $ 50 voor 5 meter. Maak je geen zorgen als je een ander type Neopixel-streng hebt, het wordt vrijwel zeker ondersteund door de FastLED interface, maar uw bedrading kan anders zijn (mogelijk hebt u naast het signaal een sync-lijn nodig voor voorbeeld).
- 5V, 10A + voeding - Ik heb ongeveer 15A-eenheden gekocht voor $ 11 per stuk. Ze nemen 120-240V AC-invoer en produceren een flinke 5V-uitvoer die meer genoeg zal zijn om al onze pixels op volle helderheid en de Arduino van stroom te voorzien.
- Elektrische bekabeling, stekker en inline-schakelaar
- Project behuizing
- Twee Arduinos. $ 10 Funduino-klonen zijn prima. De tweede is nodig voor afstandsbediening, terwijl de eerste de hoofdlogica en LED's bestuurt.
- Twee 2,2k (of daaromheen) Ohm-weerstanden - de exacte waarde maakt niet zoveel uit, ongeveer 1,5k tot 47k zou moeten werken.
- Broodplank
- TSOP4838 IR-ontvanger
- IR-afstandsbediening - ik kocht in bulk voor ongeveer $ 2 per stuk, maar elke afstandsbediening zou moeten werken met codewijzigingen.
- Grote microfoonmodule
- Schroot MDF-hout om je basis van te snijden en een puzzel.
- Polystyreen verpakkingsmateriaal / doosinzetstukken.
- Kussenvulling van polypropyleenkatoen. Ik haalde meer dan genoeg uit een paar vreselijke oude kussens. Als dat geen optie is, zou je voor ongeveer $ 10 wat nieuws moeten kunnen kopen, of zelfs goedkopere watten kunnen gebruiken. Ik heb het met beide geprobeerd - de watten hadden meer werk nodig om het uit te plagen en waren niet zo donzig, maar in een mum van tijd zal het werken.
- Ketting en haken om de wolk op te hangen - moeten meer dan 5 kg dragen.
- Lijmpistool met lage temperatuurinstelling
- Spuitlijm - hiermee kunt u de vulling gemakkelijker op uw wolk plakken, maar een lijmpistool kan ook werken.
De totale kosten zijn ongeveer $ 100 exclusief gereedschap, maar het meeste hiervan heb ik uit het hele huis gegooid. Alle elektronische componenten zijn algemeen verkrijgbaar; de microfoon kan worden gevonden in een sensorkit of afzonderlijk worden gekocht.
Stap 2: Snijd de basis
Knip een ruwe basis uit een stukje MDF met een puzzel - de exacte vorm is natuurlijk aan jou, maar om de een of andere reden is een wolk in mijn hoofd niervormig. We zullen hier enkele haken aan bevestigen om op te hangen, maar verder biedt het gewoon een solide basis om op te bouwen. De centrale ruimte is gereserveerd voor de elektronica, PSU en om de ketting uit te halen, dus zorg ervoor dat je genoeg ruimte hebt om tenminste je projectbehuizing te plaatsen met enkele haken eromheen.
Stap 3: Laag op polystyreen
Dit is de meest moeilijke en creatieve stap, maar we creëren eigenlijk gewoon iets solide en soort van wolkvormig om de ledstrip op te lijmen. Lijm grote stukken polystyreen pakking op de basis (en eronder) met een lage warmte-instelling op uw lijmpistool. Als u geen lage instelling heeft, zet u het warmtepistool uit en laat u het een beetje afkoelen voordat u probeert te lijmen. Als de temperatuur te hoog is, smelt je gewoon door het verpakkingsmateriaal.
Zorg ervoor dat elk stuk stevig is voordat je het volgende verlijmt, en het is het beste om er meer op te plakken dan niet genoeg.
Nogmaals, vergeet niet om een voldoende grote holte in de wolk achter te laten om in de elektronica, ketting en haken te passen.
Stap 4: Carve a 3D Cloud Shape
Gebruik een vleesmes om je wolk te verzachten door de hoeken af te ronden en onnodig materiaal weg te snijden, totdat je een ruwe 3D-wolkvorm hebt bereikt. Het maakt niet echt uit hoe ruw dit is, want we zullen later alles over de vulling behandelen - je kunt gemakkelijk fouten verbergen.
Stap 5: haken repareren, opruimen
Bevestig ten slotte drie of vier haken aan de MDF-basis, vanuit elke hoek van de holte van de wolk. U moet een klein geleidegat boren, omdat MDF moeilijk recht in te schroeven is.
Ik heb ook alles een eenvoudige laag witte spuitverf gegeven om een uniforme kleurbasis te garanderen, maar ik weet niet zeker of het echt nodig was.
Stap 6: Lijm LED-strips
Voordat u lijm op de leds aanbrengt, begint u met een nieuwe strip of telt u hoeveel leds u in totaal heeft - u moet uitrekenen hoeveel u later in de programmeerstap hebt gebruikt. Snijd een klein gaatje in de zijkant van uw wolk en steek door de draden die het begin van uw LED-strip vormen in de wolkenholte. Wees heel voorzichtig dat u begint bij het juiste uiteinde - de LED-strips zijn richtinggevoelig, dus zorg ervoor dat de signaalpijlen van de holte af wijzen.
Werk langzaam en plak de LED-pixels in een cirkelvormig patroon op de polystyreenbasis voordat u de strip naar beneden trekt om de onderkant te bedekken. Nogmaals, je hoeft hier niet perfect te zijn, want als we alles eenmaal hebben verspreid en het met vulling hebben ingesmeerd, ziet het er hoe dan ook nogal verbluffend uit.
Ik gebruikte in totaal 85 LED's, of iets meer dan 2,5 m, nadat ik het hoofdgedeelte twee keer had omcirkeld en een enkele reeks LED's aan de onderkant had gebruikt.
Stap 7: bedradingsschema
De bedrading is complex, maar gemakkelijk op te delen in secties.
Zorg eerst dat de voeding bedraad en beveiligd is, bij voorkeur in een aparte projectkoffer. Ik ga je geen lezing geven over de veiligheid van onder spanning staande AC-draden, dus ik ga ervan uit dat je dit onderdeel aankan, en je hebt er een 5V- en GND-lijn van.
BELANGRIJK: bij het programmeren en testen van de Arduino moet de 5V van uw voeding geïsoleerd blijven van de Arduino’s (de GND's zijn echter allemaal aangesloten) - het zou alleen de LED-strip moeten voeden, terwijl de Arduino de 5V gebruikt die wordt geleverd via USB. Als je klaar bent met programmeren, moet de USB worden losgekoppeld en levert deze geen 5V meer aan de Arduino - op dit punt moet u de 5V van uw voeding aansluiten op de 5V-rail aan de linkerkant van de broodplank.
Begin met het verbinden van de grond en 5V-pinnen van elke Arduino met de linkerzijrails van het breadboard. Ze delen dezelfde stroombron, of dat nu de externe PSU is die we hebben of USB die op een van hen is aangesloten.
Voltooi vervolgens de I2C-bedradingssectie - hierdoor kunnen onze twee Arduino's communiceren. Neem de A4-pinnen van beide Arduinos op een enkele rij op het breadboard en sluit vervolgens een 2,2k-weerstand van die rij aan op een 5V-rail. Herhaal dit voor A5 en verbind ze op een aparte rij, met nog een 2,2k-weerstand opnieuw tot 5V.
Sluit vervolgens de IR-ontvanger aan - controleer de pinconfiguratie als je een ander model hebt, maar in principe zou de signaalpin naar de D11 op één Arduino moeten gaan. Upload de thundercloud_ir_receiver.ino schets naar deze Arduino (alle code hier), koppel dan de USB los omdat we deze niet meer nodig hebben.
Sluit op de andere Arduino de Gegevens binnen signaalpin vanaf het begin van uw ledstrip tot D6. De GND van uw LED's zou bij alle Arduino's hetzelfde moeten zijn, maar op dit punt komt de 5V rechtstreeks van de PSU.
Sluit ook op deze Arduino de microfoonmodule aan op A0. Upload de andere onweerswolk.ino schets, en laat de USB voorlopig aangesloten terwijl u debugt. Begin met het wijzigen van de NUM_LEDS variabel.
Stap 8: lijm op de vulling
Als laatste stap, lijm je vulling op. Er is hier geen specifieke techniek - spuit de wolk gewoon in met een laag lijm en pak een handvol vulling op. Het is gemakkelijker om met vulling te werken als je het al hebt gepest om het oppervlak te vergroten.
Als je dezelfde afstandsbediening hebt gebruikt als ik, zet de STROBE-knop hem in de geluid-reactieve cloud-modus; FLASH is de trippy-kleurmodus en FADE is de langzaam vervagende kleuren-sfeerlamp.
Stap 9: Code-uitleg
Waarom twee Arduino's? Zowel de programmering van de infraroodontvanger als de WS2818B-bibliotheek met pixeldrivers zijn erg gevoelig voor timing - als de timing wordt vertraagd, is het IR-signaal beschadigd. Door elk circuit een eigen microcontroller te geven en ze over het I2C-protocol te laten praten, kunnen we ervoor zorgen dat de timing op elk circuit perfect is. Mogelijk vindt u ook afzonderlijke IR-modules met hun eigen ingebouwde ingebouwde microcontroller, maar uit mijn onderzoek bleek dat deze meer kosten dan een eenvoudige Arduino-kloon en IR-LED. De thundercloud_ir_receiever heeft geen uitleg nodig, hoewel je misschien eerst de basisprincipes van I2C wilt lezen.
Op de belangrijkste onweerswolkcontroller definiëren we verschillende bedrijfsmodi, zoals AAN (de bliksemeffecten zijn niet hoorbaar) geactiveerd), CLOUD (de bliksem is alleen geluid geactiveerd), ACID (de wolk toont trippy kleuren) of eenvoudige enkele kleur modi. Om een nieuwe modus te definiëren, voegt u toe aan de enum open eerst de console en zoek een afstandsbedieningsknop om het toe te wijzen - elke druk op de afstandsbediening moet een regel debuggen afdrukken. In de ontvangenEvent () methode, we koppelen die toetsaanslagen aan een modus, dus voeg daar een extra schakelinstructie toe. Eindelijk in het algemeen lus() methode sturen we die modusselecties naar verschillende displayfuncties.
De afvlakcode van de microfoon is oorspronkelijk van Adafruit - Ik heb het vereenvoudigd voor onze behoeften en een trigger toegevoegd wanneer een luider dan gemiddeld geluid wordt gehoord.
Stap 10: Lightning-modi
De bliksemdisplays combineren drie verschillende "soorten" bliksem om iets realistischs te bereiken, of in ieder geval een lust voor het oog. Het eerste type is barst(), waarbij elke LED kort wordt ingeschakeld gedurende 10-100 ms. Het tweede type is rollend () - waarbij elke LED een kans van 10% heeft om te activeren en de hele lus 2-10 keer wordt herhaald, met een vertraging van 5-100 ms tussen elke cyclus. Het derde type is onweer (), die twee verschillende secties van de strip kiest, elk tussen 10-20 LED's, knippert deze secties kort van 3-6 keer. Bekijk deze methoden in detail om te zien hoe individuele LED's worden geactiveerd - het HSV-kleurenwiel wordt overal gebruikt (dus wit is H = 0, S = 0, V = 255). Ik zou je willen aanmoedigen om nieuwe bliksemschermen aan te passen of te schrijven en deze vervolgens in de reacties te delen als je er een maakt die je leuk vindt.
Elke keer dat bliksem wordt geactiveerd of de lus wordt uitgevoerd, kiest de wolk willekeurig tussen de drie soorten bliksem. Ten slotte een opnieuw instellen () methode schakelt alle lichten uit, anders 'onthouden' ze hun vorige staat.
Vragen of problemen: neem contact op in de opmerkingen en ik zal mijn best doen om te helpen. Als je een Github-account hebt, kun je bugs of problemen posten op de problemen tracker in plaats daarvan. Als je wijzigingen hebt aangebracht of een aantal nieuwe verlichtingsfuncties hebt geschreven, deel dan een link naar je code op Kern of Pastebin.
James heeft een BSc in Artificial Intelligence en is CompTIA A + en Network + gecertificeerd. Hij is de hoofdontwikkelaar van MakeUseOf en brengt zijn vrije tijd door met het spelen van VR paintball en bordspellen. Hij bouwt pc's sinds zijn kindertijd.