Indholdsfortegnelse:

Interaktivt omgivende lys: 8 trin
Interaktivt omgivende lys: 8 trin

Video: Interaktivt omgivende lys: 8 trin

Video: Interaktivt omgivende lys: 8 trin
Video: Моя работа наблюдать за лесом и здесь происходит что-то странное 2024, November
Anonim
Interaktivt omgivende lys
Interaktivt omgivende lys
Interaktivt omgivende lys
Interaktivt omgivende lys
Interaktivt omgivende lys
Interaktivt omgivende lys

Dette er min første instruerbare! Vær venlig at holde ud med mig, mens jeg kæmper for at skrive ordentligt engelsk. Ret mig gerne! Jeg startede dette projekt lige efter konkurrencen 'Lad det lyse' startede. Jeg ville ønske, at jeg havde lavet meget mere og færdiggjort det, jeg ville lave. Men mellem skole og arbejde har jeg ikke haft så meget tid tilbage, som jeg ville. Ikke desto mindre efterlader jeg her en rapport om mine eksperimenter som en instruerbar, så alle kan prøve at lave det, jeg gjorde. Denne instruktive er ikke beregnet til at tjene som en vejledning og lære, hvordan man laver denne kontrast. Det er ikke en vejledning for begyndere inden for elektronik. Det er mere som at dele en idé og et mål, som jeg ønsker at forfølge. Hvis du er nybegynder/fuldstændig uvidende inden for elektronik og ønsker at lave sådan noget, beklager jeg! Men vi kan prøve altid at hjælpe dig. Se det sidste trin. Vi har allerede set mange projekter med omgivende lys. De fleste af dem bruger RGB -lysdioder: - At belyse et værelse med en farve, indstille en atmosfære, der matcher dit humør - At skabe lyseffekter fra farven på tv/skærm eller fra lyd. Der er endda nogle få i instructables.com Relateret: DIY Ambient Light Systems Light Bar Ambient Lighting Bygning af dine egne omgivende farvebelysningsstænger Ved hjælp af denne konkurrence som en undskyldning startede jeg et projekt, der har været i tankerne et stykke tid. Jeg har altid ønsket at lave noget, der ligner disse omgivende lys og fylde væggene i mit værelse med RGB -lysdioder. Men at tage det et skridt videre og gøre dem alle sammen kontrollerbare. Dette projekt vil forhåbentlig resultere i et open-source elektronik-kit til hobbyfolk og elektroniske tinkerere, der tillader hardware/software hacking og sensorisk integration. Her er et lille eksempel på, hvad jeg lavede:

Trin 1: Udforsk ideen

Jeg vil være i stand til at fylde væggene i mit værelse med RGB LED'er, der styrer farve og lysstyrke for hver LED. Jeg kommer til at bruge en mikrokontroller til brugervenligheden og fleksibiliteten. Desværre kan jeg ikke styre hundredvis af lysdioder med de få stifter, der er tilgængelige på mikrokontroller. Det ville endda være svært at kode styringen af så mange lysdioder. Så jeg besluttede, at jeg skulle dele alle lysdioderne i flere mindre søjler, og for hver bar kunne jeg bruge en mikrokontroller. Så ville jeg bruge mikrocontrollers kommunikationsmuligheder til at dele oplysninger mellem dem. Denne information kan være farve og lysstyrke på lysdioder, mønstre/sekvenser af farver og sensorisk information. For hver bar besluttede jeg at bruge 16 RGB -lysdioder. Dette resulterer i en hverken for stor eller lille bar. På denne måde bruger jeg et acceptabelt antal ressourcer for hver LED, hvilket reducerer omkostningerne for hver bar. Ikke desto mindre er 16 RGB LED'er 48 LED'er (3*16 = 48), som mikrokontrolleren kan styre. Med omkostninger for øje besluttede jeg mig for at bruge den billigste mikrokontroller jeg kunne bruge. Dette betyder, at mikrokontrolleren kun vil have op til 20 I/O -ben, ikke nok til 48 lysdioder. Jeg ønsker ikke at bruge charlieplexing eller en form for tidsopdeling, da målet med projektet er at belyse et rum. alternativ, jeg kunne tænke mig, er at bruge en slags låst skiftregister! Genoptager:- Lav og interaktivt omgivende lys- Lav en standardlinje med kontrollerbare lysdioder- Mulighed for at forbinde flere søjler for at fylde et rum- Tillad brugertilpasning/konfiguration og sensorisk integration

Trin 2: Hardware

Hardware
Hardware
Hardware
Hardware

Som sagt i det foregående trin, ønsker jeg at lave flere af søjler til at belyse et rum. Dette tænker på omkostningsspørgsmålet. Jeg vil prøve at gøre hver bar den mest omkostningseffektive måde muligt. Den mikrokontroller, jeg brugte, var en AVR ATtiny2313. Disse er ret billige, og jeg havde et par liggende. ATtiny2313 har også en Universal Serial Interface og en USART -grænseflade, der vil blive brugt i de følgende trin. Jeg havde også tre MCP23016 - I2C 16bit I/O port ekspander liggende, lige den rigtige tæller! Jeg brugte hver portudvidelse til at styre en farve på de 16 lysdioder. Lysdioderne … Desværre var de billigste jeg kunne finde. De er 48 røde, grønne og blå ~ 10000mcd 5mm med 20 graders vinkel. Dette burde ikke have betydning for nu, da dette kun er en prototype. På trods af dette er resultatet ganske flot! Jeg kører mikrokontrolleren ved 8 MHz. I2C -bussen er klokket til 400 kHz. LED -switchfrekvensen er omkring 400 Hz. På denne måde, hvis jeg er i stand til at køre 48 lysdioder uden at skubbe det til det yderste, får jeg plads til flere senere!

Trin 3: Montering

montage
montage
montage
montage
montage
montage
montage
montage

Efter at have designet kredsløbet, byggede jeg det i flere brødbrætter til prototypeformål. Efter flere timers skæring af ledninger og samling af kredsløbet fik jeg dette resultat: Et kæmpe brødbræt med 48 lysdioder og tonsvis af ledning!

Trin 4: Kontrol?

Styring?
Styring?

Dette er den mest udfordrende del af projektet. Jeg ville lave en kontrolalgoritme generisk nok til at håndtere mønstre/sekvenser og også kontrollere lysstyrken og farven på hver LED. For at styre LED'erne skal jeg sende til MCP23016 en ramme på 4bytes (1 byte = 8 bits). En byte med adressen på IC -korrespondenten til farven, 1 byte med kommandoen "skriv" og 2 bytes med værdien af 16bits (LED'er). IC'en er forbundet til lysdioderne som "synke", hvilket betyder, at en logisk værdi 0 ved stiften vil tænde LED'en. Og nu den udfordrende del, hvordan man laver PWM -kontrol til 48 LED'er? Lad os studere PWM for en LED! PWM forklarede @ Wikipedia. Hvis jeg vil have lysstyrken på LED'en til 50%, er min PWM -værdi 50%. Det betyder, at LED'en inden for en periode skal være på samme tid som slukket. Lad os tage en periode på 1 sekund. PWM på 50% betyder, at tændtiden i dette 1 sekund er 0,5 sekunder og slukketiden er 0,5 sekunder. PWM på 80%? 0,2 sekunder fra, 0,8 sekunder tændt! I den digitale verden: Med en periode på 10 urcyklusser betyder 50%, at LED'en er tændt i 5 cykler, og for yderligere 5 cykler er LED'en slukket. 20%? 2 cykler tændt, 8 cyklusser slukket. 45%? Nå, vi kan ikke rigtig få 45%… Da perioden er i cyklusser, og vi kun har 10 cyklusser, kan vi kun opdele PWM i trin fra 10%. Det betyder, at nålens udvikling skal være for 50%: 1, 1, 1, 1, 1, 0, 0, 0, 0, 0; Eller endda 1, 0, 1, 0, 1, 0, 1, 0, 1, 0; I programmeringen kan vi lave denne sekvens med at tænde og slukke et array. For hver cyklus sender vi til nålen værdien af indekset, som cyklussen er. Gav jeg mening indtil videre? Hvis vi vil lave LED0 50%og LED1 20%, kan vi tilføje begge arrays. For at køre LED0 pin: 1, 1, 1, 1, 1, 0, 0, 0, 0, 0; Til kørsel af LED1 pin: 2, 2, 0, 0, 0, 0, 0, 0, 0, 0; resulterer i LED0 +LED0: 3, 3, 1, 1, 1, 0, 0, 0, 0, 0; Ved at udsende denne sekvens af tal i port -ekspander IC, ville vi få LED0 med 50% lysstyrke og LED1 med 20% !! Simpelt til 2 lysdioder, ikke? Nu skal vi lave dette til 16 lysdioder, for hver farve! For hver af disse arrays har vi en kombination af lysstyrke for hver farve (16 lysdioder) Hver gang vi ønsker en anden kombination af farver, skal vi ændre dette array.

Trin 5: Gør det let

Gør det let!
Gør det let!
Gør det let!
Gør det let!

Det foregående trin er for meget arbejde til at lave en simpel sekvens … Så jeg besluttede at lave et program, hvor vi fortæller farverne på hver LED i et trin i sekvensen, og vi får trinets tre arrays. Jeg lavede dette program i LabView på grund af tidsbegrænsninger.

Trin 6: Første eksperimenter

Første eksperimenter
Første eksperimenter

Indlæser flere trin i mikrokontrolleren, og vi får noget lignende: Beklager den dårlige kvalitet af videoerne! Jeg definerede det maksimale antal trin i en sekvens til 8 og begrænsede PWM til 20% spring. Denne beslutning er baseret på den slags kontrol, jeg bruger, og hvor meget EEPROM ATtiny2313 har. I disse forsøg forsøgte jeg at se, hvilken slags effekter jeg kunne lave. Jeg må sige, at jeg er tilfreds med resultatet!

Trin 7: Kontrol i realtid

Kontrol i realtid
Kontrol i realtid
Kontrol i realtid
Kontrol i realtid
Kontrol i realtid
Kontrol i realtid

Som nævnt i tidligere trin, ønsker jeg at kommunikere med alle mikrokontrollerne, der styrer lysdioderne i mit værelse. Så jeg brugte den tilgængelige USART -grænseflade i ATtiny2313 og sluttede den til min computer. Jeg lavede også et program i LabView til at styre LED -bjælken. I dette program kan jeg fortælle mikrokontrolleren, hvor lang sekvensen er, farven på hver LED og tiden mellem trin i en sekvens. I den næste video vil jeg demonstrere, hvordan jeg kan ændre farven på lysdioder og definere sekvenser.

Trin 8: Konklusioner

Konklusioner
Konklusioner
Konklusioner
Konklusioner
Konklusioner
Konklusioner
Konklusioner
Konklusioner

Jeg tror, jeg havde succes med denne første tilgang til mit projekt. Jeg er i stand til at styre 16 RGB -lysdioder med få ressourcer og begrænsninger. Det er muligt at styre hver LED separat, hvilket skaber en ønsket sekvens.

Fremtidens arbejde:

Hvis jeg modtager positiv feedback fra folk, kan jeg videreudvikle denne idé og lave et komplet DIY Electronics Kit med printkort og samlevejledning.

Til min næste version vil jeg: -Skift mikrokontrolleren til en med ADC -Skift MCP23016 for en anden form for seriel ind paralleludgang, der kan synke mere strøm fra LED'er -Gør open -source software til at kommunikere med mikrokontrolleren og styre lysdioderne -Udvikl kommunikationen mellem flere mikrokontrollere.

Har du et forslag eller spørgsmål? Eller efterlad en kommentar!

Finalist i Let It Glow!

Anbefalede: