Sadržaj:

Arduino interaktivni LED stolić: 6 koraka (sa slikama)
Arduino interaktivni LED stolić: 6 koraka (sa slikama)

Video: Arduino interaktivni LED stolić: 6 koraka (sa slikama)

Video: Arduino interaktivni LED stolić: 6 koraka (sa slikama)
Video: CS50 2013 - Week 9 2024, Srpanj
Anonim
Image
Image
Arduino interaktivni LED stolić
Arduino interaktivni LED stolić

Napravio sam interaktivni stolić za kavu koji uključuje LED svjetla ispod objekta, kada se predmet stavi preko stola. Svijetlit će samo LED diode koje se nalaze ispod tog objekta. To čini učinkovitom upotrebom senzora blizine, a kad senzor blizine osjeti da je objekt dovoljno blizu, osvijetlit će čvor ispod tog objekta. Također koristi Arduino za stavljanje animacija za koje nisu potrebni senzori za blizinu, ali dodaje zaista cool efekt koji jednostavno volim.

Senzori blizine sastoje se od fotodioda i IC odašiljača. Odašiljači koriste infracrveno svjetlo (koje ljudsko oko ne može vidjeti) kako bi zasvijetlilo sa stola, a fotodiode primaju infracrveno svjetlo odbijeno od objekta. Što se više svjetlosti reflektira (što je objekt bliže), to više dolazi do fluktuacije napona koji dolazi iz fotodioda. Ovo se koristi kao pokazatelj koji pokazuje koji čvor treba upaliti. Čvorovi su zbirka LED dioda ws2812b i senzora blizine.

Priloženi video prikazuje cijeli proces izrade, dok u nastavku iznosim više detalja.

Pribor

  1. ws2812b LED žarulje -
  2. Napajanje 5V -
  3. Bilo koji Arduino koji sam koristio 2560 -
  4. Fotodiode
  5. IC odašiljači
  6. Otpornici od 10 ohma
  7. 1 MOhms otpornici
  8. Kondenzatori 47 pF
  9. CD4051B Multiplekseri
  10. SN74HC595 Registri pomaka
  11. ULN2803A Darlingtonski nizovi
  12. Bilo koju podlogu za upotrebu kao veliku ploču za LED diode, koristio sam kompozitnu ploču od papira iz kućnog skladišta

Korak 1: Stvorite ploču i umetnite LED diode

Napravite ploču i umetnite LED diode
Napravite ploču i umetnite LED diode
Napravite ploču i umetnite LED diode
Napravite ploču i umetnite LED diode
Napravite ploču i umetnite LED diode
Napravite ploču i umetnite LED diode
Napravite ploču i umetnite LED diode
Napravite ploču i umetnite LED diode

Prvo što sam učinio bilo je stvoriti ploču koja će sadržavati LED diode koje ćemo staviti u stolić. Koristio sam komad papira od kompozitne ploče iz kućnog skladišta i izrezao ga na odgovarajuće dimenzije za stolić za kavu koji sam imao. Nakon što sam izrezao ploču po veličini, izbušio sam sve rupe za mjesto na koje idu LED diode. Sama ploča imala je 8 redova i 12 stupaca LED dioda ws2812b odvojenih 3 cm jedan od drugog, a pričvršćeni su u obliku zmije. Koristio sam vruće ljepilo da ih učvrstim na mjestu.

Također sam morao izbušiti rupe u središtu onoga što će postati čvor: 4 LED diode ws2812b koje čine kvadrat, 2 foto diode i 2 IC odašiljača na manjem kvadratu u središtu toga. Ove 4 rupe u središtu čvora bile bi mjesta za fotodiode i ir emitere (po 2). Naizmjenično sam ih postavio kako bih osigurao maksimalnu ekspoziciju i postavio ih na udaljenosti od 1 inča u središte svakog čvora. Nisam ih trebao vruće lijepiti na mjesto, samo sam savio žice s druge strane kako bih bio siguran da neće izaći s druge strane. Također sam se potrudio saviti pozitivne i negativne krajeve u određenim smjerovima, tako da su ispravno orijentirani u krugu. Svi pozitivni vodiči bili su s lijeve strane stražnje strane ploče, dok su svi negativni vodiči bili s desne strane ploče.

Korak 2: Shvatite krug

Shvatite krug
Shvatite krug
Shvatite krug
Shvatite krug
Shvatite krug
Shvatite krug

Napomena: Svi animirani crteži nisu egzaktni u implementaciji (neke arduino pinove su različite, a ja ih lansiram nekoliko, o tome kasnije). Krajnji rezultat bio je malo drugačiji zbog složenosti kruga, ali svi animirani krugovi služe kao izvrsna baza za razumijevanje kako prototipirati svaki dio. Redovita shema i dijagram su takvi kao na tiskanoj ploči koja se koristi u projektu.

PCB kod koji sadrži KiCad projekt i gerber datoteke možete pronaći ovdje: https://github.com/tmckay1/interactive_coffee_tabl…, u slučaju da sami želite naručiti PCB -e i izraditi sličan projekt. Za izradu ploča koristio sam NextPCB.

U osnovi postoje tri različita kruga koja čine ovu tablicu. Prvo nećemo detaljno prelaziti, a to je jednostavan sklop koji napaja LED diode ws2812b. PWM podatkovni signal šalje se s Arduina na LED žarulje ws2812b i kontrolira koje su boje gdje prikazane. Koristimo LED diode ws2812b budući da se mogu pojedinačno adresirati, pa ćemo moći kontrolirati koje LED diode uključiti, a koje isključiti. LED diode ws2812b napajaju se vanjskim izvorom napajanja od 5 V, jer sam arduino nema dovoljno snage za uključivanje svih svjetala. U priloženom animiranom dijagramu koriste pullup otpornik od 330 Ohma, međutim ja to ne koristim u svojoj konstrukciji.

Drugi krug uključuje IC odašiljače. Ovaj krug koristi registar pomaka za kontrolu darlingtonovog niza koji šalje napajanje IC odašiljačima. Registar pomaka je integrirano kolo koje može slati VISOKE i NISKE signale na više pinova sa samo male količine pinova. U našem slučaju koristimo registar pomaka SN74HC595 koji se može kontrolirati s 3 ulaza, ali kontrolira do 8 izlaza. Prednost korištenja ovog s arduinom je u tome što možete spojiti do 8 registara pomaka zaredom (arduino može obraditi samo do 8 njih). To znači da su vam potrebna samo 3 pina s arduina za uključivanje i isključivanje 64 IC odašiljača. Darlington niz vam omogućuje napajanje uređaja iz vanjskog izvora ako je ulazni signal VISOK, ili isključivanje napajanja za taj uređaj ako je ulazni signal NISKI. Dakle, u našem primjeru koristimo darlington niz ULN2803A, koji omogućuje vanjskom izvoru napajanja od 5 V za uključivanje i isključivanje do 8 IC odašiljača. Koristimo otpornik od 10 Ohma s IR odašiljačima u seriji kako bismo dobili maksimalnu amperažu od IC odašiljača.

Treći krug koristi multiplekser za prijem više ulaza s fotodioda, a izlaz šalje u podatkovnom signalu. Multiplekser je uređaj koji se koristi za primanje više ulaza s kojih želite čitati, a potrebno mu je samo nekoliko pinova za čitanje s tih ulaza. Može učiniti i suprotno (demultipleks), ali ga ovdje ne koristimo za tu aplikaciju. Dakle, u našem slučaju koristimo CD4051B multiplekser za prihvaćanje do 8 signala s fotodioda, a za čitanje iz tih signala potrebna su nam samo 3 ulaza. Osim toga, možemo spojiti do 8 multipleksera (arduino može podnijeti samo do 8 njih). To znači da arduino može čitati sa 64 signala fotodiode sa samo 3 digitalna pina. Fotodiode su okrenute obrnuto pristrano, što znači da umjesto da smo orijentirane u normalnom smjeru s pozitivnim vodičem spojenim na izvor pozitivnog napona, negativnom odvodu pripisujemo izvor pozitivnog napona. To učinkovito pretvara fotodiode u foto otpornike, koji mijenjaju otpor ovisno o količini svjetlosti koju prima. Zatim stvaramo razdjelnik napona za očitavanje napona koji ovisi o promjenjivom otporu fotodioda dodavanjem visoko otpornog otpornika od 1 MOhms na masu. To nam omogućuje primanje većih i nižih napona na arduino ovisno o tome koliko IR svjetla fotodiode primaju.

Većinu ovog dizajna slijedio sam od druge osobe koja je to učinila ovdje: https://www.instructables.com/Infrared-Proximity-S… U tom dizajnu su dodali i 47pF kondenzator, kao i mi, preko puta otpornika od 1 MOhm koristi se za stvaranje razdjelnika napona s fotodiodama. Razlog zašto je to dodao bio je taj što je uključivao i isključivao IR odašiljače s PWM signalom i time je povukao mali pad napona s fotodioda kada su se IR odašiljači odmah uključili. Zbog toga su foto diode promijenile otpor čak i kada nisu primale više IC svjetlosti od objekta jer su IC odašiljači dijelili isti izvor napajanja od 5 V kao i fotodiode. Kondenzator je upotrijebljen kako bi se osiguralo da nema pada napona pri uključivanju i isključivanju IC odašiljača. Prvotno sam planirao napraviti istu strategiju, ali mi je isteklo vrijeme za testiranje, pa sam umjesto toga uvijek ostavljao uključene IC odašiljače. Htio bih to promijeniti u budućnosti, ali dok ne redizajniram kôd i sklop, trenutno je PCB dizajniran tako da uvijek ima uključena IC svjetla, a svejedno sam zadržao kondenzatore. Ne koristite kondenzator ako koristite ovaj dizajn PCB -a, ali predstavit ću drugu verziju PCB -a koja prihvaća dodatni ulaz u registar pomaka koji će vam omogućiti moduliranje i isključivanje IC odašiljača. To će znatno uštedjeti na potrošnji energije.

Možete provjeriti priložene animirane dijagrame radi postavljanja prototipa za testiranje na vašem arduinu. Postoji i detaljnija shema u boji za svaki krug koja ocrtava postavljanje i usmjerenje elektroničkih uređaja. U priloženoj shemi PCB -a imamo 4 ukupna kruga, 2 kruga za uključivanje IC odašiljača i 2 kruga za očitavanje s fotodioda. Orijentirani su na PCB 2 grupe jedna do druge s grupom koja se sastoji od 1 kruga IC odašiljača i 1 kruga fotodioda, tako da se 2 stupca od 8 čvorova mogu staviti u jednu PCB. Također povezujemo dva kruga zajedno, tako da tri pina iz arduina mogu kontrolirati dva registra pomaka, a 3 dodatne iglice mogu kontrolirati dva multipleksera na ploči. Postoji dodatno izlazno zaglavlje za povezivanje dodatnih PCB -a.

Evo nekoliko izvora koje sam slijedio za izradu prototipova:

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

Korak 3: Lemljenje žica na čvor

Lemljenje žica na čvor
Lemljenje žica na čvor
Lemljenje žica na čvor
Lemljenje žica na čvor
Lemljenje žica na čvor
Lemljenje žica na čvor
Lemljenje žica na čvor
Lemljenje žica na čvor

Sada kada razumijete kako je sklop napravljen, lemite žice na svaki čvor. Paralelno sam lemio fotodiode (žute i sive žice) i ir odašiljače u seriji (narančasta žica). Zatim sam paralelno lemio dužu žutu žicu na fotodiode koja će biti spojena na izvor napajanja od 5V, i plavu žicu koja će biti spojena na ulaz fotodiode na ploči. Lemio sam dugu crvenu žicu na krug IC odašiljača koji će se koristiti za spajanje na izvor napajanja od 5 V i crnu žicu koja će se spojiti na ulaz IC odašiljača na PCB -u. Zapravo sam malo skratio žice pa je isteklo vrijeme pa sam na kraju mogao spojiti samo 5 čvorova u svakom stupcu (umjesto 7). Ovo namjeravam popraviti kasnije.

Korak 4: Lemite komponente PCB -a i pričvrstite ih na ploču

Lemite komponente PCB -a i pričvrstite ih na ploču
Lemite komponente PCB -a i pričvrstite ih na ploču
Lemite komponente PCB -a i pričvrstite ih na ploču
Lemite komponente PCB -a i pričvrstite ih na ploču
Lemite komponente PCB -a i pričvrstite ih na ploču
Lemite komponente PCB -a i pričvrstite ih na ploču

Napomena: PCB na priloženoj slici prva je verzija koju sam napravio, a kojoj su nedostajali ulazi i izlazi za napajanje, kao i lanac za svaki unutarnji krug. Novi dizajn PCB -a ispravlja ovu pogrešku.

Ovdje samo trebate slijediti shemu PCB -a za lemljenje komponenata na PCB, a zatim kada to učinite, lemite PCB na ploču. Koristio sam vanjske ploče za priključivanje 5V signala napajanja, koji sam distribuirao na sve žute i crvene žice. Gledajući unatrag, nisu mi trebale tako duge crvene i žute žice i mogao sam čvorove međusobno povezati (umjesto da ih povežem na zajedničku vanjsku ploču). To će doista smanjiti količinu nereda na stražnjoj strani ploče.

Budući da sam imao 8 redaka ws2812b LED dioda i 12 stupaca, završio sam sa 7 redaka i 11 stupaca čvorova (ukupno 77 čvorova). Ideja je koristiti jednu stranu PCB -a za jedan stupac čvorova, a drugu stranu za drugi stupac. Dakle, budući da sam imao 11 stupaca, trebalo mi je 6 PCB -a (posljednji je trebao samo jednu skupinu komponenti). Budući da sam žice učinio prekratkim, mogao sam spojiti samo 55 čvorova, 11 stupaca i 5 redaka. Možete vidjeti na slici, pogriješio sam i lemio sirove žice na ploču, što bi bilo u redu da su žice dovoljno tanke, ali u mom slučaju bile su predebele. To je značilo da su mi krajevi žica koji se troše vrlo blizu jedan za drugi ulaz IR odašiljača i ulaz fotodiode, tako da se puno otklanjanja pogrešaka događalo zbog kratkog spoja žice. U budućnosti ću koristiti konektore za spajanje PCB -a na žice na ploči kako bih izbjegao kratke spojeve i očistio stvari.

Budući da Arduino može spojiti samo 8 registara pomaka i multipleksera, stvorio sam dva odvojena lanca, jedan koji zauzima prvih 8 stupaca, a drugi preostala 3 stupca. Zatim sam svaki lanac spojio na drugu tiskanu ploču koja je imala samo 2 multipleksera, tako da sam mogao čitati svaki lanac podatkovnih signala multipleksera iz ta dva multipleksera u arduino. Ova dva multipleksera također su bila vezana tratinčicom. To znači da je u arduinu bilo ukupno 16 izlaznih signala i 2 analogna ulaza: 1 izlazni signal za upravljanje LED diodama ws2812b, 3 izlazna signala za prvi lanac registara pomaka, 3 izlazna signala za prvi lanac multipleksera, 3 izlazna signala za drugi lanac registara pomaka, 3 izlazna signala za drugi lanac multipleksera, 3 izlazna signala za 2 multipleksera koji agregiraju svaki signal podataka s PCB -a, i na kraju 2 analogna ulaza za svaki podatkovni signal iz 2 agregatna agregata.

Korak 5: Pregledajte Kodeks

Napomena: Osim interaktivnog koda u nastavku, koristio sam biblioteku treće strane za izradu animacija za LED diode ws2812b. To možete pronaći ovdje:

Kôd koji sam koristio možete pronaći ovdje:

Pri vrhu definiram arduino pinove koji će se spojiti na svaki dio PCB -a. U načinu postavljanja postavio sam izlazne pinove za multipleksere, uključio IC odašiljače, postavio niz baseVal koji prati očitanje ambijentalnog svjetla za svaku fotodiodu i inicijalizirao FastLED koji će pisati na ws2812b LED diode. U metodi petlje, resetirali smo popis LED dioda koje su dodijeljene za uključivanje na traci ws2812b. Zatim očitavamo vrijednosti s fotodioda u lancima multipleksera i postavljamo LED diode ws2812b koje bi trebale biti uključene ako je očitanje s fotodiode u čvoru iznad određenog praga od osnovne vrijednosti očitanja ambijentalnog svjetla. Zatim generiramo LED diode ako dođe do promjene u čvoru koja bi trebala biti uključena. Inače se nastavlja ponavljati sve dok se nešto ne promijeni kako bi se stvari ubrzale.

Kôd bi se vjerojatno mogao poboljšati i ja to radim, ali postoji kašnjenje od 1-2 sekunde od trenutka kad se svjetla upale nakon što se objekt stavi na stol. Vjerujem da je temeljni problem FastLED -u potrebno neko vrijeme da prikaže 96 LED dioda na stolu, a kôd mora proći kroz petlje i pročitati 77 ulaza iz tablice. Pokušao sam ovaj kod sa 8 LED dioda i otkrio da je gotovo trenutačan, ali tražim slatko mjesto LED dioda koje će raditi s ovim kodom i biti gotovo trenutne, kao i poboljšati kôd.

Korak 6: Uključite Arduino

Uključite Arduino!
Uključite Arduino!
Uključite Arduino!
Uključite Arduino!
Uključite Arduino!
Uključite Arduino!

Sada sve što trebate učiniti je uključiti arduino i vidjeti funkciju tablice! Pomoću prethodno spomenute biblioteke animacija možete staviti neke cool ws2812b LED animacije ili možete staviti kôd stolića i vidjeti kako svijetli u svakom odjeljku. Slobodno komentirajte bilo kakva pitanja ili mišljenja, a ja ću vam se pokušati javiti na vrijeme. Živjeli!

Preporučeni: