Satura rādītājs:

Arduino interaktīvais LED kafijas galdiņš: 6 soļi (ar attēliem)
Arduino interaktīvais LED kafijas galdiņš: 6 soļi (ar attēliem)

Video: Arduino interaktīvais LED kafijas galdiņš: 6 soļi (ar attēliem)

Video: Arduino interaktīvais LED kafijas galdiņš: 6 soļi (ar attēliem)
Video: LED Light Coffee Table! We love how this project turned out! 😊 LED Lights coffeetable table techno 2024, Jūlijs
Anonim
Image
Image
Arduino interaktīvais LED kafijas galdiņš
Arduino interaktīvais LED kafijas galdiņš

Es izveidoju interaktīvu kafijas galdiņu, kas zem objekta ieslēdz gaismas, kad objekts ir novietots virs galda. Iedegsies tikai gaismas diodes, kas atrodas zem šī objekta. Tas tiek darīts, efektīvi izmantojot tuvuma sensorus, un, kad tuvuma sensors uztver, ka objekts ir pietiekami tuvu, tas iedegs mezglu zem šī objekta. Tas arī izmanto Arduino, lai uzliktu animācijas, kurām nav nepieciešami tuvuma sensori, bet pievieno patiešām foršu efektu, kas man vienkārši patīk.

Tuvuma sensori sastāv no fotodiodēm un IR izstarotājiem. Emitētāji izmanto infrasarkano gaismu (ko cilvēka acs neredz), lai izgaismotu gaismu no galda, un fotodiodes saņem no objekta atstaroto infrasarkano gaismu. Jo vairāk gaismas tiek atstarots (jo tuvāk objekts), jo vairāk spriegums svārstās no fotodiodēm. To izmanto kā indikatoru, lai norādītu, kurš mezgls iedegas. Mezgli ir ws2812b LED kolekcija un tuvuma sensors.

Pievienotais video aptver visu veidošanas procesu, savukārt tālāk es izklāstu vairāk informācijas.

Piegādes

  1. ws2812b LED spuldzes -
  2. 5V barošanas avots -
  3. Jebkurš Arduino es izmantoju 2560 -
  4. Fotodiodes
  5. IR emitētāji
  6. 10 omi rezistori
  7. 1 MOhm rezistori
  8. 47 pF kondensatori
  9. CD4051B multipleksori
  10. SN74HC595 maiņu reģistri
  11. ULN2803A Dārlingtonas masīvi
  12. Jebkuru substrātu, ko izmantot kā lielu LED dēlīti, es izmantoju papīra kompozītmateriālu dēli no mājas depo

1. darbība: izveidojiet dēli un ievietojiet gaismas diodes

Izveidojiet paneli un ievietojiet gaismas diodes
Izveidojiet paneli un ievietojiet gaismas diodes
Izveidojiet paneli un ievietojiet gaismas diodes
Izveidojiet paneli un ievietojiet gaismas diodes
Izveidojiet paneli un ievietojiet gaismas diodes
Izveidojiet paneli un ievietojiet gaismas diodes
Izveidojiet paneli un ievietojiet gaismas diodes
Izveidojiet paneli un ievietojiet gaismas diodes

Pirmā lieta, ko es izdarīju, bija izveidot tāfeli, kurā būs gaismas diodes, kuras mēs ievietosim kafijas galdiņā. Es izmantoju papīra kompozītmateriālu tāfeles gabalu no mājas depo un sagriezu to atbilstoši kafijas galdiņa izmēriem. Pēc dēļa sagriešanas izmēros es izurbju visus caurumus, kur dodas gaismas diodes. Plātnei bija 8 rindas un 12 kolonnas ws2812b gaismas diodes, kas atdalītas 3 collu attālumā viena no otras, un tās tika piestiprinātas serpentīna veidā. Es izmantoju karstu līmi, lai tos nostiprinātu vietā.

Man arī bija jāizurbj caurumi centrā, kas kļūs par mezglu: 4 ws2812b gaismas diodes, kas veido kvadrātu, 2 fotodiodes un 2 IR izstarotāji mazākā kvadrātā tā centrā. Šie 4 caurumi mezgla centrā būtu plankumi fotodiodēm un izstarotājiem (2 no tiem). Es mainīju tos, lai nodrošinātu maksimālu ekspozīciju, un ievietoju tos apmēram 1 collas attālumā katra mezgla centrā. Man nevajadzēja tos karsti pielīmēt vietā, es vienkārši saliecu vadus otrā pusē, lai pārliecinātos, ka tie neiznāks otrā pusē. Es arī pārliecinājos, ka pozitīvos un negatīvos galus saliek noteiktos virzienos, lai tie ķēdē būtu pareizi orientēti. Visi pozitīvie vadi bija plāksnes aizmugures kreisajā pusē, bet visi negatīvie - tāfeles labajā pusē.

2. darbība. Izprotiet ķēdi

Izprotiet ķēdi
Izprotiet ķēdi
Izprotiet ķēdi
Izprotiet ķēdi
Izprotiet ķēdi
Izprotiet ķēdi

Piezīme. Visi animētie zīmējumi nav precīzi izpildīti (dažas arduino tapas ir atšķirīgas, un es pāris reizes pievienoju ķēdi, par to vēlāk). Gala rezultāts bija nedaudz atšķirīgs ķēdes sarežģītības dēļ, taču visas animētās shēmas kalpo kā lieliska bāze, lai saprastu, kā prototipēt katru daļu. Parastā shēma un shēma ir tāda, kāda tā ir projektā izmantotajā PCB.

PCB kodu, kas satur KiCad projektu un Gerber failus, var atrast šeit: https://github.com/tmckay1/interactive_coffee_tabl…, ja vēlaties pasūtīt PCB un izveidot līdzīgu projektu. Dēļu izveidošanai es izmantoju NextPCB.

Būtībā ir trīs dažādas shēmas, kas veido šo tabulu. Pirmais, ko mēs sīkāk neaprakstīsim, ir vienkārša shēma, kas nodrošina ws2812b gaismas diodes. PWM datu signāls tiek nosūtīts no Arduino uz led spuldzēm ws2812b un kontrolē, kādas krāsas tiek parādītas. Mēs izmantojam ws2812b gaismas diodes, jo tās ir individuāli adresējamas, tāpēc mēs varēsim kontrolēt, kuras no gaismas diodēm ieslēgt un kuras izslēgt. Ws2812b gaismas diodes darbina 5 V ārējs barošanas avots, jo arduino vien nepietiek jaudas, lai ieslēgtu visas gaismas. Pievienotajā animētajā diagrammā viņi izmanto 330 omu pievilkšanas rezistoru, tomēr es to neizmantoju savā būvē.

Otrā ķēde ieslēdz IR izstarotājus. Šī shēma izmanto maiņu reģistru, lai kontrolētu darlingtonu masīvu, kas nosūta jaudu IS izstarotājiem. Maiņu reģistrs ir integrēta shēma, kas spēj nosūtīt HIGH un LOW signālus uz vairākām tapām tikai no neliela kontaktu daudzuma. Mūsu gadījumā mēs izmantojam SN74HC595 maiņu reģistru, ko var vadīt no 3 ieejām, bet kontrolē līdz 8 izejām. Šīs ar arinoino izmantošanas priekšrocība ir tā, ka jūs varat izveidot ķēdi līdz 8 maiņu reģistriem pēc kārtas (arduino var apstrādāt tikai līdz 8 no tiem). Tas nozīmē, ka jums ir nepieciešamas tikai 3 tapas no arduino, lai ieslēgtu un izslēgtu 64 IR izstarotājus. Darlington masīvs ļauj barot ierīci no ārēja avota, ja ieejas signāls ir HIGH, vai izslēgt šīs ierīces barošanu, ja ieejas signāls ir LOW. Tātad mūsu piemērā mēs izmantojam ULN2803A darlington masīvu, kas ļauj 5 V ārējam barošanas avotam ieslēgt un izslēgt līdz 8 IS izstarotājiem. Mēs izmantojam 10 omu rezistoru ar IR izstarotājiem virknē, lai iegūtu maksimālo strāvas stiprumu no IS izstarotājiem.

Trešā ķēde izmanto multipleksoru, lai saņemtu vairākas ievades no fotodiodēm, un nosūta izvadi datu signālā. Multiplekseris ir ierīce, ko izmanto, lai ņemtu vairākas ieejas, no kurām vēlaties lasīt, un no šīm ievadēm ir vajadzīgas tikai dažas tapas. Tas var arī rīkoties pretēji (demultiplekss), taču mēs šeit to neizmantojam šim lietojumam. Tātad mūsu gadījumā mēs izmantojam CD4051B multipleksoru, lai uzņemtu līdz 8 signāliem no fotodiodēm, un mums ir vajadzīgas tikai 3 ieejas, lai nolasītu no šiem signāliem. Turklāt mēs varam izveidot ķēdi līdz 8 multipleksoriem (arduino var apstrādāt tikai līdz 8 no tiem). Tas nozīmē, ka arduino var nolasīt no 64 fotodiodes signāliem tikai no 3 digitālajām tapām. Fotodiodes ir vērstas pretēji novirzītām, kas nozīmē, ka tā vietā, lai būtu orientētas normālā virzienā ar pozitīvo vadu, kas pievienots pozitīvajam sprieguma avotam, mēs piešķiram negatīvo vadu pozitīvajam sprieguma avotam. Tas efektīvi pārvērš fotodiodes par fotorezistoriem, kuru pretestība mainās atkarībā no saņemtā gaismas daudzuma. Pēc tam mēs izveidojam sprieguma dalītāju, lai nolasītu spriegumu, kas atkarīgs no fotodiodes mainīgās pretestības, pievienojot zemei ļoti izturīgu 1 MOhm rezistoru. Tas ļauj mums saņemt augstāku un zemāku spriegumu arduino atkarībā no tā, cik daudz gaismas saņem fotodiodes.

Lielāko daļu šī dizaina es sekoju citai personai, kas to izdarīja šeit: https://www.instructables.com/Infrared-Proximity-S… Šajā dizainā viņi pievienoja arī 47pF kondensatoru, kā mēs darām, pretī 1 MOhm rezistoram izmanto, lai izveidotu sprieguma dalītāju ar fotodiodēm. Iemesls, kāpēc viņš to piebilda, bija tāpēc, ka viņš ieslēdza un izslēdza IR izstarotājus ar PWM signālu, un, to darot, fotodiodes izraisīja nelielu sprieguma kritumu, kad IS emitētāji tika nekavējoties ieslēgti. Tas lika fotodiodēm mainīt pretestību pat tad, ja tas no objekta nesaņēma vairāk IR gaismas, jo IS izstarotājiem bija tāds pats 5 V barošanas avots kā fotodiodēm. Kondensators tika izmantots, lai pārliecinātos, ka, ieslēdzot un izslēdzot IR izstarotājus, nav sprieguma krituma. Sākotnēji es plānoju īstenot šo pašu stratēģiju, taču man pietrūka laika, lai to pārbaudītu, tāpēc tā vietā es atstāju IR izstarotājus vienmēr ieslēgtus. Nākotnē es gribētu to mainīt, bet līdz brīdim, kad es pārveidoju kodu un ķēdi, šobrīd PCB ir veidots tā, lai IR gaismas būtu ieslēgtas visu laiku, un es tomēr saglabāju kondensatorus. Ja izmantojat šo PCB dizainu, jums nevajadzētu izmantot kondensatoru, taču es iepazīstināšu ar citu PCB versiju, kas maiņu reģistrā pieņem papildu ievadi, kas ļaus jums ieslēgt un izslēgt IS izstarotājus. Tas ievērojami ietaupīs enerģijas patēriņu.

Lai pārbaudītu arduino, varat pārbaudīt pievienotajās animētajās diagrammās prototipa iestatījumus. Katrai shēmai ir arī detalizētāka krāsaina shēma, kurā aprakstīta elektronisko ierīču uzstādīšana un orientācija. Pievienotajā PCB shēmā mums ir 4 kopējās shēmas, 2 shēmas, ko izmanto, lai ieslēgtu IR izstarotājus, un 2 shēmas, lai nolasītu no fotodiodēm. Tie ir orientēti uz PCB 2 grupām blakus viens otram ar grupu, kas sastāv no 1 IR izstarotāja ķēdes un 1 fotodiodes ķēdes, tā ka 2 kolonnas pa 8 mezgliem var ievietot vienā PCB. Mēs arī savienojam ķēdes abas shēmas kopā, tāpēc trīs tapas no arduino var kontrolēt divus maiņu reģistrus, un 3 papildu tapas var kontrolēt abus kuģa multipleksorus. Ir papildu izejas galvene, lai varētu savienot ķēdi ar papildu PCB.

Šeit ir daži resursi, kurus es sekoju prototipēšanai:

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

3. solis: lodējiet vadus mezglā

Lodēt vadus mezglā
Lodēt vadus mezglā
Lodēt vadus mezglā
Lodēt vadus mezglā
Lodēt vadus mezglā
Lodēt vadus mezglā
Lodēt vadus mezglā
Lodēt vadus mezglā

Tagad, kad jūs saprotat, kā tiek veidota ķēde, dodieties uz priekšu un pielodējiet vadus pie katra mezgla. Es paralēli lodēju fotodiodes (dzelteni un pelēki vadi) un sērijas izstarotājus (oranža stieple). Pēc tam paralēli lodēju pie fotodiodēm garāku dzeltenu vadu, kas tiks pievienots 5V barošanas avotam, un zilu vadu, kas tiks pievienots PCB fotodiodes ieejai. Es pielodēju garu sarkanu vadu pie IR emitētāja ķēdes, ko izmantos, lai izveidotu savienojumu ar 5 V barošanas avotu, un melnu vadu, kas tiks savienots ar PCB IR emitētāja ieeju. Es faktiski padarīju vadus nedaudz līdz īsiem, tāpēc beidzās laiks, tāpēc beigās varēju savienot tikai 5 mezglus katrā kolonnā (nevis 7). Es plānoju to labot vēlāk.

4. solis: pielodējiet PCB komponentus un pievienojiet to plāksnei

Lodējiet PCB komponentus un pievienojiet to plāksnei
Lodējiet PCB komponentus un pievienojiet to plāksnei
Lodējiet PCB komponentus un pievienojiet to plāksnei
Lodējiet PCB komponentus un pievienojiet to plāksnei
Lodējiet PCB komponentus un pievienojiet to plāksnei
Lodējiet PCB komponentus un pievienojiet to plāksnei

Piezīme. Pievienotajā attēlā esošā PCB ir mana pirmā versija, kurai nebija strāvas ieejas un izejas, kā arī katras iekšējās ķēdes izejas ķēdes. Jaunais PCB dizains šo kļūdu izlabo.

Šeit jums vienkārši jāievēro PCB shēma, lai komponentus pielodētu pie PCB, un pēc tam, kad tas ir izdarīts, pielodējiet PCB pie tāfeles. Es izmantoju ārējās shēmas plates, lai pievienotu 5V strāvas signālu, ko izplatīju visiem dzeltenajiem un sarkanajiem vadiem. Atceroties, man nebija vajadzīgi tik gari sarkani un dzelteni vadi, un es varēju savienot mezglus savā starpā (nevis savienot tos ar kopēju ārējo shēmas plati). Tas patiešām būs samazinājis jucekļa daudzumu dēļa aizmugurē.

Tā kā man bija 8 rindas ws2812b gaismas diodes un 12 kolonnas, es saņēmu 7 rindas un 11 kolonnu mezglus (kopā 77 mezgli). Ideja ir izmantot vienu PCB pusi vienai mezglu kolonnai un otru pusi citai kolonnai. Tā kā man bija 11 kolonnas, man vajadzēja 6 PCB (pēdējai vajadzēja tikai vienu sastāvdaļu grupu). Tā kā vadus padarīju pārāk īsus, es varēju savienot tikai 55 mezglus, 11 kolonnas un 5 rindas. Jūs varat redzēt attēlā, es pieļāvu kļūdu un pielodēju neapstrādātus vadus pie tāfeles, kas būtu labi, ja vadi būtu pietiekami plāni, bet manā gadījumā tie bija pārāk biezi. Tas nozīmēja, ka man bija sarindojušies vadu gali ļoti tuvu viens otram katrai IR emitētāja ieejai un fotodiodes ieejai, tāpēc no visiem vadu īssavienojumiem notika daudz atkļūdošanas. Nākotnē es izmantošu savienotājus, lai savienotu PCB ar paneļa vadiem, lai izvairītos no šortiem un sakoptu lietas.

Tā kā Arduino var tikai izveidot ķēdi līdz 8 maiņu reģistriem un multipleksoriem, es izveidoju divas atsevišķas ķēdes, no kurām viena aizņem pirmās 8 kolonnas un otra - pārējās 3 kolonnas. Pēc tam es pievienoju katru ķēdi citai PCB, kurai bija tikai 2 multipleksori, lai es varētu nolasīt katru multipleksora datu signālu ķēdi no šiem diviem multipleksoriem arduino. Šie divi multipleksori tika arī pieķēdēti. Tas nozīmē, ka arduino kopā tika izmantoti 16 izejas signāli un 2 analogās ieejas: 1 izejas signāls ws2812b LED vadīšanai, 3 izejas signāli maiņas reģistru pirmajai ķēdei, 3 izejas signāli multipleksoru pirmajai ķēdei, 3 izejas signāli maiņu reģistru otrajai ķēdei, 3 izejas signāli multipleksoru otrajai ķēdei, 3 izejas signāli 2 multipleksoriem, kas apkopo katru PCB datu signālu, un visbeidzot 2 analogās ieejas katram datu signālam no 2 apkopotā multipleksora.

5. darbība: pārskatiet kodu

Piezīme. Papildus zemāk redzamajam interaktīvajam kodam es izmantoju trešās puses bibliotēku, lai radītu ws2812b LED animācijas. To varat atrast šeit:

Manu izmantoto kodu varat atrast šeit:

Augšpusē es definēju arduino tapas, kas savienosies ar katru PCB daļu. Iestatīšanas metodē es iestatīju multipleksoru izejas tapas, ieslēdzu IS izstarotājus, iestatīju baseVal masīvu, kas izseko apkārtējās gaismas rādījumus katrai fotodiodei, un inicializē FastLED, kas rakstīs uz ws2812b diodēm. Cilpas metodē mēs atiestatām to LED sarakstu, kas ir piešķirti ieslēgšanai joslā ws2812b. Tad mēs nolasām vērtības no multipleksoru ķēžu fotodiodēm un ieslēdzam ws2812b gaismas diodes, kurām vajadzētu iedegties, ja nolasījums no fotodiodes mezglā pārsniedz noteiktu slieksni no apkārtējās gaismas rādījumu bāzes vērtības. Pēc tam mēs renderējam gaismas diodes, ja mezglā, kuram vajadzētu būt ieslēgtam, ir kādas izmaiņas. Pretējā gadījumā tas turpina darboties, līdz kaut kas mainās, lai paātrinātu lietas.

Kods, iespējams, varētu tikt uzlabots, un es apsveru iespēju to darīt, taču pēc tam, kad gaismas tiek ieslēgtas pēc tam, kad uz galda ir novietots apgaismojums, tiek aizkavēta aptuveni 1-2 sekundes. Es uzskatu, ka pamatproblēma ir tāda, ka FastLED prasa zināmu laiku, lai uz galda parādītu 96 gaismas diodes, un kodam ir jāatšķiras un jānolasa 77 ievades no tabulas. Es mēģināju šo kodu ar 8 gaismas diodēm un atklāju, ka tas ir gandrīz tūlītējs, bet es meklēju gaismas diodes, kas darbosies ar šo kodu un būs gandrīz tūlītējas, kā arī uzlabos kodu.

6. solis: ieslēdziet Arduino

Ieslēdz Arduino!
Ieslēdz Arduino!
Ieslēdz Arduino!
Ieslēdz Arduino!
Ieslēdz Arduino!
Ieslēdz Arduino!

Tagad viss, kas jums jādara, ir ieslēgt arduino un redzēt galda funkciju! Izmantojot iepriekš minēto animāciju bibliotēku, varat uzlikt dažas lieliskas ws2812b vadītas animācijas, vai arī uzlikt kafijas galdiņa kodu un redzēt, kā tas iedegas katrā sadaļā. Jūtieties brīvi komentēt visus jautājumus vai viedokļus, un es centīšos ar jums sazināties savlaicīgi. Priekā!

Ieteicams: