Talaan ng mga Nilalaman:

Arduino Interactive LED Coffee Table: 6 na Hakbang (na may Mga Larawan)
Arduino Interactive LED Coffee Table: 6 na Hakbang (na may Mga Larawan)

Video: Arduino Interactive LED Coffee Table: 6 na Hakbang (na may Mga Larawan)

Video: Arduino Interactive LED Coffee Table: 6 na Hakbang (na may Mga Larawan)
Video: DIY Interactive LED Coffee Table - Arduino Project 2024, Hulyo
Anonim
Image
Image
Arduino Interactive LED Coffee Table
Arduino Interactive LED Coffee Table

Gumawa ako ng isang interactive na talahanayan ng kape na nagpapasara sa mga ilaw na ilaw sa ilalim ng isang bagay, kapag ang bagay ay inilalagay sa ibabaw ng mesa. Ang mga leds lamang na nasa ilalim ng bagay na iyon ang magpapasindi. Ginagawa ito sa pamamagitan ng mabisang paggamit ng mga sensor ng proximity, at kapag nadama ng proximity sensor na ang isang bagay ay sapat na malapit, magsisindi ito ng isang node sa ilalim ng bagay na iyon. Gumagamit din ito ng isang Arduino upang maglagay ng mga animasyon na hindi kailangan ng mga proximity sensor, ngunit magdagdag ng isang talagang cool na epekto na gusto ko lang.

Ang mga sensor ng kalapitan ay binubuo ng mga photodiode at IR emitter. Gumagamit ang mga emitter ng infrared light (na hindi nakikita ng mata ng tao) upang lumiwanag ang ilaw sa mesa, at matatanggap ng mga photodiode ang infrared light na sumasalamin sa isang bagay. Ang mas maraming ilaw na nakalarawan (mas malapit ang bagay), mas maraming boltahe ang nagbabago nagmumula sa mga photodiode. Ginagamit ito bilang isang tagapagpahiwatig upang sabihin kung aling node ang dapat sindihan. Ang mga node ay isang koleksyon ng ws2812b leds at isang proximity sensor.

Ang naka-attach na video ay napupunta sa buong proseso ng pagbuo, habang binabalangkas ko ang higit pang mga detalye sa ibaba.

Mga gamit

  1. ws2812b LED Bulbs -
  2. 5V Power Supply -
  3. Anumang Arduino ginamit ko ang 2560 -
  4. Mga Photodiode
  5. Mga Emitter ng IR
  6. 10 Mga resistensya ng Ohms
  7. 1 Mga resistensya ng MOhms
  8. 47 pF capacitor
  9. CD4051B Multiplexers
  10. Mga Rehistro ng Shift ng SN74HC595
  11. ULN2803A Darlington Arrays
  12. Anumang substrate na gagamitin bilang isang malaking board para sa mga leds, gumamit ako ng isang board composite board mula sa home depot

Hakbang 1: Lumikha ng Lupon at Ipasok ang mga LED

Lumikha ng Lupon at Ipasok ang mga LED
Lumikha ng Lupon at Ipasok ang mga LED
Lumikha ng Lupon at Ipasok ang mga LED
Lumikha ng Lupon at Ipasok ang mga LED
Lumikha ng Lupon at Ipasok ang mga LED
Lumikha ng Lupon at Ipasok ang mga LED
Lumikha ng Lupon at Ipasok ang mga LED
Lumikha ng Lupon at Ipasok ang mga LED

Ang unang ginawa ko ay lumikha ng board na maglalaman ng mga leds na ilalagay namin sa loob ng talahanayan ng kape. Gumamit ako ng isang piraso ng board composite board mula sa home depot at pinutol ito sa tamang sukat para sa talahanayan ng kape na mayroon ako. Matapos i-cut ang board sa laki, binarena ko ang lahat ng mga butas kung saan pupunta ang mga leds. Ang board mismo ay mayroong 8 mga hilera at 12 mga haligi ng ws2812b leds na pinaghiwalay ng 3 pulgada ang layo, at nakalakip sila sa isang pattern ng ahas. Gumamit ako ng mainit na pandikit upang mai-secure ang mga ito sa lugar.

Kailangan ko ring mag-drill ng mga butas sa gitna ng kung ano ang magiging node: 4 ws2812b leds na bumubuo sa isang parisukat, 2 diode ng larawan at 2 IR emitter sa isang mas maliit na parisukat sa gitna nito. Ang mga 4 na butas sa gitna ng node ay ang mga spot para sa mga photodiode at ir emitter (2 sa bawat isa). Pinagpalit-palitan ko sila upang matiyak ang sobrang pagkakalantad, at inilagay ang mga ito ng halos 1 pulgada sa gitna ng bawat node. Hindi ko kailangang maiinit ang pandikit sa mga ito, ibinaluktot ko lamang ang mga lead sa kabilang panig upang matiyak na hindi sila lalabas sa kabilang panig. Tiniyak ko rin na yumuko ang positibo at negatibong mga dulo sa ilang mga direksyon, upang ang mga ito ay oriented nang tama sa circuit. Ang lahat ng mga positibong lead ay nasa kaliwang bahagi ng likod ng board, habang ang lahat ng mga negatibong lead ay nasa kanang bahagi ng board.

Hakbang 2: Maunawaan ang Circuit

Maunawaan ang Circuit
Maunawaan ang Circuit
Maunawaan ang Circuit
Maunawaan ang Circuit
Maunawaan ang Circuit
Maunawaan ang Circuit

Tandaan: Ang lahat ng mga animated na guhit ay hindi eksakto sa pagpapatupad (ang ilang mga arduino na pin ay magkakaiba, at ang daisy chain ko ay ilan, higit pa sa paglaon). Ang huling resulta ay medyo naiiba dahil sa pagiging kumplikado ng circuit, ngunit ang lahat ng mga animated na circuit ay nagsisilbing isang mahusay na base upang maunawaan kung paano i-prototype ang bawat bahagi. Ang regular na eskematiko at circuit diagram ay tulad ng nasa PCB na ginamit sa proyekto.

Ang PCB code na naglalaman ng proyekto ng KiCad at mga gerber file ay matatagpuan dito: https://github.com/tmckay1/interactive_café_tabl…, kung sakaling nais mong mag-order ang mga PCB ng iyong sarili at lumikha ng isang katulad na proyekto. Ginamit ko ang NextPCB upang lumikha ng mga board.

Karaniwan mayroong tatlong magkakaibang mga circuit na bumubuo sa talahanayan na ito. Ang una ay hindi namin lalagyan nang detalyado at isang simpleng circuit na nagpapagana sa ws2812b leds. Ang isang signal ng data ng PWM ay ipinadala mula sa Arduino papunta sa ws2812b led bombilya at kinokontrol kung anong mga kulay ang ipinapakita kung saan. Gumagamit kami ng ws2812b leds dahil sila ay isa-isang matutugunan, kaya makokontrol namin kung alin sa mga leds ang i-on, at kung alin ang papatayin. Ang ws2812b leds ay pinalakas ng isang 5V panlabas na mapagkukunan ng lakas, dahil ang arduino lamang ay walang sapat na lakas upang i-on ang lahat ng mga ilaw. Sa animated na diagram na nakakabit gumagamit sila ng isang pullup risistor ng 330 Ohms, subalit hindi ko iyon ginagamit sa aking build.

Ang ikalawang circuit ay binubuksan ang mga emitter ng IR. Gumagamit ang circuit na ito ng shift register upang makontrol ang isang darlington array na nagpapadala ng lakas sa mga emitter ng IR. Ang isang rehistro ng shift ay isang integrated circuit na nakapagpadala ng TAAS at MABABANG mga signal sa maraming mga pin mula lamang sa isang maliit na halaga ng mga pin. Sa aming kaso gumagamit kami ng isang rehistro ng shift ng SN74HC595 na magagawang kontrolin mula sa 3 mga input, ngunit kinokontrol ang hanggang sa 8 mga output. Ang pakinabang ng paggamit nito sa arduino ay maaari kang mag-daisy chain hanggang sa 8 shift register sa isang hilera (ang arduino ay makakaya lamang ng hanggang 8 sa kanila). Nangangahulugan ito na kailangan mo lamang ng 3 mga pin mula sa arduino upang i-on at i-off ang 64 IR emitter. Nagbibigay-daan sa iyo ang array ng darlington na paganahin ang isang aparato mula sa isang panlabas na mapagkukunan kung ang input signal ay TAAS, o patayin ang kuryente para sa aparatong iyon kung ang input signal ay mababa. Kaya't sa aming halimbawa, gumagamit kami ng isang ULN2803A darlington array, na nagbibigay-daan sa isang 5V panlabas na mapagkukunan ng kapangyarihan upang mag-on at off hanggang sa 8 ng mga IR emitter. Gumagamit kami ng isang 10 Ohm risistor na may mga IR emitter sa serye upang makakuha ng maximum na amperage mula sa mga IR emitter.

Ang pangatlong circuit ay gumagamit ng isang multiplexer upang makatanggap ng maraming mga input mula sa mga photodiode, at ipinapadala ang output sa isang signal ng data. Ang multiplexer ay isang aparato na ginagamit upang kumuha ng maraming mga input na nais mong basahin, at kailangan lamang ng ilang mga pin upang mabasa mula sa mga input na iyon. Maaari rin itong gawin ang kabaligtaran (demultiplex), ngunit hindi namin ito ginagamit para sa application na ito dito. Kaya't sa aming kaso gumagamit kami ng isang CD4051B multiplexer upang kumuha ng hanggang 8 signal mula sa mga photodiode, at kailangan lamang namin ng 3 mga input upang mabasa mula sa mga signal na iyon. Dagdag pa maaari naming daisy chain hanggang sa 8 multiplexer (ang arduino ay maaari lamang hawakan hanggang 8 sa kanila). Nangangahulugan ito na ang arduino ay maaaring basahin mula sa 64 ng mga signal ng photodiode mula sa 3 digital pin lamang. Ang mga photodiode ay nakatuon sa reverse bias, na nangangahulugang sa halip na nakatuon sa normal na direksyon na may positibong tingga na nakakabit sa positibong mapagkukunan ng boltahe, itinatalaga namin ang negatibong tingga sa positibong mapagkukunan ng boltahe. Mabisa nitong ginawang mga resistors ng larawan ang mga photodiode, na nagbabago sa paglaban depende sa dami ng ilaw na natatanggap nito. Lumilikha kami pagkatapos ng isang divider ng boltahe upang mabasa ang isang boltahe na nakasalalay sa iba't ibang paglaban ng mga photodiode sa pamamagitan ng pagdaragdag ng isang lubos na lumalaban na 1 MOhms risistor sa lupa. Pinapayagan kaming makatanggap ng mas mataas at mas mababang mga boltahe sa arduino na umaasa sa kung magkano ang ilaw ng IR na natanggap ng mga photodiode.

Sinundan ko ang karamihan sa disenyo na ito mula sa ibang tao na ginawa ito dito: https://www.instructables.com/Infrared-Proximity-S… Sa disenyo na iyon ay nagdagdag din sila ng 47pF capacitor, tulad ng ginagawa namin, sa tapat ng 1 MOhm resistor ginamit upang likhain ang boltahe na divider kasama ang mga photodiode. Ang dahilan kung bakit niya ito idinagdag ay dahil binabago at binabago niya ang mga IR emitter gamit ang isang signal ng PWM at ginagawa ito ng isang maliit na boltahe na drop mula sa mga photodiode nang agad na nakabukas ang mga IR emitter. Ginawa nito ang mga diode ng larawan na baguhin ang paglaban kahit na hindi ito nakakatanggap ng mas maraming ilaw ng IR mula sa isang bagay dahil ibinahagi ng mga IR emitter ang parehong mapagkukunang 5V na kuryente tulad ng mga photodiode. Ginamit ang capacitor upang matiyak na walang pagbagsak ng boltahe nang nakabukas at patayin ang mga IR emitter. Orihinal kong binalak na gawin ang parehong diskarte na ito, ngunit naubusan ng oras upang subukan ito, kaya sa halip ay iniwan ko palagi ang mga IR emitter. Nais kong baguhin ito sa hinaharap, ngunit hanggang sa muling idisenyo ko ang code at circuit, sa ngayon ang PCB ay idinisenyo upang mai-on ang mga ilaw ng IR sa lahat ng oras, at itinago ko pa rin ang mga capacitor. Hindi mo dapat kailanganin ang capacitor kung ginagamit mo ang disenyo ng PCB na ito, ngunit magpapakilala ako ng isa pang bersyon ng PCB na tumatanggap ng isang karagdagang input sa rehistro ng paglilipat na magpapahintulot sa iyo na baguhin ang mga IR emitter at i-off. Makakatipid ito ng malaki sa pagkonsumo ng kuryente.

Maaari mong suriin ang mga animated na diagram na nakakabit para sa isang pag-setup ng prototype para sa pagsubok sa iyong arduino. Mayroon ding isang mas detalyadong may kulay na eskematiko para sa bawat circuit na binabalangkas ang pag-set up at oryentasyon ng mga elektronikong aparato. Sa naka-attach na eskematiko ng PCB, mayroon kaming 4 na kabuuang mga circuit, 2 circuit na ginamit upang i-on ang mga IR emitter, at 2 circuit upang mabasa mula sa mga photodiode. Nakatuon ang mga ito sa mga pangkat ng PCB 2 sa tabi ng bawat isa na may isang pangkat na binubuo ng 1 IR emitter circuit at 1 photodiode circuit, upang ang 2 haligi ng 8 node ay maaaring ilagay sa isang solong PCB. Pinagsama rin namin ang kadena ng dalawang mga circuit nang magkasama, kaya ang tatlong mga pin mula sa arduino ay maaaring makontrol ang dalawang rehistro ng shift, at 3 karagdagang mga pin ang maaaring makontrol ang dalawang multiplexer sa board. Mayroong isang karagdagang output header upang ma-daisy chain sa mga karagdagang PCB.

Narito ang ilang mga mapagkukunan na sinundan ko para sa prototyping:

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

Hakbang 3: Mga Wire ng Solder sa Node

Mga Solder Wires sa Node
Mga Solder Wires sa Node
Mga Solder Wires sa Node
Mga Solder Wires sa Node
Mga Solder Wires sa Node
Mga Solder Wires sa Node
Mga Solder Wires sa Node
Mga Solder Wires sa Node

Ngayon na naiintindihan mo kung paano ginawa ang circuit, magpatuloy at maghinang ng mga wire sa bawat node. In-solder ko ang mga photodiode nang kahanay (dilaw at kulay-abong mga wires) at ang mga iriter em sa serye (orange wire). Pagkatapos ay hinangin ko ang isang mas mahabang dilaw na kawad sa mga photodiode nang kahanay na ikakabit sa mapagkukunang 5V na kuryente, at isang asul na kawad na ikakabit sa input ng photodiode ng pcb. Naghinang ako ng isang mahabang pulang kawad sa IR emitter circuit na gagamitin upang kumonekta sa 5V na mapagkukunan ng kuryente at isang itim na kawad na makakonekta sa IR emitter input ng PCB. Talagang ginawa ko ang mga wire nang kaunti sa maikling maubusan ng oras, kaya maaari ko lamang ikonekta ang 5 ng mga node sa bawat haligi sa dulo (sa halip na 7). Plano kong ayusin ito mamaya.

Hakbang 4: Paghinang ng mga Bahagi ng PCB at Ilakip Ito sa Lupon

Paghinang ng mga Bahagi ng PCB at Ilakip Ito sa Lupon
Paghinang ng mga Bahagi ng PCB at Ilakip Ito sa Lupon
Paghinang ng mga Bahagi ng PCB at Ilakip Ito sa Lupon
Paghinang ng mga Bahagi ng PCB at Ilakip Ito sa Lupon
Paghinang ng mga Bahagi ng PCB at Ilakip Ito sa Lupon
Paghinang ng mga Bahagi ng PCB at Ilakip Ito sa Lupon

Tandaan: Ang PCB sa naka-attach na larawan ay ang unang bersyon na ginawa ko na walang mga input at output ng kuryente at isang daisy chain din para sa bawat panloob na circuit. Inaayos ng bagong disenyo ng PCB ang pagkakamaling ito.

Narito kailangan mo lamang sundin ang iskema ng PCB upang maghinang ng mga bahagi sa PCB at pagkatapos ay tapos na, solder ang PCB sa board. Gumamit ako ng mga panlabas na circuit board upang ikabit ang 5V signal signal, na ipinamahagi ko sa lahat ng mga dilaw at pulang wire. Sa pag-isipan, hindi ko kailangan ng mahabang haba ng pula at dilaw na mga wire at maaaring konektado sa mga node sa bawat isa (sa halip na ikonekta ang mga ito sa isang pangkaraniwang panlabas na circuit board). Talagang mabawasan nito ang dami ng kalat sa likod ng board.

Dahil mayroon akong 8 mga hilera ng ws2812b leds at 12 mga haligi, natapos ako na may 7 mga hilera at 11 mga haligi ng mga node (kabuuan ng 77 node). Ang ideya ay ang paggamit ng isang bahagi ng PCB para sa isang haligi ng mga node at ang iba pang panig para sa iba pang haligi. Kaya't dahil mayroon akong 11 haligi, kailangan ko ng 6 na PCB (ang huli ay nangangailangan lamang ng isang pangkat ng mga bahagi). Dahil ginawa kong masyadong maikli ang mga wire, makakonekta lamang ako ng 55 node, 11 mga haligi at 5 mga hilera. Maaari mong makita sa larawan, gumawa ako ng isang pagkakamali at na-solder ang mga hilaw na wires sa board, na magiging maayos kung ang mga wire ay sapat na manipis, ngunit sa aking kaso sila ay masyadong makapal. Nangangahulugan ito na nagkaroon ako ng fraying wire na nagtatapos ng napakalapit sa bawat isa para sa bawat pag-input ng IR emitter at pag-input ng photodiode, kaya maraming nagde-debug na nangyayari mula sa lahat ng pagkukulang sa wire. Sa hinaharap ay gagamit ako ng mga konektor upang ikonekta ang PCB sa mga wire sa board upang maiwasan ang mga maiikli at malinis na mga bagay.

Dahil ang Arduino ay maaari lamang makagawa ng daisy chain hanggang sa 8 shift register at multiplexer, gumawa ako ng dalawang magkakahiwalay na chain, isa ang kumukuha ng unang 8 haligi at isa pa ang kumukuha ng natitirang 3 haligi. Pagkatapos ay ikinabit ko ang bawat kadena sa isa pang pcb na may 2 multiplexer lamang, upang mabasa ko ang bawat kadena ng mga signal ng multiplexer data mula sa dalawang multiplexer na iyon sa arduino. Ang dalawang multiplexer na ito ay naka-daisy din sa kadena. Nangangahulugan iyon na mayroong isang kabuuang 16 output signal at 2 analog input na ginamit sa arduino: 1 output signal upang makontrol ang ws2812b leds, 3 output signal para sa unang kadena ng shift registro, 3 output signal para sa unang kadena ng multiplexers, 3 output signal para sa pangalawang kadena ng shift register, 3 output signal para sa pangalawang chain ng multiplexers, 3 output signal para sa 2 multiplexer na pinagsasama-sama ang bawat PCB data signal, at sa wakas 2 analog input para sa bawat signal ng data mula sa 2 pinagsamang multiplexer.

Hakbang 5: Suriin ang Code

Tandaan: Bilang karagdagan sa interactive na code sa ibaba, gumamit ako ng isang 3rd party na aklatan upang makabuo ng mga animasyon para sa ws2812b leds. Mahahanap mo iyan dito:

Mahahanap mo ang code na ginamit ko dito:

Sa tuktok tinutukoy ko ang mga pin ng arduino na kumokonekta sa bawat bahagi ng PCB. Sa paraan ng pag-set up, itinakda ko ang mga output pin para sa mga multiplexer, i-on ang mga emitter ng IR, magtakda ng isang baseVal array na sinusubaybayan ang ambient light na nagbabasa para sa bawat photodiode, at pinasimulan ang FastLED na magsusulat sa ws2812b leds. Sa pamamaraan ng loop, i-reset namin ang listahan ng mga leds na itinalaga na nasa ws2812b strip. Pagkatapos ay nabasa namin ang mga halaga mula sa photodiodes sa mga multiplexer chain, at itinakda ang ws2812b leds na dapat ay nasa kung ang pagbabasa mula sa photodiode sa node ay higit sa isang tiyak na tinukoy na threshold mula sa pangunahing halaga ng mga ambient light readings. Pagkatapos ay nai-render namin ang mga LED kung mayroong anumang pagbabago sa node na dapat na on. Kung hindi man, patuloy itong umiikot hanggang sa may magbago upang mapabilis ang mga bagay.

Ang code ay maaaring mapabuti at tinitingnan ko ang paggawa nito, ngunit may tungkol sa isang 1-2 segundo na pagkaantala mula sa kapag ang mga ilaw ay nakabukas pagkatapos ng isang bagay na inilagay sa mesa. Naniniwala ako na ang napapailalim na isyu ay ang FastLED na tumatagal ng ilang oras upang mai-render ang 96 leds sa talahanayan at ang code ay dapat na loop sa at basahin ang 77 mga input mula sa talahanayan. Sinubukan ko ang code na ito sa 8 leds at nalaman kong ito ay halos instant, ngunit tinitingnan ko ang matamis na lugar ng mga LED na gagana sa code na ito at magiging halos instant, pati na rin mapabuti ang code.

Hakbang 6: I-on ang Arduino

Buksan ang Arduino!
Buksan ang Arduino!
Buksan ang Arduino!
Buksan ang Arduino!
Buksan ang Arduino!
Buksan ang Arduino!

Ngayon ang kailangan mo lang gawin ay buksan ang arduino at makita ang paggana ng talahanayan! Gamit ang library ng mga animasyon na dati nang nabanggit maaari kang maglagay ng ilang mga cool na animasyon na humantong sa ws2812b, o maaari mong ilagay sa code ng talahanayan ng kape at makita itong ilaw sa bawat seksyon. Huwag mag-atubiling magkomento ng anumang mga katanungan o opinyon, at susubukan kong bumalik sa iyo sa isang napapanahong paraan. Cheers!

Inirerekumendang: