Përmbajtje:

Arduino Tabela kafeje interaktive LED: 6 hapa (me fotografi)
Arduino Tabela kafeje interaktive LED: 6 hapa (me fotografi)

Video: Arduino Tabela kafeje interaktive LED: 6 hapa (me fotografi)

Video: Arduino Tabela kafeje interaktive LED: 6 hapa (me fotografi)
Video: REAL RACING 3 LEAD FOOT EDITION 2024, Korrik
Anonim
Image
Image
Tabela kafeje Arduino Interaktive LED
Tabela kafeje Arduino Interaktive LED

Bëra një tavolinë kafeje interaktive që ndez dritat led nën një objekt, kur objekti vendoset mbi tryezë. Vetëm ledet që janë nën atë objekt do të ndriçojnë. Ai e bën këtë duke përdorur në mënyrë efektive sensorë të afërsisë dhe kur sensori i afërsisë ndjen se një objekt është mjaft afër, do të ndriçojë një nyje nën atë objekt. Ai gjithashtu përdor një Arduino për të vendosur animacione që nuk kanë nevojë për sensorët e afërsisë, por shtojnë një efekt vërtet të lezetshëm që unë thjesht e dua.

Sensorët e afërsisë përbëhen nga fotodioda dhe emetues IR. Emetuesit përdorin dritën infra të kuqe (të cilën syri i njeriut nuk mund ta shohë) për të ndriçuar dritën jashtë tryezës, dhe fotodiodat marrin dritën infra të kuqe të reflektuar nga një objekt. Sa më shumë dritë që reflektohet (sa më afër objektit), aq më shumë luhatet tensioni që vjen nga fotodiodat. Kjo përdoret si një tregues për të treguar se cila nyje të ndizet. Nyjet janë një koleksion i leds ws2812b dhe një sensor afërsie.

Videoja e bashkangjitur kalon të gjithë procesin e ndërtimit, ndërsa unë përshkruaj më shumë detaje më poshtë.

Furnizimet

  1. ws2812b Llamba LED -
  2. Furnizimi me energji 5V -
  3. Çdo Arduino kam përdorur 2560 -
  4. Fotodiodat
  5. Emetuesit IR
  6. Rezistenca 10 Ohms
  7. 1 Rezistenca MOhms
  8. 47 kondensatorë pF
  9. CD4051B Multiplekser
  10. Regjistrat e ndërrimit SN74HC595
  11. ULN2803A Vargjet Darlington
  12. Çdo substrate për t'u përdorur si një dërrasë e madhe për llambat, kam përdorur një dërrasë të përbërë letre nga depoja e shtëpisë

Hapi 1: Krijoni tabelën dhe futni LED -et

Krijoni bordin dhe futni LED -et
Krijoni bordin dhe futni LED -et
Krijoni tabelën dhe futni LED -et
Krijoni tabelën dhe futni LED -et
Krijoni tabelën dhe futni LED -et
Krijoni tabelën dhe futni LED -et
Krijoni bordin dhe futni LED -et
Krijoni bordin dhe futni LED -et

Gjëja e parë që bëra ishte krijimi i tabelës e cila do të përmbajë llambat që do të vendosim brenda tavolinës së kafesë. Kam përdorur një copë tabelë të përbërë letre nga depoja e shtëpisë dhe e kam prerë në dimensionet e duhura për tryezën e kafesë që kisha. Pas prerjes së bordit në madhësi, unë shpova të gjitha vrimat për vendin ku po shkonin ledet. Vetë bordi kishte 8 rreshta dhe 12 kolona me llamba ws2812b të ndara 3 inç larg njëra -tjetrës dhe ato ishin ngjitur në një model gjarpri. Kam përdorur zam të nxehtë për t'i siguruar ato në vend.

Gjithashtu më duhej të bëja vrima në qendër të asaj që do të bëhet nyja: 4 llamba ws2812b që përbëjnë një katror, 2 dioda fotografish dhe 2 emetues IR në një shesh më të vogël në qendër të asaj. Këto 4 vrima në qendër të nyjës do të jenë njollat për fotodiodat dhe emetuesit e ir (2 nga secila). I alternova për të siguruar ekspozimin maksimal dhe i vendosa rreth 1 inç larg në qendër të secilës nyje. Unë nuk kisha nevojë t'i ngjisja këto në vend, thjesht i përkulja prizat në anën tjetër për t'u siguruar që ata nuk do të dilnin nga ana tjetër. Unë gjithashtu u sigurova të përkulja skajet pozitive dhe negative në drejtime të caktuara, në mënyrë që ato të orientoheshin saktë në qark. Të gjitha drejtimet pozitive ishin në anën e majtë të pjesës së pasme të tabelës, ndërsa të gjitha përparësitë negative ishin në anën e djathtë të tabelës.

Hapi 2: Kuptoni qarkun

Kuptoni qarkun
Kuptoni qarkun
Kuptoni qarkun
Kuptoni qarkun
Kuptoni qarkun
Kuptoni qarkun

Shënim: Të gjitha vizatimet e animuara nuk janë të sakta për zbatimin (disa kunja arduino janë të ndryshme, dhe unë zinxhiroj disa, më shumë për atë më vonë). Rezultati përfundimtar ishte pak më ndryshe për shkak të kompleksitetit të qarkut, por të gjitha qarqet e animuara shërbejnë si një bazë e shkëlqyeshme për të kuptuar se si të prototiponi secilën pjesë. Skema e rregullt dhe diagrami i qarkut janë ashtu siç është në PCB të përdorur në projekt.

Kodi PCB i cili përmban projektin KiCad dhe skedarët gerber mund të gjendet këtu: https://github.com/tmckay1/interactive_coffee_tabl…, në rast se dëshironi të porositni PCB -të vetë dhe të krijoni një projekt të ngjashëm. Kam përdorur NextPCB për të krijuar bordet.

Në thelb ka tre qarqe të ndryshme që përbëjnë këtë tabelë. E para nuk do të kalojmë në detaje dhe është një qark i thjeshtë që fuqizon drejtuesit ws2812b. Një sinjal i të dhënave PWM dërgohet nga Arduino te llambat led ws2812b dhe kontrollon se cilat ngjyra tregohen ku. Ne po përdorim ws2812b led sepse ato janë të adresueshme në mënyrë individuale, kështu që ne do të jemi në gjendje të kontrollojmë se cilat nga leds të ndizen dhe cilat të fiken. Ledet ws2812b mundësohen nga një burim i jashtëm i energjisë 5V, pasi që vetëm arduino nuk ka fuqi të mjaftueshme për të ndezur të gjitha dritat. Në diagramin e animuar të bashkangjitur ata përdorin një rezistencë tërheqëse prej 330 Ohms, megjithatë unë nuk e përdor atë në ndërtimin tim.

Qarku i dytë ndez emetuesit IR. Ky qark përdor një regjistër ndërrimi për të kontrolluar një grup darlington i cili dërgon energji te emetuesit IR. Regjistri i ndërrimit është një qark i integruar që është në gjendje të dërgojë sinjale HIGH dhe LOW në kunja të shumëfishta nga vetëm një sasi e vogël kunjash. Në rastin tonë ne përdorim një regjistër ndërrimi SN74HC595 që është në gjendje të kontrollohet nga 3 hyrje, por kontrollon deri në 8 dalje. Përfitimi i përdorimit të tij me arduino është se ju mund të lidhni zinxhirë deri në 8 regjistra ndërrimi me radhë (arduino mund të trajtojë vetëm deri në 8 prej tyre). Kjo do të thotë që ju nevojiten vetëm 3 kunja nga arduino për të ndezur dhe fikur 64 emetues IR. Grupi darlington ju mundëson të fuqizoni një pajisje nga një burim i jashtëm nëse sinjali i hyrjes është LART, ose ta fikni fuqinë për atë pajisje nëse sinjali i hyrjes është I ULT. Pra, në shembullin tonë, ne përdorim një grup ULN2803A darlington, i cili lejon që një burim i jashtëm i energjisë 5V të ndizet dhe fiket deri në 8 nga emetuesit IR. Ne përdorim një rezistencë 10 Ohm me emetuesit IR në seri për të marrë amperazh maksimal nga emetuesit IR.

Qarku i tretë përdor një multiplexer për të marrë hyrje të shumta nga fotodiodat dhe dërgon daljen në një sinjal të dhënash. Multiplekseri është një pajisje që përdoret për të marrë hyrje të shumta nga të cilat dëshironi të lexoni dhe i duhen vetëm disa kunja për të lexuar nga ato hyrje. Ai gjithashtu mund të bëjë të kundërtën (demultipleksi), por ne nuk e përdorim atë për atë aplikim këtu. Pra, në rastin tonë ne përdorim një multiplexer CD4051B për të marrë deri në 8 sinjale nga fotodiodat, dhe na duhen vetëm 3 hyrje për të lexuar nga ato sinjale. Plus ne mund të lidhim zinxhirë deri në 8 multiplexer (arduino mund të trajtojë vetëm deri në 8 prej tyre). Kjo do të thotë që arduino mund të lexojë nga 64 sinjale të fotodiodës nga vetëm 3 kunja dixhitale. Fotodiodat janë të orientuara anasjelltas, që do të thotë se në vend që të orientohemi në drejtimin normal me plumbin pozitiv të bashkangjitur në burimin e tensionit pozitiv, ne caktojmë kalimin negativ në burimin e tensionit pozitiv. Kjo në mënyrë efektive i kthen fotodiodat në rezistente fotografike, të cilat ndryshojnë në rezistencë në varësi të sasisë së dritës që merr. Ne pastaj krijojmë një ndarës të tensionit për të lexuar një tension të varur nga rezistenca e ndryshme e fotodiodeve duke shtuar një rezistencë shumë rezistente 1 MOhms në tokë. Kjo na lejon të marrim tensione më të larta dhe më të ulëta në arduino në varësi të sasisë së dritës IR që marrin fotodiodat.

Unë ndoqa pjesën më të madhe të këtij modeli nga një person tjetër që e bëri këtë këtu: https://www.instructables.com/Infrared-Proximity-S… Në atë dizajn ata gjithashtu shtuan një kondensator 47pF, siç bëjmë ne, përballë rezistencës 1 MOhm përdoret për të krijuar ndarësin e tensionit me fotodiodat. Arsyeja që ai shtoi ishte sepse ai po luhatte emetuesit IR në dhe fikur me një sinjal PWM dhe duke bërë këtë tërhoqi një rënie të vogël të tensionit nga fotodiodat kur emetuesit IR u ndezën menjëherë. Kjo bëri që diodat e fotografive të ndryshojnë rezistencën edhe kur nuk po merrte më shumë dritë IR nga një objekt sepse emetuesit IR ndanin të njëjtin burim energjie 5V si fotodiodat. Kondensatori u përdor për t'u siguruar që nuk kishte rënie të tensionit kur emetuesit IR ishin ndezur dhe fikur. Fillimisht kisha planifikuar të bëja të njëjtën strategji, por më mbaroi koha për ta testuar, kështu që në vend të kësaj i lashë emetuesit IR gjithnjë. Unë do të doja ta ndryshoja këtë në të ardhmen, por derisa të ridizajnoj kodin dhe qarkun, tani PCB është projektuar që të ketë dritat IR në çdo kohë, dhe unë i mbaj kondensatorët gjithsesi. Ju nuk duhet të keni nevojë për kondensatorin nëse përdorni këtë dizajn PCB, por unë do të prezantoj një version tjetër të PCB që pranon një hyrje shtesë në regjistrin e ndërrimit që do t'ju lejojë të moduloni ndezjen dhe fikjen e emetuesve IR. Kjo do të kursejë shumë në konsumin e energjisë.

Ju mund të kontrolloni diagramet e animuara të bashkangjitura për një konfigurim prototip për testimin në arduino tuaj. Ekziston gjithashtu një skemë më e detajuar me ngjyra për secilin qark, e cila përshkruan konfigurimin dhe orientimin e pajisjeve elektronike. Në skemën e bashkangjitur të PCB -së, kemi 4 qarqe të përgjithshme, 2 qarqe të përdorura për të ndezur emetuesit IR dhe 2 qarqe për të lexuar nga fotodiodat. Ato janë të orientuara në PCB 2 grupe pranë njëri -tjetrit me një grup të përbërë nga 1 qark emetues IR dhe 1 qark fotodiode, kështu që 2 kolona me 8 nyje mund të vendosen në një PCB të vetme. Ne gjithashtu zinxhirojmë dy qarqe së bashku, kështu që tre kunja nga arduino mund të kontrollojnë dy regjistrat e ndërrimit, dhe 3 kunja shtesë mund të kontrollojnë dy multiplexerët në tabelë. Ekziston një titull dalës shtesë për të qenë në gjendje të lidhni zinxhir me PCB shtesë.

Këtu janë disa burime që kam ndjekur për prototipimin:

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

Hapi 3: Saldoni telat në Nyje

Saldimi i telave në Nyje
Saldimi i telave në Nyje
Saldimi i telave në Nyje
Saldimi i telave në Nyje
Saldimi i telave në Nyje
Saldimi i telave në Nyje
Saldimi i telave në Nyje
Saldimi i telave në Nyje

Tani që e keni kuptuar se si bëhet qarku, vazhdoni dhe lidhni telat në secilën nyje. I bashkova fotodiodat paralelisht (telat e verdhë dhe gri) dhe emetuesit e ir në seri (tela portokalli). Unë pastaj ngjita një tel më të gjatë të verdhë në fotodiodat paralelisht që do t'i bashkëngjiten burimit të energjisë 5V, dhe një tel blu që do t'i bashkëngjitet hyrjes së fotodiodës së PCB. Unë bashkova një tel të gjatë të kuq në qarkun e emetuesit IR që do të përdoret për t'u lidhur me burimin e energjisë 5V dhe një tel të zi i cili do të lidhet me hyrjen e emetuesit IR të PCB. Unë në fakt i bëra telat pak deri në pak kohë, kështu që mund të lidhja vetëm 5 nga nyjet në secilën kolonë në fund (në vend të 7). Unë planifikoj ta rregulloj këtë më vonë.

Hapi 4: Saldoni Komponentët e PCB -së dhe Bashkojeni atë në Bord

Saldoni Komponentët e PCB -së dhe Bashkojini Në Bord
Saldoni Komponentët e PCB -së dhe Bashkojini Në Bord
Saldoni Komponentët e PCB -së dhe Bashkojini Në Bord
Saldoni Komponentët e PCB -së dhe Bashkojini Në Bord
Saldoni Komponentët e PCB -së dhe Bashkojini Në Bord
Saldoni Komponentët e PCB -së dhe Bashkojini Në Bord

Shënim: PCB -ja në figurën e bashkangjitur është versioni i parë që kam bërë, të cilit i mungonin hyrjet dhe daljet e energjisë dhe gjithashtu një zinxhir margaritar për secilin qark të brendshëm. Dizajni i ri i PCB korrigjon këtë gabim.

Këtu ju vetëm duhet të ndiqni skemën e PCB për të bashkuar përbërësit në PCB dhe pastaj pasi të jetë bërë kjo, lidhni PCB në bord. Kam përdorur bordet e jashtme të qarkut për të bashkangjitur sinjalin e energjisë 5V, të cilin e shpërndava në të gjitha telat e verdhë dhe të kuq. Në prapambetje, unë nuk kisha nevojë për tela kaq të gjatë të kuq dhe të verdhë dhe mund të kisha lidhur nyjet me njëra -tjetrën (në vend që t'i lidhja ato me një tabelë qarkore të zakonshme të jashtme). Kjo do të ketë zvogëluar vërtet sasinë e rrëmujës në pjesën e pasme të tabelës.

Meqenëse kisha 8 rreshta me drejtues ws2812b dhe 12 kolona, përfundova me 7 rreshta dhe 11 kolona nyjesh (gjithsej 77 nyje). Ideja është që të përdoret njëra anë e PCB -së për një kolonë nyjesh dhe ana tjetër për kolonën tjetër. Pra, meqë kisha 11 kolona, më duheshin 6 PCB (e fundit kishte nevojë vetëm për një grup përbërësish). Meqenëse i bëra telat shumë të shkurtër, mund të lidhja vetëm 55 nyje, 11 kolona dhe 5 rreshta. Ju mund të shihni në foto, unë bëra një gabim dhe bashkova telat e papërpunuar në dërrasë, gjë që do të ishte mirë nëse telat ishin mjaft të hollë, por në rastin tim ata ishin shumë të trashë. Kjo do të thoshte se kisha skajet e telit që prisheshin shumë pranë njëri -tjetrit për secilën hyrje të emetuesit IR dhe hyrjen e fotodiodës, kështu që kishte shumë debugime që ndodhnin nga të gjitha shkurtimet e telit. Në të ardhmen unë do të përdor lidhje për të lidhur PCB me telat në tabelë për të shmangur pantallona të shkurtra dhe për të pastruar gjërat.

Meqenëse Arduino mund të zinxhirojë vetëm zinxhirë deri në 8 regjistra të ndërrimit dhe multiplexer, krijova dy zinxhirë të veçantë, një që merr 8 kolonat e para dhe një tjetër merr 3 kolonat e mbetura. Unë pastaj e bashkangjita çdo zinxhir në një PCB tjetër që kishte vetëm 2 multiplexer, në mënyrë që të mund të lexoja çdo zinxhir të sinjaleve të të dhënave të multiplexer nga ata dy multiplexerë në arduino. Këta dy multiplexerë ishin gjithashtu të lidhur me margaritë. Kjo do të thotë se në arduino u përdorën gjithsej 16 sinjale dalëse dhe 2 hyrje analoge: 1 sinjal dalës për të kontrolluar prizat ws2812b, 3 sinjale dalëse për zinxhirin e parë të regjistrave të ndërrimit, 3 sinjale dalëse për zinxhirin e parë të multiplekseve, 3 sinjale dalëse për zinxhirin e dytë të regjistrave të ndërrimit, 3 sinjale dalëse për zinxhirin e dytë të multiplexerëve, 3 sinjale dalëse për 2 multiplexerët që grumbullojnë çdo sinjal të të dhënave PCB, dhe së fundi 2 hyrje analoge për secilin sinjal të të dhënave nga 2 multiplexerët e përgjithshëm.

Hapi 5: Rishikoni Kodin

Shënim: Përveç kodit ndërveprues më poshtë, kam përdorur një bibliotekë të palëve të treta për të prodhuar animacionet për udhëheqësit ws2812b. Mund ta gjeni këtu:

Kodin që kam përdorur mund ta gjeni këtu:

Në krye përcaktoj kunjat arduino që do të lidhen me secilën pjesë të PCB. Në metodën e konfigurimit, unë vendos kunjat e daljes për multiplexerët, ndez rrezatuesit IR, vendos një grup baseVal që mban gjurmët e leximit të dritës së ambientit për secilën fotodiodë dhe inicon FastLED që do t'i shkruajë leds ws2812b. Në metodën e lakut, ne rivendosim listën e leds që janë caktuar të jenë në shiritin ws2812b. Pastaj lexojmë vlerat nga fotodiodat në zinxhirët e multiplekseve dhe vendosim dritat ws2812b që supozohet të jenë të ndezura nëse leximi nga fotodioda në nyje është mbi një prag të caktuar të përcaktuar nga vlera bazë e leximeve të dritës së ambientit. Ne pastaj i japim LED -të nëse ka ndonjë ndryshim në nyjen që duhet të jetë i ndezur. Përndryshe, ajo vazhdon të sillet derisa diçka të ndryshojë për të shpejtuar gjërat.

Kodi ndoshta mund të përmirësohet dhe unë jam duke kërkuar ta bëj këtë, por ka një vonesë prej 1-2 sekondash nga kur dritat ndizen pasi një objekt është vendosur në tryezë. Unë besoj se çështja themelore është që FastLED merr pak kohë për të dhënë 96 led në tryezë dhe kodi duhet të lakojë dhe të lexojë 77 hyrje nga tabela. E provova këtë kod me 8 led dhe zbulova se ishte pothuajse i menjëhershëm, por po shikoj pikën e ëmbël të LED -ve që do të punojnë me këtë kod dhe do të jenë pothuajse të menjëhershëm, si dhe do të përmirësojnë kodin.

Hapi 6: Ndizni Arduino

Aktivizo Arduino -n!
Aktivizo Arduino -n!
Aktivizo Arduino -n!
Aktivizo Arduino -n!
Aktivizo Arduino!
Aktivizo Arduino!

Tani gjithçka që duhet të bëni është të ndizni arduino dhe të shihni funksionin e tabelës! Duke përdorur bibliotekën e animacioneve të përmendur më parë, mund të vendosni disa animacione të lezetshme ws2812b, ose mund të vendosni kodin e tryezës së kafesë dhe ta shihni atë të ndriçohet në secilin seksion. Mos ngurroni të komentoni çdo pyetje ose opinion, dhe unë do të përpiqem t'ju kthehem në kohën e duhur. Urime!

Recommended: