Cum de a construi o lampă cloud cu sunet reactiv Lightning
Câteva luni în urmă, o lampă de 3000 de tunuri și fulgere de lumină a devenit virală în comunitatea producătorilor. A fost o lumină uimitoare de frumoasă, dar prețul a lăsat-o la îndemâna oricui, cu sănătatea lor intactă. Ceea ce vom face astăzi nu este exact același lucru - facem ceva mai practic, în loc de o piesă de artă, dar va fi mult mai rece și mai personalizabil.
Am ales să omiteți vorbitorii presupunând că probabil aveți deja o pereche bună de difuzoare în camera dvs. pe care ați prefera să o utilizați și că a pune un vorbitor într-o lampă sincer este cam ciudat. În schimb, voi adăuga un microfon care va permite fulgerului să reacționeze automat la zgomote puternice - fie dintr-o furtună reală, fie dintr-o coloană sonoră redată de pe PC sau stereo.
De asemenea, vom folosi o serie de LEDuri Neopixel RGB (WS2812B), astfel încât să putem reproduce alte culori decât albul și să avem control asupra fiecărui pixel.
Avertizare: sursa de alimentare folosită în acest proiect are terminale cu șurub care se conectează la un fir de curent alternativ. Dacă nu vă simțiți în siguranță cu cablul, asigurați-vă că ați cumpărat o sursă de alimentare complet închisă. Cel puțin, va trebui să închideți unitatea de alimentare într-o cutie sigură de proiect.
Pasul 0: Introducere
Iată un videoclip demo al proiectului finalizat. Am implementat câteva moduri diferite până în prezent, de la fulgerul standard la un nor triplu acid și o lampă de culoare care se estompează de culoare, care poate fi aleasă de la telecomandă.
Codul complet și bibliotecile necesare sunt disponibile pentru descărcare din acest depozit Github.
Pasul 1: veți avea nevoie
- WS2812B, prețul de obicei la aproximativ 50 de dolari pentru 5 metri. Nu vă faceți griji dacă aveți un alt tip de fir Neopixel, este aproape sigur că este suportat de interfața FastLED, dar cablarea dvs. poate fi diferită (de exemplu, puteți avea nevoie de o linie de sincronizare în plus față de semnal).
- 5V, 10A + sursa de alimentare - am cumparat cateva unitati de 15A pentru 11 dolari fiecare. Acestea au o intrare de 120-240V AC și produc o ieșire de 5V, care va fi suficientă pentru a alimenta toți pixelii la luminozitate completă, iar Arduino.
- Cabluri electrice, conectori și comutatoare inline
- Proiectul de închidere
- Două Arduino. $ 10 Clonele Funduino sunt bune. Al doilea este necesar pentru controlul la distanță, în timp ce primul controlează principala logică și LED-uri.
- Două rezistențe rezistente la ohm (sau în jurul lor) - valoarea exactă nu contează atât de mult, în jur de 1,5k până la 47k ar trebui să funcționeze.
- breadboard
- Receptorul IR TSOP4838
- IR remote - am cumpărat în vrac pentru aproximativ 2 dolari fiecare, dar orice telecomandă ar trebui să funcționeze cu modificări de cod.
- Modul microfon mare
- Decupați din lemn MDF pentru a tăia baza dvs. și un jigsaw.
- Materiale de ambalare din polistiren / cutii de carton.
- Polipropilenă de umplutură din pernă de bumbac. Am tras mai mult decât suficient din câteva perne oribile vechi. Dacă aceasta nu este o opțiune, ar trebui să puteți cumpăra unele noi pentru aproximativ 10 dolari, sau să utilizați și vată de bumbac mai ieftină. Am încercat cu ambele - vata de bumbac avea nevoie de mai multă muncă în a fi nevoită să-l tachineze și nu era la fel de pufos, dar într-o mâncare, va funcționa.
- Lanț și cârlige pentru a atârna nor - ar trebui să dețină mai mult de 5 kg.
- Pistol de lipire cu setare de temperatură scăzută
- Spray lipici - mai ușor de a lipi umplutură pe nor cu acest lucru, dar un pistol lipici ar putea de asemenea, de lucru.
Costul total este de aproximativ 100 $, fără instrumentele, dar mai mult de asta am scroungat din jurul casei. Toate componentele electronice sunt disponibile în mod obișnuit; microfonul poate fi găsit într-un set de senzori sau cumpărat individual.
Pasul 2: Tăiați baza
Tăiați o bază dură dintr-o bucată de fier de MDF cu un jigsaw - forma exactă este în mod evident pe cont propriu, dar dintr-un anumit motiv un nor este în formă de fasole în mintea mea. Vom atașa niște cârlige în acest lucru pentru agățare, dar în caz contrar oferă doar o bază solidă pe care să o construim. Zona centrală va fi rezervată pentru electronice, unități de alimentare și pentru a le da lanțului, pentru a vă asigura că aveți suficient spațiu pentru a plasa cel puțin proiectul dvs. cu câteva cârlige care îl înconjoară.
Pasul 3: Strat pe polistiren
Acesta este pasul cel mai dificil și creativ, dar noi chiar creăm ceva solid și cam-sorta în formă de nor pentru lipirea benzii LED. Lipiți bucăți mari de ambalaje de polistiren pe baza (și sub ea), folosind o temperatură scăzută pe pistolul dvs. de lipire. Dacă nu aveți o setare scăzută, opriți arma de căldură și lăsați-o să se răcească puțin înainte de a încerca să lipiți. Dacă temperatura este prea mare, pur și simplu se va topi prin materialul de ambalare.
Asigurați-vă că fiecare piesă este solidă înainte de a lipi următoarea și este mai bine să rămânem mai mult decât nu este suficient.
Din nou, nu uitați să lăsați o cavitate suficient de mare în interiorul nor pentru a se potrivi electronice, lanț și cârlige.
Pasul 4: Creați o formă cloud 3D
Utilizați un cuțit de sculptat pentru a vă îngriji norul prin rotunjirea colțurilor și tăierea materialelor inutile, până când veți obține o formă clară de nori 3D. Nu contează cât de gravă este acest lucru, deoarece vom acoperi totul în umplutură mai târziu - puteți ușor să ascundeți greșeli.
Pasul 5: Fixați cârligele, ordonați
În cele din urmă, fixați trei sau patru cârlige la baza MDF, din interiorul fiecărui colț al cavității norului. Va trebui să găuriți o mică gaură pilot, deoarece este greu de înșurubat MDF.
Am dat, de asemenea, totul un strat simplu de vopsea alb spray pentru a asigura o bază de culoare uniformă, dar nu sunt sigur că a fost de fapt necesar.
Pasul 6: Adezivi Benzi LED
Înainte de a începe să aplicați lipici LED-urilor, fie începeți de la o nouă bandă, fie numărați câte LED-uri aveți în total - va trebui să aflați cât de mulți ați folosit mai târziu în faza de programare. Tăiați o mică gaură în partea din jurul norului și trageți prin firele care alcătuiesc începutul benzii dvs. LED în cavitatea norului. Fiți foarte atent că începeți de la sfârșitul corect - benzile cu LED-uri sunt sensibile la direcție, deci asigurați-vă că săgețile de semnal se află în afara cavității.
Lucrând încet, lipiți pixelii LED pe baza de polistiren într-un model circular, înainte de a trage banda până la bază pentru a acoperi partea inferioară. Din nou - nu trebuie să fii perfect aici, pentru că odată ce am difuzat totul și am umflat-o cu umplutură, totul pare mai degrabă uimitor oricum.
Am folosit un total de 85 de LED-uri, sau puțin peste 2,5 m, care au înconjurat corpul principal de două ori și au folosit un singur șir de LED-uri pe partea inferioară.
Pasul 7: Diagrama conexiunii
Cablajul este complex, dar este ușor de împărțit în secțiuni.
Mai întâi, asigurați-vă că sursa de alimentare este conectată și asigurată, de preferință într-un caz de proiect separat. Nu te voi preda în privința siguranței cablurilor de curent alternativ, așa că am să presupun că te descurci cu această parte și ai o linie de 5V și GND de la ea.
IMPORTANT: atunci când programați și testați arduino, 5V de la sursa de alimentare ar trebui să rămână izolat de la Arduino (toate GND-urile sunt toate conectate, totuși) - ar trebui să fie doar alimentarea benzii LED, în timp ce Arduino utilizează 5V furnizat prin USB. Când ați terminat programarea, USB-ul ar trebui să fie deconectat și nu va mai furniza 5V pentru Arduino - în acest moment, ar trebui să conectați 5V de la alimentarea dvs. la șina 5V din partea stângă a panoului.
Începeți prin conectarea pământului și a pinilor de 5V de la fiecare Arduino la șinele laterale din stânga. Aceștia vor împărți aceeași sursă de alimentare, fie că este vorba de alimentatorul extern pe care îl avem sau de USB conectat la unul dintre ele.
Apoi, completați secțiunea de cablare I2C - aceasta este ceea ce permite celor doi Arduinos să comunice. Luați acele litere A4 de pe ambele arduine pe un singur rând pe panoul de pâine, apoi conectați o rezistență de 2,2k de la acel rând la șină 5V. Repetați pentru A5, conectându-le pe un rând separat, cu un alt rezistor de 2,2k din nou la 5V.
Conectați următorul receptor IR - verificați configurația pinului dacă aveți un alt model, dar în principiu pinul de semnal ar trebui să meargă la D11 pe un Arduino. Încărcați thundercloud_ir_receiver.ino schițează acest Arduino (codul este aici), apoi deconectați USB-ul de când nu mai avem nevoie de el.
Pe cealaltă Arduino, conectați Date în semnal de semnalizare de la începutul benzii dvs. LED la D6. GND de la LED-urile dvs. ar trebui să fie comune cu toate Arduinos, dar în acest moment 5V va veni direct de la PSU.
De asemenea, pe acest Arduino, conectați modulul de microfon în A0. Încărcați cealaltă thundercloud.ino schiță și păstrați USB-ul conectat pentru moment în timp ce depanați. Începeți prin a schimba NUM_LEDS variabilă în mod corespunzător.
Pasul 8: Adezivul de umplere
Ca ultim pas, lipiți-vă de umplutura. Nu există nicio tehnică particulară aici - pulverizați norul cu un strat de clei și luați o mână de umplutură. Este mai ușor să lucrezi cu umplutura dacă totuși te-ai tachinat pentru a mări suprafața.
Dacă ați utilizat aceeași telecomandă ca și mine, butonul STROBE îl pune în modul nor de reacție sonor; FLASH este modul de culoare trippy, iar FADE este lampa de culoare care se estompează încet.
Pasul 9: Explicarea codului
De ce doi Arduinos? Programarea receptorului în infraroșu și biblioteca driverului de pixeli WS2818B sunt foarte sensibile la sincronizare - dacă temporizarea este întârziată, semnalul IR este corupt. Prin acordarea fiecărui circuit microcontrolerului propriu și lăsându-i să vorbească asupra protocolului I2C, putem asigura că timpul este perfect pentru fiecare. De asemenea, puteți găsi module separate IR cu propriul microcontroler încorporat, dar cercetarea mea a constatat că acestea costă de fapt mai mult decât o simplă clonă Arduino și IR LED. Thundercloud_ir_receiever nu ar trebui să necesite explicații, deși poate doriți să citiți mai întâi elementele de bază ale I2C.
Pe controlerul principal de furtună, definim diferite moduri de funcționare, cum ar fi ON (efectele fulgerului nu sunt activate sunetul), CLOUD (lumina este activată numai de sunet), ACID (norul prezintă culori triptice) sau moduri simple de culoare unică. Pentru a defini un nou mod, adăugați la enum în primul rând, deschideți consola și găsiți un buton de control de la distanță pentru al cartografia la - fiecare presare la distanță ar trebui să tipărească o linie de depanare. În receiveEvent () metodă, am maparea acelor apăsări de taste într-un mod, deci adăugați o declarație de comutare suplimentară acolo. În cele din urmă, în principiu buclă() metoda le direcționează aceste selecții de mod la diferite funcții de afișare.
Codul de netezire a microfonului este inițial de la Adafruit - am simplificat-o pentru nevoile noastre și am adăugat un declanșator atunci când se aude un zgomot mai puternic decât media.
Pasul 10: Modele de fulgere
Afișajele de trăsnet combină trei tipuri diferite “tipuri” de fulger pentru a obține ceva suficient de realist sau cel puțin plăcut ochiului. Primul tip este sparge(), unde fiecare LED este activat pentru scurt timp între 10-100ms. Al doilea tip este rulare() - unde fiecare LED are o șansă de activare de 10%, iar întreaga buclă este repetată de 2-10 ori, cu o întârziere de 5-100ms între fiecare ciclu. Al treilea tip este thunderburst (), care sortează două secțiuni diferite ale benzii, fiecare dintre 10-20 de LED-uri, clipește aceste secțiuni pe scurt de 3-6 ori. Examinați aceste metode în detaliu pentru a vedea cum sunt activate LED-urile individuale - roata de culoare HSV este utilizată în întregime (atât de albă este H = 0, S = 0, V = 255). Vă încurajez să modificați sau să scrieți noi afișări de trăsnet, apoi să le împărțiți în comentarii dacă le faceți.
De fiecare dată când se declanșează trăznet sau se execută buclă, norul alege aleatoriu între cele trei tipuri de fulgere. În cele din urmă, a reset () metoda dezactivează toate luminile, în caz contrar “tine minte” starea lor anterioară.
Întrebări sau probleme - contactați-vă în comentarii și voi face tot posibilul pentru a vă ajuta. Dacă aveți un cont Github, nu ezitați să postați în schimb bug-uri sau probleme la trackerul de probleme. Dacă ați făcut modificări sau ați scris câteva funcții de iluminare noi, vă rugăm să trimiteți un link la codul dvs. pe Gist sau Pastebin.
Explorați mai multe despre: Arduino, Smart Lighting.