Kazalo:

Arduino interaktivna LED mizica za kavo: 6 korakov (s slikami)
Arduino interaktivna LED mizica za kavo: 6 korakov (s slikami)

Video: Arduino interaktivna LED mizica za kavo: 6 korakov (s slikami)

Video: Arduino interaktivna LED mizica za kavo: 6 korakov (s slikami)
Video: Leap Motion SDK 2024, December
Anonim
Image
Image
Arduino interaktivna LED mizica za kavo
Arduino interaktivna LED mizica za kavo

Naredil sem interaktivno mizico za kavo, ki prižge LED luči pod predmetom, ko je predmet postavljen nad mizo. Prižgale se bodo le LED diode, ki so pod tem predmetom. To naredi z učinkovito uporabo senzorjev bližine, in ko senzor bližine zazna, da je predmet dovolj blizu, zasveti vozlišče pod tem predmetom. Z Arduinom uporablja tudi animacije, ki ne potrebujejo senzorjev bližine, ampak dodajo res kul učinek, ki mi je zelo všeč.

Senzorji bližine so sestavljeni iz fotodiod in IR oddajnikov. Oddajniki uporabljajo infrardečo svetlobo (ki je človeško oko ne vidi), da iz mize zasvetijo svetlobe, fotodiode pa sprejmejo infrardečo svetlobo, ki se odbija od predmeta. Več svetlobe, ki se odseva (bližje kot je predmet), bolj niha napetost, ki prihaja iz fotodiod. To se uporablja kot indikator, ki pove, katero vozlišče naj se prižge. Vozlišča so zbirka LED svetilk ws2812b in senzorja bližine.

Priloženi video prikazuje celoten postopek izdelave, spodaj pa opisujem več podrobnosti.

Zaloge

  1. ws2812b LED žarnice -
  2. Napajanje 5V -
  3. Vsak Arduino, ki sem ga uporabil 2560 -
  4. Fotodiode
  5. IR oddajniki
  6. 10 ohmski upori
  7. 1 MOhmski upori
  8. 47 pF kondenzatorji
  9. CD4051B Multiplekserji
  10. SN74HC595 Registri premikov
  11. ULN2803A Darlingtonski nizi
  12. Vsako podlago za uporabo kot veliko ploščo za LED diode sem uporabil papirnato kompozitno ploščo iz domačega skladišča

1. korak: Ustvarite ploščo in vstavite LED

Ustvarite ploščo in vstavite LED
Ustvarite ploščo in vstavite LED
Ustvarite ploščo in vstavite LED
Ustvarite ploščo in vstavite LED
Ustvarite ploščo in vstavite LED
Ustvarite ploščo in vstavite LED
Ustvarite ploščo in vstavite LED
Ustvarite ploščo in vstavite LED

Prva stvar, ki sem jo naredil, je bila ustvariti tablo, ki bo vsebovala LED diode, ki jih bomo postavili v mizico. Uporabil sem kos papirnate kompozitne plošče iz domačega skladišča in ga razrezal na ustrezne mere za mizico za kavo, ki sem jo imel. Ko sem ploščo razrezal na velikost, sem izvrtal vse luknje, kamor bodo šle svetleče diode. Plošča je imela 8 vrstic in 12 stolpcev svetlečih diod ws2812b, ločenih 3 cm narazen, pritrjeni pa so bili v serpentinastem vzorcu. Za pritrditev sem uporabil vroče lepilo.

Prav tako sem moral izvrtati luknje v središču tega, kar bo postalo vozlišče: 4 svetleče diode ws2812b, ki sestavljajo kvadrat, 2 foto diode in 2 IR oddajnika na manjšem kvadratu v sredini. Te 4 luknje v središču vozlišča bi bile pike za fotodiode in ir oddajnike (po 2). Zamenjal sem jih, da sem zagotovil največjo izpostavljenost, in jih postavil približno 1 cm narazen v središče vsakega vozlišča. Ni mi jih bilo treba vroče lepiti, ampak sem samo upognila kable na drugi strani, da sem se prepričala, da ne pridejo ven na drugo stran. Poskrbel sem tudi, da sem pozitivne in negativne konce upognil v določene smeri, tako da so bili pravilno usmerjeni v vezju. Vsi pozitivni vodi so bili na levi strani hrbtne strani plošče, vsi negativni vodi pa na desni strani plošče.

2. korak: Razumeti vezje

Razumeti vezje
Razumeti vezje
Razumeti vezje
Razumeti vezje
Razumeti vezje
Razumeti vezje

Opomba: Vse animirane risbe niso natančne glede na izvedbo (nekateri zatiči arduino so različni in nekaj jih naredim v verigi, več o tem kasneje). Končni rezultat je bil zaradi zapletenosti vezja nekoliko drugačen, vendar so vsa animirana vezja odlična osnova za razumevanje, kako vsak del izdelati prototip. Redna shema in diagram vezja sta takšna, kot je na tiskanem vezju, uporabljenem v projektu.

Kodo tiskanega vezja, ki vsebuje projekt KiCad in datoteke gerber, najdete tukaj: https://github.com/tmckay1/interactive_coffee_tabl…, če želite sami naročiti tiskane vezje in ustvariti podoben projekt. Za izdelavo plošč sem uporabil NextPCB.

To tabelo sestavljajo v bistvu tri različna vezja. Najprej ne bomo šli v podrobnosti in je preprosto vezje, ki napaja LED diode ws2812b. Podatkovni signal PWM se pošlje iz Arduina na LED žarnice ws2812b in nadzoruje, katere barve so prikazane. Svetleče diode ws2812b uporabljamo, ker so individualno naslovljive, zato bomo lahko nadzirali, katero od LED vklopiti in katero izklopiti. Svetleče diode ws2812b se napajajo iz 5V zunanjega vira napajanja, saj sam arduino nima dovolj moči za vklop vseh luči. V priloženem animiranem diagramu uporabljajo upogibni upor 330 Ohmov, vendar tega pri izdelavi ne uporabljam.

Drugo vezje vklopi IR oddajnike. To vezje uporablja premični register za krmiljenje matrice Darlington, ki pošilja napajanje IR oddajnikom. Premični register je integrirano vezje, ki lahko pošilja signale VISOKEGA in NIZKEGA na več nožic iz le majhne količine nožic. V našem primeru uporabljamo premični register SN74HC595, ki ga je mogoče upravljati s 3 vhodi, vendar krmili do 8 izhodov. Prednost uporabe tega z arduinom je, da lahko v verigi povežete do 8 registrov premikov zapored (arduino jih lahko obdeluje le do 8). To pomeni, da potrebujete le 3 nožice iz arduina za vklop in izklop 64 IR oddajnikov. Niz Darlington vam omogoča, da napajate napravo iz zunanjega vira, če je vhodni signal VISOK, ali pa izklopite napajanje te naprave, če je vhodni signal NIZK. Tako v našem primeru uporabljamo matriko darlington ULN2803A, ki omogoča, da zunanji vir napajanja 5V vklopi in izklopi do 8 IR oddajnikov. Uporabljamo 10 ohmski upor z zaporednimi oddajniki IR, da dobimo največjo jakost jakosti od IR oddajnikov.

Tretje vezje uporablja multiplekser za sprejem več vhodov s fotodiod in pošlje izhod v podatkovnem signalu. Multiplekser je naprava, ki se uporablja za sprejemanje več vhodov, iz katerih želite prebrati, in za branje teh vhodov potrebuje le nekaj zatičev. Lahko tudi obratno (demultipleks), vendar ga tukaj ne uporabljamo za to aplikacijo. Tako v našem primeru uporabljamo multiplekser CD4051B za sprejem do 8 signalov s fotodiod, za branje iz teh signalov pa potrebujemo le 3 vhode. Poleg tega lahko marjetico povežemo do 8 multiplekserjev (arduino jih lahko obvlada le do 8). To pomeni, da lahko arduino bere iz 64 fotodiodnih signalov s samo 3 digitalnih zatičev. Fotodiode so usmerjene v obratni smeri, kar pomeni, da namesto v normalni smeri s pozitivnim vodilom, pritrjenim na vir pozitivne napetosti, negativnemu vodilu dodelimo vir pozitivne napetosti. S tem se fotodiode učinkovito spremenijo v fotografske upore, katerih upor se spreminja glede na količino svetlobe, ki jo prejme. Nato ustvarimo delilnik napetosti za branje napetosti, ki je odvisna od spreminjajočega se upora fotodiod, tako da na tla dodamo zelo odporen upor 1 MOhms. To nam omogoča, da prejemamo višje in nižje napetosti na arduino, odvisno od tega, koliko IR svetlobe sprejemajo fotodiode.

Večini te zasnove sem sledil od druge osebe, ki je to naredila tukaj: https://www.instructables.com/Infrared-Proximity-S… V to zasnovo so dodali tudi 47pF kondenzator, kot mi, nasproti upora 1 MOhm se uporablja za ustvarjanje delilnika napetosti s fotodiodami. Razlog, da ga je dodal, je bil v tem, da je IR -oddajnike nihal in vklapljal s signalom PWM in je s tem potegnil majhen padec napetosti s fotodiod, ko so bili IR -oddajniki takoj vklopljeni. Zaradi tega so foto diode spremenile upor, tudi če niso prejemale več IR svetlobe od predmeta, ker so IR oddajniki delili isti vir energije 5V kot fotodiode. Kondenzator je bil uporabljen za zagotovitev, da pri vklopu in izklopu IR oddajnikov ni padca napetosti. Sprva sem nameraval narediti isto strategijo, vendar mi je zmanjkalo časa, da bi jo preizkusil, zato sem IR oddajnike vedno pustil prižgane. To bi rad spremenil v prihodnosti, toda dokler ne preoblikujem kode in vezja, je trenutno tiskano vezje zasnovano tako, da ima IR lučke vedno prižgane, kondenzatorje pa sem vseeno obdržal. Ko uporabljate to zasnovo tiskanega vezja, ne potrebujete kondenzatorja, vendar bom predstavil drugo različico tiskanega vezja, ki sprejme dodaten vhod v premični register, ki vam bo omogočil vklop in izklop IR oddajnikov. To bo znatno prihranilo pri porabi energije.

Priložene animirane diagrame lahko preverite za namestitev prototipa za testiranje na vašem arduinu. Za vsako vezje je tudi podrobnejša barvna shema, ki opisuje nastavitev in usmeritev elektronskih naprav. V priloženi shemi tiskanega vezja imamo 4 skupna vezja, 2 vezja za vklop IR oddajnikov in 2 vezja za branje s fotodiod. Usmerjeni so na PCB 2 skupini drug poleg drugega s skupino, sestavljeno iz 1 vezja IR oddajnika in 1 vezja fotodiode, tako da je mogoče 2 stolpca po 8 vozlišč postaviti v eno tiskano vezje. Prav tako povezujemo oba vezja skupaj, tako da lahko trije zatiči iz arduina upravljajo dva registra premikov, trije dodatni zatiči pa lahko nadzorujejo dva multiplekserja na plošči. Obstaja dodatna izhodna glava, s katero lahko povežete dodatne PCB -je.

Tu je nekaj virov, ki sem jih upošteval pri izdelavi prototipov:

  • https://lastminuteengineers.com/74hc595-shift-regi…
  • https://techtutorialsx.com/2016/02/08/using-a-uln2…
  • https://tok.hakynda.com/article/detail/144/cd4051be…

3. korak: Spajkanje žic na vozlišče

Spajkanje žic v vozlišče
Spajkanje žic v vozlišče
Spajkanje žic v vozlišče
Spajkanje žic v vozlišče
Spajkanje žic v vozlišče
Spajkanje žic v vozlišče
Spajkanje žic v vozlišče
Spajkanje žic v vozlišče

Zdaj, ko razumete, kako je vezje narejeno, pojdite naprej in spajkajte žice na vsako vozlišče. Fotodiode sem spajkal vzporedno (rumene in sive žice), ir oddajnike pa zaporedno (oranžna žica). Nato sem na fotodiode vzporedno spajkal daljšo rumeno žico, ki bo pritrjena na vir napajanja 5V, in modro žico, ki bo pritrjena na vhod fotodiode tiskane plošče. Na vezje IR oddajnika sem spajkal dolgo rdečo žico, ki se bo uporabljala za priključitev na 5V vir napajanja, in črno žico, ki se bo povezala z vhodom IR oddajnika na tiskanem vezju. Pravzaprav mi je malo zmanjkalo časa za žice, zato sem na koncu lahko povezal le 5 vozlišč v vsakem stolpcu (namesto 7). To nameravam popraviti kasneje.

4. korak: Spajkajte komponente tiskanega vezja in jih pritrdite na ploščo

Spajajte komponente tiskanega vezja in jih pritrdite na ploščo
Spajajte komponente tiskanega vezja in jih pritrdite na ploščo
Spajajte komponente tiskanega vezja in jih pritrdite na ploščo
Spajajte komponente tiskanega vezja in jih pritrdite na ploščo
Spajajte komponente tiskanega vezja in jih pritrdite na ploščo
Spajajte komponente tiskanega vezja in jih pritrdite na ploščo

Opomba: PCB na priloženi sliki je prva različica, ki sem jo naredil, pri kateri ni bilo vhodov in izhodov za moč, pa tudi verižnega verižnika za vsako notranje vezje. Nova oblika tiskanega vezja odpravlja to napako.

Tukaj morate le slediti shemi tiskanega vezja za spajkanje komponent na tiskano vezje in potem, ko je to storjeno, spajkajte tiskano vezje na ploščo. Za priključitev 5V napajalnega signala sem uporabil zunanja vezja, ki sem jih razdelil na vse rumene in rdeče žice. Če pogledam nazaj, nisem potreboval tako dolgih rdečih in rumenih žic in bi lahko vozlišča povezal med seboj (namesto da bi jih povezal s skupnim zunanjim vezjem). To bo resnično zmanjšalo količino nereda na zadnji strani plošče.

Ker sem imel 8 vrstic ws2812b LED in 12 stolpcev, sem imel 7 vrstic in 11 stolpcev vozlišč (skupaj 77 vozlišč). Ideja je uporabiti eno stran tiskanega vezja za en stolpec vozlišč, drugo stran pa za drugi stolpec. Ker sem imel 11 stolpcev, sem potreboval 6 PCB -jev (zadnji je potreboval le eno skupino komponent). Ker sem naredil žice prekratke, sem lahko povezal le 55 vozlišč, 11 stolpcev in 5 vrstic. Vidite na sliki, naredil sem napako in surove žice spajkal na ploščo, kar bi bilo v redu, če bi bile žice dovolj tanke, v mojem primeru pa so bile predebele. To je pomenilo, da sem imel za vsakega vhoda IR oddajnika in vhoda fotodiode zelo blizu drug drugemu raztrgane konce žic, zato je prišlo do veliko odpravljanja napak zaradi kratkega stika žice. V prihodnosti bom uporabil konektorje za povezavo tiskanega vezja z žicami na plošči, da se izognem kratkim stikom in počistim stvari.

Ker lahko Arduino verižico poveže le do 8 registrov premikov in multiplekserjev, sem ustvaril dve ločeni verigi, ena za prvih 8 stolpcev, druga pa za preostale 3 stolpce. Nato sem vsako verigo pritrdil na drug tiskalnik, ki je imel samo 2 multiplekserja, tako da sem lahko prebral vsako verigo podatkovnih signalov multipleksorja iz teh dveh multiplekserjev v arduino. Ta dva multiplekserja sta bila tudi verižno vezana. To pomeni, da je bilo v arduinu uporabljenih skupaj 16 izhodnih signalov in 2 analogna vhoda: 1 izhodni signal za krmiljenje LED diod ws2812b, 3 izhodni signali za prvo verigo registrov premikov, 3 izhodni signali za prvo verigo multiplekserjev, 3 izhodni signali za drugo verigo premičnih registrov, 3 izhodni signali za drugo verigo multiplekserjev, 3 izhodni signali za 2 multiplekserja, ki združujejo vsak podatkovni signal PCB, in na koncu 2 analogna vhoda za vsak podatkovni signal iz 2 agregatnih agregatov.

5. korak: Preglejte kodo

Opomba: Poleg interaktivne kode spodaj sem za izdelavo animacij za LED diode ws2812b uporabil knjižnico drugih proizvajalcev. To lahko najdete tukaj:

Kodo, ki sem jo uporabil, najdete tukaj:

Na vrhu definiram zatiče arduino, ki se bodo povezali z vsakim delom tiskanega vezja. Pri namestitveni metodi nastavim izhodne zatiče za multiplekserje, vklopim IR oddajnike, nastavim matriko baseVal, ki spremlja odčitke zunanje svetlobe za vsako fotodiodo, in inicializira FastLED, ki bo pisal na lučke ws2812b. Pri metodi zanke ponastavimo seznam svetlečih diod, ki so dodeljene za vklop na traku ws2812b. Nato preberemo vrednosti s fotodiod v verigah multiplekserja in nastavimo lučke ws2812b, ki naj bi bile vklopljene, če je odčitek s fotodiode v vozlišču nad določenim pragom od osnovne vrednosti odčitkov zunanje svetlobe. Nato svetleče diode upodobimo, če pride do spremembe v vozlišču, ki bi morala biti vklopljena. V nasprotnem primeru se ponavlja, dokler se kaj ne pospeši.

Kodo bi verjetno lahko izboljšali in razmišljam o tem, vendar traja približno 1-2 sekundi, ko se luči prižgejo, ko je predmet položen na mizo. Verjamem, da je osnovna težava, da FastLED potrebuje nekaj časa, da upodobi 96 LED na mizi, koda pa mora prečkati in prebrati 77 vnosov iz tabele. To kodo sem poskusil z osmimi LED diodami in ugotovil, da je skoraj takojšnja, vendar iščem sladko točko LED, ki bo delovala s to kodo in bo skoraj takojšnja, pa tudi izboljšala kodo.

6. korak: Vklopite Arduino

Vklopite Arduino!
Vklopite Arduino!
Vklopite Arduino!
Vklopite Arduino!
Vklopite Arduino!
Vklopite Arduino!

Zdaj morate le vklopiti arduino in si ogledati funkcijo tabele! S prej omenjeno knjižnico animacij si lahko privoščite nekaj kul animacij, ki jih vodi ws2812b, ali pa si prilepite kodo mizice za kavo in jo prižgete v vsakem razdelku. Vsa vprašanja ali mnenja lahko komentirate in poskušal vam bom pravočasno odgovoriti. Na zdravje!

Priporočena: