Sisukord:

Arduino interaktiivne LED -diivanilaud: 6 sammu (piltidega)
Arduino interaktiivne LED -diivanilaud: 6 sammu (piltidega)

Video: Arduino interaktiivne LED -diivanilaud: 6 sammu (piltidega)

Video: Arduino interaktiivne LED -diivanilaud: 6 sammu (piltidega)
Video: Начало работы с QLC+ Управление цветомузыкой с компьютера. Как управлять светом. 2024, Juuli
Anonim
Image
Image
Arduino interaktiivne LED kohvilaud
Arduino interaktiivne LED kohvilaud

Tegin interaktiivse diivanilaua, mis lülitab objekti alla LED -tuled sisse, kui ese laua kohale asetatakse. Süttivad ainult selle objekti all olevad LED -id. Ta teeb seda, kasutades tõhusalt lähedusandureid ja kui lähedusandur tuvastab, et objekt on piisavalt lähedal, süttib see selle objekti all. Samuti kasutab see Arduino animatsioonide panemiseks, mis ei vaja lähedusandureid, kuid lisavad tõeliselt laheda efekti, mis mulle lihtsalt meeldib.

Lähedusandurid koosnevad fotodioodidest ja infrapunakiirguritest. Kiirgurid kasutavad infrapunavalgust (mida inimsilm ei näe), et valgustada lauast ja fotodioodid võtavad vastu objektilt peegelduva infrapunavalguse. Mida rohkem valgust peegeldub (mida lähemal on objekt), seda rohkem pinged fotodioodidest tulevad. Seda kasutatakse indikaatorina, et öelda, milline sõlm süttib. Sõlmed on ws2812b LED -ide kogum ja lähedusandur.

Lisatud video hõlmab kogu ehitamisprotsessi, samas kirjeldan allpool üksikasjalikumalt.

Tarvikud

  1. ws2812b LED -lambid -
  2. 5 V toiteallikas -
  3. Iga Arduino, mida kasutasin, kasutasin 2560 -
  4. Fotodioodid
  5. IR -kiirgurid
  6. 10 oomi takistid
  7. 1 MOhmsi takistid
  8. 47 pF kondensaatorid
  9. CD4051B multiplekserid
  10. SN74HC595 vahetuste registrid
  11. ULN2803A Darlingtoni massiivid
  12. Mis tahes substraati, mida kasutada LED -ide suure tahvlina, kasutasin kodust depoost pärit paberkomposiitplaati

Samm: looge tahvel ja sisestage valgusdioodid

Looge tahvel ja sisestage valgusdioodid
Looge tahvel ja sisestage valgusdioodid
Looge tahvel ja sisestage valgusdioodid
Looge tahvel ja sisestage valgusdioodid
Looge tahvel ja sisestage valgusdioodid
Looge tahvel ja sisestage valgusdioodid
Looge tahvel ja sisestage valgusdioodid
Looge tahvel ja sisestage valgusdioodid

Esimese asjana tegin tahvli, mis sisaldab diivanilaua sisse pandavaid LED -e. Kasutasin kodust depoost paberist komposiitplaati ja lõikasin selle kohvilaua jaoks sobivate mõõtmetega. Pärast plaadi suuruseks lõikamist puurisin välja kõik augud, kus LED -id läksid. Tahvlil oli 8 rida ja 12 veergu ws2812b LED -e, mis olid üksteisest eraldatud 3 tolli kaugusel, ja need kinnitati serpentiinmustriga. Kasutasin nende kinnitamiseks kuuma liimi.

Samuti pidin puurima augud selle keskpunkti, millest saab sõlme: neli ws2812b LED -i, mis moodustavad ruudu, 2 fotodioodi ja 2 IR -kiirgurit selle keskel oleval väiksemal ruudul. Need 4 auku sõlme keskel oleksid fotodioodide ja kiirguse kiirgajate laigud (igaüks 2). Maksimaalse särituse tagamiseks vahetasin neid vaheldumisi ja asetasin need iga sõlme keskele umbes 1 tolli kaugusele. Ma ei pidanud neid kuumalt liimima, vaid lihtsalt painutasin juhtmeid teisel küljel, veendumaks, et need ei tule teiselt poolt välja. Veendusin ka, et painutan positiivsed ja negatiivsed otsad teatud suundadesse, nii et need oleksid ahelas õigesti orienteeritud. Kõik positiivsed juhtmed olid plaadi tagakülje vasakul küljel, samas kui kõik negatiivsed juhtmed olid tahvli paremal küljel.

Samm: mõistke vooluringi

Mõistke ahelat
Mõistke ahelat
Mõistke ahelat
Mõistke ahelat
Mõistke ahelat
Mõistke ahelat

Märkus. Kõik animeeritud joonised ei ole teostuse suhtes täpsed (mõned arduino nööpnõelad on erinevad ja aheldan mõned, rohkem sellest hiljem). Lõpptulemus oli vooluringi keerukuse tõttu pisut teistsugune, kuid kõik animeeritud vooluringid on suurepärane alus iga osa prototüübi mõistmiseks. Tavaline skeem ja vooluahela skeem on sellised, nagu see on projektis kasutatud trükkplaadil.

PCB -koodi, mis sisaldab KiCad -projekti ja gerber -faile, leiate siit: https://github.com/tmckay1/interactive_coffee_tabl…, juhul kui soovite ise PCB -sid tellida ja sarnase projekti luua. Laudade loomiseks kasutasin NextPCB -d.

Selle tabeli moodustavad põhimõtteliselt kolm erinevat vooluahelat. Esimest me ei käsitle üksikasjalikult ja see on lihtne vooluahel, mis toidab ws2812b LED -e. PWM -andmesignaal saadetakse Arduino -lt ws2812b led -pirnidele ja see juhib, milliseid värve kus näidatakse. Kasutame ws2812b LED -e, kuna need on individuaalselt adresseeritavad, nii et saame juhtida, milliseid LED -e sisse lülitada ja milliseid välja lülitada. Ws2812b LED -e toiteallikaks on 5 V väline toiteallikas, kuna arduino üksi ei piisa kõigi tulede sisselülitamiseks. Lisatud animeeritud skeemil kasutatakse 330 oomi tõmbetakistit, kuid ma ei kasuta seda oma ehituses.

Teine ahel lülitab IR -kiirgurid sisse. See vooluahel kasutab nihkeregistrit, et juhtida darlingtoni massiivi, mis saadab toite IR -kiirgajatele. Nihkeregister on integraallülitus, mis on võimeline saatma HIGH ja LOW signaale mitmele tihvtile vaid väikesest hulgast tihvtidest. Meie puhul kasutame SN74HC595 nihkeregistrit, mida saab juhtida 3 sisendist, kuid mis kontrollib kuni 8 väljundit. Selle arduinoga kasutamise eeliseks on see, et saate ketistada kuni 8 vahetusregistrit järjest (arduino saab hakkama ainult kuni 8 neist). See tähendab, et 64 infrapunakiirguri sisse- ja väljalülitamiseks vajate arduinolt ainult 3 tihvti. Darlingtoni massiiv võimaldab seadet toita välisest allikast, kui sisendsignaal on HIGH, või lülitada selle seadme toide välja, kui sisendsignaal on LOW. Nii et meie näites kasutame ULN2803A darlingtoni massiivi, mis võimaldab 5 V välisel toiteallikal kuni 8 IR -kiirgurit sisse ja välja lülitada. Kasutame IR -kiirgajatega järjestikku 10 oomi takistit, et saada IR -kiirguritest maksimaalne voolutugevus.

Kolmas ahel kasutab multiplekserit fotodioodidelt mitme sisendi vastuvõtmiseks ja saadab väljundi andmesignaalis. Multiplekser on seade, mida kasutatakse mitme sisendi vastuvõtmiseks, millest soovite lugeda, ja selle sisendite lugemiseks on vaja vaid mõnda tihvti. See võib teha ka vastupidist (demultipleks), kuid me ei kasuta seda siin selle rakenduse jaoks. Nii et meie puhul kasutame CD4051B multiplekserit, et võtta vastu kuni 8 signaali fotodioodidelt ja nende signaalide lugemiseks vajame ainult 3 sisendit. Lisaks saame ketistada kuni 8 multiplekserit (arduino saab hakkama ainult kuni 8 -ga). See tähendab, et arduino suudab lugeda 64 fotodioodisignaalist vaid 3 digitaalsest kontaktist. Fotodioodid on suunatud vastupidises suunas, mis tähendab, et selle asemel, et suunata normaalsuunas positiivse juhtme külge positiivse pingeallika külge, omistame negatiivse juhtme positiivsele pingeallikale. See muudab fotodioodid tõhusalt fototakistiteks, mille takistus muutub sõltuvalt vastuvõetud valguse hulgast. Seejärel loome pingejaguri, et lugeda fotodioodide erinevast takistusest sõltuvat pinget, lisades maapinnale väga vastupidava 1 MOhm takisti. See võimaldab meil saada kõrgemat ja madalamat pinget arduinole sõltuvalt sellest, kui palju IR -valgust fotodioodid vastu võtavad.

Ma järgisin enamikku sellest disainist teiselt isikult, kes seda siin tegi: https://www.instructables.com/Infrared-Proximity-S… Sellesse disaini lisasid nad ka 47pF kondensaatori, nagu me teeme, 1Moh takisti vastas kasutatakse fotodioodidega pingejaguri loomiseks. Põhjus, miks ta selle lisas, oli see, et ta kõikus IR -kiirgureid PWM -signaaliga sisse ja välja ning tegi seda fotodioodidelt väikese pingelanguse, kui IR -kiirgurid kohe sisse lülitati. See pani fotodioodid takistust muutma isegi siis, kui objekt ei saanud rohkem infrapunavalgust, kuna infrapunakiirguritel oli sama 5 V toiteallikas kui fotodioodidel. Kondensaatorit kasutati selleks, et veenduda, et infrapunakiirgurite sisse- ja väljalülitamisel pingelangust ei esine. Plaanisin algselt sama strateegiat teha, kuid selle testimiseks jäi aeg otsa, nii et jätsin IR -kiirgurid alati sisse. Tahaksin seda tulevikus muuta, kuid seni, kuni ma koodi ja vooluringi ümber ei kujunda, on praegu trükkplaat loodud nii, et infrapunavalgustid põleksid kogu aeg ja kondensaatorid jätsin igatahes alles. Kui kasutate seda PCB disaini, ei peaks te kondensaatorit vajama, kuid kavatsen tutvustada mõnda muud PCB versiooni, mis aktsepteerib vahetuste registrisse täiendavat sisendit, mis võimaldab teil IR -kiirgureid sisse ja välja lülitada. See säästab palju energiatarbimist.

Arduinoga testimiseks saate vaadata lisatud animeeritud diagramme, et näha prototüübi seadistust. Iga ahela jaoks on ka üksikasjalikum värviline skeem, mis kirjeldab elektrooniliste seadmete seadistust ja suunda. Lisatud PCB skeemil on meil kokku 4 vooluahelat, 2 ahelat, mida kasutatakse infrapunakiirgurite sisselülitamiseks, ja 2 vooluahelat fotodioodidelt lugemiseks. Need on orienteeritud PCB 2 rühmale üksteise kõrval koos rühmaga, mis koosneb 1 IR -kiirgusahelast ja 1 fotodioodiahelast, nii et kaks 8 sõlmega veergu saab paigutada ühte PCB -sse. Samuti aheldame kaks ahelat kokku, nii et kolm arduino tihvti saavad juhtida kahte vahetusregistrit ja 3 täiendavat tihvti saab juhtida kahte plaadil olevat multiplekserit. On olemas täiendav väljundpäis, mis võimaldab ühendada ahela täiendavate trükkplaatide külge.

Siin on mõned ressursid, mida järgisin prototüüpimiseks:

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

Samm: jootke sõlme juhtmed

Solder Juhtmed sõlme
Solder Juhtmed sõlme
Solder Juhtmed sõlme
Solder Juhtmed sõlme
Solder Juhtmed sõlme
Solder Juhtmed sõlme
Solder Juhtmed sõlme
Solder Juhtmed sõlme

Nüüd, kui saate aru, kuidas vooluringi tehakse, jätkake ja jootke juhtmed iga sõlme juurde. Jootsin fotodioodid paralleelselt (kollased ja hallid juhtmed) ja ir -kiirgajaid järjestikku (oranž traat). Seejärel jootsin fotodioodidele paralleelselt pikema kollase juhtme, mis kinnitatakse 5V toiteallika külge, ja sinise juhtme, mis kinnitatakse trükkplaadi fotodioodi sisendisse. Jootsin IR -emitteri ahelasse pika punase juhtme, mida kasutatakse 5 V toiteallikaga ühendamiseks, ja musta juhtme, mis ühendatakse PCB IR -emitteri sisendiga. Tõepoolest tegin juhtmed veidi lühikeseks, nii et aeg sai otsa, nii et lõpuks sain igas veerus ühendada ainult 5 sõlme (7 asemel). Plaanin selle hiljem parandada.

Samm: jootke trükkplaadi komponendid ja kinnitage see plaadile

Jootke trükkplaadi komponendid ja kinnitage see plaadile
Jootke trükkplaadi komponendid ja kinnitage see plaadile
Jootke trükkplaadi komponendid ja kinnitage see plaadile
Jootke trükkplaadi komponendid ja kinnitage see plaadile
Jootke trükkplaadi komponendid ja kinnitage see plaadile
Jootke trükkplaadi komponendid ja kinnitage see plaadile

Märkus. Lisatud pildil olev trükkplaat on esimene minu tehtud versioon, millel puudusid toitesisendid ja -väljundid ning ka sisemine vooluahel. Uus PCB disain parandab selle vea.

Siin peate komponentide jootmiseks PCB -le lihtsalt järgima PCB skeemi ja seejärel, kui see on tehtud, jootma PCB plaadile. 5V toitesignaali kinnitamiseks kasutasin väliseid trükkplaate, mille jagasin kõikidele kollastele ja punastele juhtmetele. Tagantjärele ei vajanud ma nii pikki punaseid ja kollaseid juhtmeid ja oleksin võinud sõlmed omavahel ühendada (selle asemel, et ühendada need ühise välise trükkplaadiga). See on tõesti vähendanud segadust plaadi tagaküljel.

Kuna mul oli 8 rida ws2812b LED -e ja 12 veergu, sain lõpuks 7 rida ja 11 veergu sõlme (kokku 77 sõlme). Idee on kasutada PCB ühte külge ühe sõlmeveeru jaoks ja teist külge teise veeru jaoks. Kuna mul oli 11 veergu, vajasin 6 PCB -d (viimane vajab ainult ühte komponentide rühma). Kuna tegin juhtmed liiga lühikeseks, sain ühendada ainult 55 sõlme, 11 veergu ja 5 rida. Pildilt on näha, et tegin vea ja jootsin toorjuhtmed tahvli külge, mis oleks hea, kui juhtmed oleksid piisavalt õhukesed, aga minu puhul liiga paksud. See tähendas, et mul olid iga IR -kiirguse sisendi ja fotodioodi sisendi jaoks narmendavad juhtmeotsad üksteise lähedal, nii et kogu juhtme lühise tõttu tekkis palju silumist. Tulevikus kasutan pistikuid PCB ühendamiseks plaadi juhtmetega, et vältida lühiseid ja asju puhastada.

Kuna Arduino suudab ainult kuni 8 vahetusregistrit ja multiplekserit aheldada, lõin kaks eraldi ahelat, millest üks võttis esimesed 8 veergu ja teine ülejäänud 3 veergu. Seejärel kinnitasin iga ahela teise PCB -le, millel oli vaid 2 multiplekserit, nii et saaksin lugeda nende multiplekserite multiplekserite andmesignaalide iga ahela arduinoks. Need kaks multiplekserit olid samuti aheldatud. See tähendab, et arduinos kasutati kokku 16 väljundsignaali ja 2 analoogsisendit: 1 väljundsignaal ws2812b LED -ide juhtimiseks, 3 väljundsignaali vahetusregistrite esimese ahela jaoks, 3 väljundsignaali multiplekserite esimese ahela jaoks, 3 väljundsignaali vahetusregistrite teise ahela jaoks, 3 väljundsignaali multiplekserite teise ahela jaoks, 3 väljundsignaali 2 multiplekseri jaoks, mis koondavad iga trükkplaadi andmesignaali, ja lõpuks 2 analoogsisendit iga andmesignaali kohta kahest agregaat multiplekserist.

Samm: vaadake kood üle

Märkus. Lisaks allolevale interaktiivsele koodile kasutasin ws2812b LED -ide jaoks animatsioonide loomiseks kolmanda osapoole teeki. Selle leiate siit:

Minu kasutatava koodi leiate siit:

Ülaosas määratlen arduino tihvtid, mis ühendatakse PCB iga osaga. Seadistusmeetodi puhul seadistan multiplekserite väljundpoldid, lülitan sisse infrapunakiirgurid, seadistan baseVal massiivi, mis jälgib iga fotodioodi ümbritseva valguse näitu, ja lähtestab FastLED, mis kirjutab ws2812b LED -idele. Tsükli meetodil lähtestame ribade ws2812b sisselülitamiseks määratud LED -ide loendi. Seejärel loeme multiplekserite ahelate fotodioodide väärtused ja lülitame sisse ws2812b LED -id, mis peaksid olema sisse lülitatud, kui sõlme fotodioodi näit ületab teatud kindlaksmääratud läve ümbritseva valguse näitude baasväärtusest. Seejärel renderdame valgusdioodid, kui sõlmes peaks toimuma mõni muudatus. Vastasel korral hoiab see silmus, kuni midagi muutub, et asju kiirendada.

Koodi võiks ilmselt täiustada ja ma kavatsen seda teha, kuid pärast eseme lauale asetamist tuled põlevad umbes 1-2 sekundi pärast. Arvan, et põhiprobleem on see, et FastLED võtab laual 96 LED -i kuvamiseks aega ning kood peab tabelist läbi lugema ja 77 sisendit lugema. Proovisin seda koodi 8 LED -iga ja leidsin, et see on peaaegu kohe, kuid uurin LED -ide magusat kohta, mis selle koodiga töötavad ja on peaaegu kohesed, ning parandan koodi.

Samm: lülitage Arduino sisse

Lülitage Arduino sisse!
Lülitage Arduino sisse!
Lülitage Arduino sisse!
Lülitage Arduino sisse!
Lülitage Arduino sisse!
Lülitage Arduino sisse!

Nüüd pole vaja teha muud, kui lülitada arduino sisse ja näha tabeli funktsiooni! Kasutades eelnevalt mainitud animatsiooniteeki, saate panna lahedaid ws2812b LED -animatsioone või panna kohvilaua koodi ja näha, kuidas see igas jaotises süttib. Kommenteerige julgelt kõiki küsimusi või arvamusi ja püüan teiega õigeaegselt ühendust võtta. Tervist!

Soovitan: