Obsah:

Interaktívny konferenčný stolík LED Arduino: 6 krokov (s obrázkami)
Interaktívny konferenčný stolík LED Arduino: 6 krokov (s obrázkami)

Video: Interaktívny konferenčný stolík LED Arduino: 6 krokov (s obrázkami)

Video: Interaktívny konferenčný stolík LED Arduino: 6 krokov (s obrázkami)
Video: Konferenčný stolík NEIGE - Zrkadlový nábytok DANIS - www.zrkadlovynabytok.sk 2024, Júl
Anonim
Image
Image
Interaktívny konferenčný stolík LED Arduino
Interaktívny konferenčný stolík LED Arduino

Vyrobil som interaktívny konferenčný stolík, ktorý zapne LED svetlá pod predmetom, keď je predmet položený nad stôl. Rozsvietia sa iba LED diódy, ktoré sú pod týmto predmetom. To sa dosahuje efektívnym využitím bezdotykových senzorov a keď senzor priblíženia zistí, že je objekt dostatočne blízko, rozsvieti uzol pod týmto objektom. Tiež používa Arduino na spustenie animácií, ktoré nepotrebujú snímače priblíženia, ale dodávajú skutočne úžasný efekt, ktorý jednoducho milujem.

Bezdotykové snímače sa skladajú z fotodiód a infračervených žiaričov. Vysielače používajú infračervené svetlo (ktoré ľudské oko nevidí) na vyžarovanie svetla zo stola a fotodiódy prijímajú infračervené svetlo odrazené od predmetu. Čím viac svetla sa odráža (čím je objekt bližšie), tým viac kolíše napätie prichádzajúce z fotodiód. Toto sa používa ako indikátor na zistenie, ktorý uzol sa má rozsvietiť. Uzly sú zbierkou LED diód ws2812b a senzora priblíženia.

Priložené video prechádza celým procesom zostavenia, pričom nižšie uvádzam ďalšie podrobnosti.

Zásoby

  1. ws2812b LED žiarovky -
  2. Napájanie 5V -
  3. Akékoľvek Arduino som použil 2560 -
  4. Fotodiódy
  5. IR vysielače
  6. Rezistory 10 ohmov
  7. 1 MOhms rezistory
  8. Kondenzátory 47 pF
  9. Multiplexory CD4051B
  10. Posuvné registre SN74HC595
  11. Pole Darlington ULN2803A
  12. Akýkoľvek substrát, ktorý som použil ako veľkú dosku na diódy LED, použil som papierovú kompozitnú dosku z domáceho skladu

Krok 1: Vytvorte dosku a vložte diódy LED

Vytvorte dosku a vložte diódy LED
Vytvorte dosku a vložte diódy LED
Vytvorte dosku a vložte diódy LED
Vytvorte dosku a vložte diódy LED
Vytvorte dosku a vložte diódy LED
Vytvorte dosku a vložte diódy LED
Vytvorte dosku a vložte diódy LED
Vytvorte dosku a vložte diódy LED

Prvá vec, ktorú som urobil, bolo vytvoriť dosku, ktorá bude obsahovať LED diódy, ktoré vložíme do konferenčného stolíka. Použil som kus papierovej kompozitnej dosky z domáceho skladu a narezal som ju na vhodné rozmery pre konferenčný stolík, ktorý som mal. Po rozrezaní dosky na mieru som vyvŕtal všetky otvory pre miesta, kam smerovali LED diódy. Samotná doska mala 8 radov a 12 stĺpcov LED ws2812b oddelených 3 palce od seba a boli pripevnené hadovitým vzorom. Na ich zaistenie som použil horúce lepidlo.

Tiež som musel vyvŕtať otvory v strede toho, čo sa stane uzlom: 4 LED diódy ws2812b, ktoré tvoria štvorec, 2 fotodiódy a 2 IR žiariče na menšom štvorci v strede. Tieto 4 otvory v strede uzla by boli bodmi pre fotodiódy a žiariče ir (2 z nich). Striedal som ich, aby som zaistil maximálnu expozíciu, a umiestnil som ich asi 1 palec od seba v strede každého uzla. Nepotreboval som ich lepiť za horúca na svoje miesto, len som ohnul zvody na druhej strane, aby som sa uistil, že nevyjdú z druhej strany. Tiež som sa postaral o ohnutie kladných a záporných koncov v určitých smeroch, aby boli v okruhu správne orientované. Všetky kladné zvody boli na ľavej strane zadnej strany dosky, zatiaľ čo všetky záporné vodiče boli na pravej strane dosky.

Krok 2: Pochopte obvod

Pochopte obvod
Pochopte obvod
Pochopte obvod
Pochopte obvod
Pochopte obvod
Pochopte obvod

Poznámka: Všetky animované kresby nie sú presné pre implementáciu (niektoré arduino piny sú odlišné a ja ich niekoľko zapojím do reťazca, o tom neskôr). Konečný výsledok bol trochu odlišný kvôli zložitosti obvodu, ale všetky animované obvody slúžia ako vynikajúca základňa na pochopenie prototypu každej časti. Pravidelná schéma a schéma zapojenia sú rovnaké ako na doske plošných spojov použitej v projekte.

Kód PCB, ktorý obsahuje projekt KiCad a súbory Gerber, nájdete tu: https://github.com/tmckay1/interactive_coffee_tabl…, v prípade, že si chcete PCB objednať sami a vytvoriť podobný projekt. Na vytvorenie dosiek som použil NextPCB.

V zásade existujú tri rôzne obvody, ktoré tvoria túto tabuľku. Prvý, ktorý nebudeme podrobne preberať, je jednoduchý obvod, ktorý napája diódy ws2812b. Dátový signál PWM je odoslaný z Arduina do žiaroviek LED ws2812b a riadi, aké farby sa kde zobrazujú. Používame LED diódy ws2812b, pretože sú jednotlivo adresovateľné, takže budeme môcť ovládať, ktoré z LED sa majú zapnúť a ktoré vypnúť. LED diódy ws2812b sú napájané externým zdrojom 5 V, pretože arduino nemá dostatok energie na zapnutie všetkých svetiel. V priloženom animovanom diagrame používajú vyťahovací odpor 330 ohmov, ten však vo svojej zostave nepoužívam.

Druhý obvod zapína IR žiariče. Tento obvod používa posuvný register na ovládanie darlingtonského poľa, ktoré vysiela energiu do IR žiaričov. Posuvný register je integrovaný obvod, ktorý je schopný odosielať VYSOKÉ a NÍZKE signály na viac pinov iba z malého počtu pinov. V našom prípade používame posuvný register SN74HC595, ktorý je možné ovládať z 3 vstupov, ale ovláda až 8 výstupov. Výhodou použitia tohto zariadenia s arduinom je, že môžete za sebou reťaziť až 8 posuvných registrov za sebou (arduino zvládne iba 8 z nich). To znamená, že na zapnutie a vypnutie 64 IR žiaričov potrebujete iba 3 piny z arduina. Pole darlington vám umožňuje napájať zariadenie z externého zdroja, ak je vstupný signál VYSOKÝ, alebo vypnúť napájanie tohto zariadenia, ak je vstupný signál NÍZKY. V našom prípade teda používame darlingtonské pole ULN2803A, ktoré umožňuje 5V externému zdroju napájania zapínať a vypínať až 8 IR žiaričov. Na infračervené žiariče v sérii používame odpor 10 ohmov, aby sme dosiahli maximálny prúd z infračervených žiaričov.

Tretí obvod používa multiplexor na príjem viacerých vstupov z fotodiód a výstup posiela v dátovom signáli. Multiplexor je zariadenie, ktoré sa používa na zber viacerých vstupov, z ktorých chcete čítať, a na čítanie z týchto vstupov potrebuje iba niekoľko pinov. Môže to robiť aj naopak (demultiplex), ale tu to na tú aplikáciu nepoužívame. V našom prípade teda používame multiplexor CD4051B na zachytenie až 8 signálov z fotodiód a na čítanie z týchto signálov potrebujeme iba 3 vstupy. Navyše dokážeme reťaziť až 8 multiplexorov (arduino zvládne iba 8 z nich). To znamená, že arduino dokáže čítať zo 64 signálov fotodiódy iba z 3 digitálnych pinov. Fotodiódy sú orientované reverzne zaujato, čo znamená, že namiesto toho, aby sme orientovali v normálnom smere s kladným vodičom pripojeným k zdroju kladného napätia, priradíme záporný vodič k zdroju kladného napätia. To efektívne zmení fotodiódy na fotorezistory, ktoré sa menia v závislosti od množstva svetla, ktoré prijíma. Potom vytvoríme delič napätia na čítanie napätia závislého od meniaceho sa odporu fotodiód pridaním vysoko odolného odporu 1 MOhms k zemi. To nám umožňuje prijímať vyššie a nižšie napätia do arduina v závislosti od toho, koľko IR svetla fotodiódy prijímajú.

Väčšinu z tohto návrhu som sledoval od inej osoby, ktorá to urobila tu: https://www.instructables.com/Infrared-Proximity-S… V tomto návrhu tiež pridali kondenzátor 47 pF, ako to robíme my, oproti odporu 1 MOhm slúži na vytvorenie deliča napätia s fotodiódami. Dôvod, prečo to pridal, bol ten, že kolísal a zapínal infračervené žiariče signálom PWM a tým spôsobil malý pokles napätia z fotodiód, keď sa IR žiariče okamžite zapli. To spôsobilo, že fotodiódy menia odpor, aj keď neprijíma viac IR svetla z objektu, pretože IR žiariče zdieľajú rovnaký 5V zdroj energie ako fotodiódy. Kondenzátor bol použitý na zaistenie toho, aby pri zapnutí a vypnutí infračervených žiaričov nedošlo k poklesu napätia. Pôvodne som plánoval urobiť rovnakú stratégiu, ale na testovanie mi došiel čas, takže som namiesto toho nechal vždy zapnuté IR žiariče. Chcel by som to v budúcnosti zmeniť, ale kým neprepracujem kód a obvod, práve teraz je doska plošných spojov navrhnutá tak, aby mala stále zapnuté infračervené svetlá a kondenzátory som aj tak nechal. Kondenzátor by ste nemali potrebovať, ak používate tento návrh DPS, ale predstavím inú verziu DPS, ktorá akceptuje ďalší vstup do posuvného registra, ktorý vám umožní modulovať zapínanie a vypínanie IR žiaričov. To výrazne ušetrí na spotrebe energie.

Môžete si pozrieť animované schémy priložené k prototypovému zariadeniu na testovanie na vašom arduine. Pre každý obvod existuje aj podrobnejšia farebná schéma, ktorá popisuje nastavenie a orientáciu elektronických zariadení. V priloženej schéme DPS máme 4 celkové obvody, 2 obvody používané na zapnutie IR žiaričov a 2 obvody na čítanie z fotodiód. Sú orientované na 2 doske plošných spojov vedľa seba so skupinou pozostávajúcou z 1 obvodu IR žiariča a 1 obvodu fotodiódy, takže do jedného PCB je možné vložiť 2 stĺpce po 8 uzloch. Dva obvody taktiež zapojíme do reťazca, takže tri piny z arduina môžu ovládať dva posuvné registre a ďalšie 3 piny môžu ovládať dva multiplexory na doske. K dispozícii je ďalší výstupný konektor, aby bolo možné reťaziť k ďalším PCB.

Tu je niekoľko zdrojov, ktoré som použil pri prototypovaní:

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

Krok 3: Spájkovacie drôty k uzlu

Spájkovacie drôty k uzlu
Spájkovacie drôty k uzlu
Spájkovacie drôty k uzlu
Spájkovacie drôty k uzlu
Spájkovacie drôty k uzlu
Spájkovacie drôty k uzlu
Spájkovacie drôty k uzlu
Spájkovacie drôty k uzlu

Teraz, keď chápete, ako sa obvod vytvára, pokračujte a spájkujte vodiče do každého uzla. Fotodiódy som spájkoval súbežne (žlté a sivé vodiče) a žiariče ir do série (oranžový drôt). Potom som paralelne k fotodiódam spájkoval dlhší žltý drôt, ktorý bude pripojený k zdroju napájania 5 V, a modrý vodič, ktorý bude pripojený k vstupu fotodiódy dosky plošných spojov. K obvodu vysielača IR som spájkoval dlhý červený vodič, ktorý sa použije na pripojenie k zdroju napájania 5 V, a čierny vodič, ktorý sa pripojí na vstup vysielača IR na doske plošných spojov. V skutočnosti som vodičom trochu skrátil, aby sa krátil čas, takže som na konci mohol pripojiť iba 5 uzlov v každom stĺpci (namiesto 7). Mám v pláne to opraviť neskôr.

Krok 4: Spájkujte komponenty DPS a pripevnite ich k doske

Spájkujte komponenty DPS a pripevnite ich k doske
Spájkujte komponenty DPS a pripevnite ich k doske
Spájkujte komponenty DPS a pripevnite ich k doske
Spájkujte komponenty DPS a pripevnite ich k doske
Spájkujte komponenty DPS a pripevnite ich k doske
Spájkujte komponenty DPS a pripevnite ich k doske

Poznámka: DPS na priloženom obrázku je prvou verziou, ktorú som vyrobil a ktorej chýbali napájacie vstupy a výstupy a tiež reťazový výstup pre každý vnútorný obvod. Nový dizajn DPS túto chybu napravuje.

Tu stačí postupovať podľa schémy DPS na spájkovanie komponentov na DPS a potom, keď je to hotové, spájkovať DPS na dosku. Na pripojenie signálu 5 V napájania som použil externé obvody, ktoré som distribuoval na všetky žlté a červené vodiče. Pri spätnom pohľade som nepotreboval také dlhé červené a žlté vodiče a mohol som uzly navzájom prepojiť (namiesto toho, aby som ich spájal so spoločným externým obvodom). To skutočne zníži množstvo neporiadku v zadnej časti dosky.

Keďže som mal 8 radov diód ws2812b a 12 stĺpcov, skončil som so 7 riadkami a 11 stĺpcami uzlov (celkom 77 uzlov). Cieľom je použiť jednu stranu DPS pre jeden stĺpec uzlov a druhú stranu pre druhý stĺpec. Keďže som mal 11 stĺpcov, potreboval som 6 plošných spojov (ten posledný potreboval iba jednu skupinu komponentov). Pretože som drôty urobil príliš krátkymi, mohol som pripojiť iba 55 uzlov, 11 stĺpcov a 5 riadkov. Na obrázku vidíte, že som urobil chybu a spájal som surové drôty na dosku, čo by bolo v poriadku, keby boli drôty dostatočne tenké, ale v mojom prípade boli príliš hrubé. To znamenalo, že som mal trieštivé konce drôtov veľmi blízko seba pre každý vstup IR žiariča a vstup fotodiódy, takže zo všetkých skratov drôtov dochádzalo k veľkému ladeniu. V budúcnosti použijem konektory na pripojenie dosky plošných spojov k vodičom na doske, aby som predišiel skratom a vyčistil veci.

Pretože Arduino dokáže reťaziť iba 8 posuvných registrov a multiplexorov, vytvoril som dva oddelené reťazce, jeden zaberal prvých 8 stĺpcov a druhý zaberal zvyšné 3 stĺpce. Potom som pripojil každý reťazec k inému plošnému spoju, ktorý mal iba 2 multiplexory, aby som mohol prečítať každý reťazec dátových signálov multiplexora z týchto dvoch multiplexorov do arduina. Tieto dva multiplexory boli tiež zapojené do reťaze. To znamená, že v arduine bolo použitých celkom 16 výstupných signálov a 2 analógové vstupy: 1 výstupný signál na ovládanie LED ws2812b, 3 výstupné signály pre prvý reťazec posuvných registrov, 3 výstupné signály pre prvý reťazec multiplexorov, 3 výstupné signály pre druhý reťazec posuvných registrov, 3 výstupné signály pre druhý reťazec multiplexorov, 3 výstupné signály pre 2 multiplexory, ktoré agregujú každý dátový signál PCB, a nakoniec 2 analógové vstupy pre každý dátový signál z 2 agregovaných multiplexorov.

Krok 5: Skontrolujte kód

Poznámka: Okrem nižšie uvedeného interaktívneho kódu som na výrobu animácií pre diódy ws2812b použil knižnicu tretej strany. Nájdete to tu:

Kód, ktorý som použil, nájdete tu:

V hornej časti definujem piny arduino, ktoré sa budú spájať s každou časťou DPS. V metóde nastavenia nastavím výstupné piny pre multiplexory, zapnem IR žiariče, nastavím pole baseVal, ktoré sleduje čítanie okolitého svetla pre každú fotodiódu, a inicializuje FastLED, ktorý zapíše na diódy ws2812b. Pri slučkovej metóde resetujeme zoznam LED, ktoré sú priradené k zapnutiu v páse ws2812b. Potom odčítame hodnoty z fotodiód v reťazcoch multiplexora a nastavíme žiarovky ws2812b, ktoré majú byť zapnuté, ak je čítanie z fotodiódy v uzle nad určitou definovanou prahovou hodnotou zo základnej hodnoty hodnôt okolitého svetla. LED diódy potom vykreslíme, ak dôjde k akejkoľvek zmene v uzle, ktorý by mal byť zapnutý. V opačnom prípade sa to bude opakovať, kým sa niečo nezmení, aby sa veci urýchlili.

Kód by sa pravdepodobne dal vylepšiť a ja to skúmam, ale medzi zapnutím svetiel a položením predmetu na stôl dochádza k asi 1-2 sekundovému oneskoreniu. Verím, že základným problémom je, že FastLED trvá nejaký čas, kým sa vykreslí 96 diód LED na stole, a kód musí prejsť a prečítať 77 vstupov z tabuľky. Skúsil som tento kód s 8 diódami LED a zistil som, že je takmer okamžitý, ale pozerám sa na sladké miesto diód LED, ktoré budú s týmto kódom pracovať a budú takmer okamžité, ako aj na zlepšenie kódu.

Krok 6: Zapnite Arduino

Zapnite Arduino!
Zapnite Arduino!
Zapnite Arduino!
Zapnite Arduino!
Zapnite Arduino!
Zapnite Arduino!

Teraz stačí zapnúť arduino a zobraziť funkciu tabuľky! Pomocou vyššie uvedenej knižnice animácií si môžete obliecť skvelé LED animácie ws2812b alebo si dať kód konferenčného stolíka a rozsvietiť sa v každej sekcii. Neváhajte komentovať akékoľvek otázky alebo názory a pokúsim sa vás kontaktovať včas. Na zdravie!

Odporúča: