Turinys:

Interaktyvi aplinkos šviesa: 8 žingsniai
Interaktyvi aplinkos šviesa: 8 žingsniai

Video: Interaktyvi aplinkos šviesa: 8 žingsniai

Video: Interaktyvi aplinkos šviesa: 8 žingsniai
Video: Python vėžliuko grafika - įvadas 2024, Lapkritis
Anonim
Interaktyvi aplinkos šviesa
Interaktyvi aplinkos šviesa
Interaktyvi aplinkos šviesa
Interaktyvi aplinkos šviesa
Interaktyvi aplinkos šviesa
Interaktyvi aplinkos šviesa

Tai mano pirmasis pamokymas! Prašau pakęsti mane, kol man sunku rašyti tinkamą anglų kalbą. Nesivaržykite mane pataisyti! Šį projektą pradėjau iškart po to, kai prasidėjo konkursas „Tegul švyti“. Norėčiau, kad būčiau padaręs daug daugiau ir baigęs tai, ką norėjau padaryti. Tačiau tarp mokyklos ir darbo neturėjau tiek laiko, kiek norėjau. Nepaisant to, čia palieku savo eksperimentų ataskaitą kaip pamokomą, kad kiekvienas galėtų pabandyti padaryti tai, ką padariau. Šis nurodymas nėra skirtas vadovui ir mokyti, kaip padaryti šį prietaisą. Tai nėra vadovas pradedantiesiems elektronikos srityje. Tai labiau panašu į pasidalijimą viena idėja ir tikslu, kurio noriu siekti. Jei esate pradedantysis/visiškai neišmanantis elektronikos ir norite padaryti kažką panašaus, atsiprašau! Bet mes visada galime jums padėti. Žr. Paskutinį žingsnį. Mes jau matėme daug aplinkos šviesos projektų. Dauguma jų naudoja RGB šviesos diodus: - norėdami apšviesti kambarį viena spalva, nustatydami nuotaiką atitinkančią atmosferą; - sukurti šviesos efektus iš televizoriaus/monitoriaus spalvos arba garso. Instrukcijose yra net keletas. Susiję: „Pasidaryk pats“aplinkos apšvietimo sistemos Šviesos juostos aplinkos apšvietimasSavo aplinkos spalvų apšvietimo juostų kūrimas Naudodamasis šiuo konkursu kaip pasiteisinimu, pradėjau projektą, kuris kurį laiką buvo mano galvoje. Aš visada norėjau padaryti kažką panašaus į šias aplinkos lemputes ir užpildyti savo kambario sienas RGB šviesos diodais. Tačiau žengdami dar vieną žingsnį, visi ir kiekvienas iš jų tampa kontroliuojami. Tikimasi, kad šio projekto rezultatas bus atviro kodo elektronikos rinkinys, skirtas mėgėjams ir elektronikos meistrams, leidžiantis įsilaužti į aparatinę/programinę įrangą ir integruoti jutimus. Čia yra nedidelė peržiūra, ką aš padariau:

1 žingsnis: tyrinėkite idėją

Noriu, kad mano kambario sienas būtų galima užpildyti RGB šviesos diodais, valdančiais kiekvieno šviesos diodo spalvą ir ryškumą. Kad būtų lengviau naudotis ir būtų lankstus, ketinu naudoti mikrovaldiklį. Deja, aš negaliu valdyti šimtų šviesos diodų su keliais mikrovaldiklių kaiščiais. Netgi būtų sunku koduoti tiek daug šviesos diodų valdymo. Taigi nusprendžiau, kad turėčiau padalinti visus šviesos diodus į keletą mažesnių juostų ir kiekvienai juostai galėčiau naudoti mikrovaldiklį. Tada naudočiausi mikrovaldiklių bendravimo galimybėmis, kad galėčiau dalintis informacija tarp jų. Ši informacija gali būti šviesos diodų spalva ir ryškumas, spalvų modeliai/sekos ir jutiminė informacija. Kiekvienai juostai nusprendžiau naudoti 16 RGB šviesos diodų. Taip gaunamas nei per didelis, nei mažas baras. Tokiu būdu aš naudoju priimtiną išteklių skaičių kiekvienam šviesos diodui, sumažindamas kiekvienos juostos išlaidas. Nepaisant to, 16 RGB šviesos diodų yra 48 šviesos diodai (3*16 = 48), kuriuos gali valdyti mikrovaldiklis. Turėdamas omenyje išlaidas, nusprendžiau naudoti pigiausias mikrovaldiklis, kurį galėčiau naudoti. Tai reiškia, kad mikrovaldiklyje bus tik iki 20 įvesties/išvesties kaiščių, kurių nepakanka 48 šviesos diodams. Nenoriu naudoti „charlieplexing“ar tam tikro laiko skaidymo įrenginio, nes projekto tikslas yra apšviesti kambarį. alternatyva, kurią galėčiau pagalvoti, yra tam tikro fiksuoto poslinkio registro naudojimas! Tęsiamas:- Sukurkite ir interaktyvią aplinkos šviesą- Sukurkite standartinę valdomų šviesos diodų juostą- Galimybė prijungti kelias juostas užpildyti kambarį- Leisti vartotojui prisitaikyti/konfigūruoti ir jutimo integraciją

2 žingsnis: Aparatūra

Techninė įranga
Techninė įranga
Techninė įranga
Techninė įranga

Kaip minėta ankstesniame žingsnyje, noriu padaryti keletą juostų, kad apšviestų vieną kambarį. Tai primena išlaidų klausimą. Bandysiu kiekvieną juostą padaryti kuo ekonomiškesniu būdu. Mano naudojamas mikrovaldiklis buvo AVR ATtiny2313. Jie yra gana pigūs, ir aš kelis gulėjau. „ATtiny2313“taip pat turi vieną universaliąją serijinę sąsają ir vieną USART sąsają, kuri bus gerai panaudota atliekant šiuos veiksmus. Aš taip pat turėjau tris MCP23016 - I2C 16 bitų įvesties/išvesties prievado plėtiklį, tik tiek, kiek reikia! Aš naudoju kiekvieną prievado plėtiklį, kad valdyčiau vieną 16 šviesos diodų spalvą. Šviesos diodai … Deja, buvo pigiausi, kokius tik galėjau rasti. Jie yra 48 raudonos, žalios ir mėlynos spalvos ~ 10000mcd 5 mm su 20 laipsnių kampu. Kol kas tai neturi reikšmės, nes tai tik vienas prototipas. Nepaisant šio fakto, rezultatas yra gana gražus! Aš naudoju mikrokontrolerį 8 MHz dažniu. I2C magistralė veikia 400 kHz dažniu. Šviesos diodų perjungimo dažnis yra apie 400 Hz. Tokiu būdu, jei sugebėsiu įjungti 48 šviesos diodus, neperžengdamas jų iki galo, vėliau turėsiu daugiau!

3 žingsnis: Surinkimas

Surinkimas
Surinkimas
Surinkimas
Surinkimas
Surinkimas
Surinkimas
Surinkimas
Surinkimas

Suprojektavęs grandinę, aš ją sukonstravau į keletą lentų, skirtų prototipams kurti. Po kelių valandų pjovimo laidų ir surinkimo grandinės gavau tokį rezultatą: viena milžiniška duonos lenta su 48 šviesos diodais ir tonomis vielos!

4 žingsnis: valdymas?

Kontrolė?
Kontrolė?

Tai yra sudėtingiausia projekto dalis. Norėjau padaryti vieną valdymo algoritmą pakankamai universalų, kad būtų galima tvarkyti modelius/sekas ir taip pat kontroliuoti kiekvieno šviesos diodo ryškumą ir spalvą. Norėdami valdyti šviesos diodus, turiu nusiųsti į MCP23016 vieną 4 baitų kadrą (1 baitas = 8 bitai). Vienas baitas su IC korespondento adresu spalvai, 1 baitas su komanda „rašyti“ir 2 baitai su 16 bitų (šviesos diodų) verte. IC yra prijungtas prie šviesos diodų kaip „kriauklė“, o tai reiškia, kad viena loginė vertė 0 kaištyje užsidegs šviesos diodą. O dabar sudėtinga dalis, kaip padaryti PWM valdymą 48 šviesos diodams? PWM paaiškino @ Wikipedia. Jei noriu, kad šviesos diodo ryškumas būtų 50%, mano PWM vertė yra 50%. Tai reiškia, kad šviesos diodas per vieną laikotarpį turėtų degti tiek pat laiko, kiek išjungtas. Paimkime 1 sekundės laikotarpį. 50% PWM reiškia, kad per 1 sekundę įjungimo laikas yra 0,5 sekundės, o išjungimo laikas - 0,5 sekundės. PWM 80%? 0,2 sekundės išjungimas, 0,8 sekundės įjungimas! Lengva, tiesa? Skaitmeniniame pasaulyje: esant 10 laikrodžio ciklų, 50% reiškia, kad 5 ciklai šviesos diodas dega, o dar 5 ciklai - ne. 20%? 2 ciklai įjungti, 8 ciklai išjungti. 45%? Na, mes tikrai negalime gauti 45%… Kadangi laikotarpis yra ciklais ir turime tik 10 ciklų, PWM galime padalyti tik 10%žingsniais. Tai reiškia, kad kaiščio evoliucija turėtų būti 50%: 1, 1, 1, 1, 1, 0, 0, 0, 0, 0; Arba net 1, 0, 1, 0, 1, 0, 1, 0, 1, 0; Programuodami galime atlikti šią masyvo įjungimo ir išjungimo seką. Kiekvieno ciklo, kurį mes išvedame į kaištį, indekso vertė buvo ciklas. Ar iki šiol turėjau prasmės? Jei norime, kad LED0 būtų 50%, o LED1 - 20%, galime pridėti abu masyvus.: 1, 1, 1, 1, 1, 0, 0, 0, 0, 0; LED1 kaiščiui valdyti: 2, 2, 0, 0, 0, 0, 0, 0, 0, 0; Rezultatas - LED0 +LED0: 3, 3, 1, 1, 1, 0, 0, 0, 0, 0; Išvesdami šią skaičių seką prievado plėtiklio IC, mes gautume LED0 su 50% ryškumu ir LED1 su 20% !! Paprasta 2 šviesos diodams, tiesa? Dabar turime tai padaryti 16 šviesos diodų kiekvienai spalvai! Kiekvienai iš šių masyvų turime kiekvienos spalvos ryškumo derinį (16 šviesos diodų) Kiekvieną kartą, kai norime kito spalvų derinio, turime pakeisti šį masyvą.

5 žingsnis: palengvinkite

Lengva!
Lengva!
Lengva!
Lengva!

Ankstesnis žingsnis yra per daug darbo, norint sudaryti paprastą seką … Taigi nusprendžiau sukurti programą, kurioje viename sekos etape pasakysime kiekvieno šviesos diodo spalvas ir gausime tris žingsnio matricas. Šią programą sukūriau „LabView“dėl laiko apribojimų.

6 žingsnis: pirmieji eksperimentai

Pirmieji eksperimentai
Pirmieji eksperimentai

Įkeliant keletą žingsnių į mikrovaldiklį ir gauname kažką panašaus: Atsiprašome už prastą vaizdo įrašų kokybę! Aš nustatiau maksimalų sekos žingsnių skaičių iki 8 ir apribojau PWM iki 20% šuolių. Šis sprendimas yra pagrįstas mano naudojamu valdymu ir kiek EEPROM turi ATtiny2313. Šių eksperimentų metu bandžiau išsiaiškinti, kokį poveikį galėčiau padaryti. Turiu pasakyti, kad esu patenkintas rezultatu!

7 žingsnis: valdymas realiuoju laiku

Valdymas realiu laiku
Valdymas realiu laiku
Valdymas realiu laiku
Valdymas realiu laiku
Valdymas realiu laiku
Valdymas realiu laiku

Kaip minėta ankstesniuose žingsniuose, noriu bendrauti su visais mikrovaldikliais, valdančiais šviesos diodus mano kambaryje. Taigi aš panaudojau turimą USART sąsają ATtiny2313 ir prijungiau ją prie savo kompiuterio. Aš taip pat sukūriau programą „LabView“, kad valdyčiau LED juostą. Šioje programoje galiu pasakyti mikrovaldikliui, kiek laiko yra seka, kiekvieno šviesos diodo spalva ir laikas tarp sekos žingsnių. Kitame vaizdo įraše aš parodyti, kaip galiu pakeisti šviesos diodų spalvą ir apibrėžti sekas.

8 žingsnis: Išvados

Išvados
Išvados
Išvados
Išvados
Išvados
Išvados
Išvados
Išvados

Manau, kad man pavyko įgyvendinti šį pirmąjį savo projekto metodą. Aš galiu valdyti 16 RGB šviesos diodų su nedideliais ištekliais ir apribojimais. Galima valdyti kiekvieną šviesos diodą atskirai, sukuriant bet kokią norimą seką.

Būsimas darbas:

Jei iš žmonių gausiu teigiamų atsiliepimų, galiu toliau plėtoti šią idėją ir sukurti pilną „pasidaryk pats“elektronikos rinkinį su spausdintinėmis plokštėmis ir surinkimo instrukcijomis.

Kitos versijos atveju: valdyti šviesos diodus -plėtoti ryšį tarp kelių mikrovaldiklių.

Ar turite pasiūlymą ar klausimą? Arba palikite komentarą!

„Leisk švytėti“finalininkas!

Rekomenduojamas: