Obsah:

Interaktivní konferenční stolek LED Arduino: 6 kroků (s obrázky)
Interaktivní konferenční stolek LED Arduino: 6 kroků (s obrázky)

Video: Interaktivní konferenční stolek LED Arduino: 6 kroků (s obrázky)

Video: Interaktivní konferenční stolek LED Arduino: 6 kroků (s obrázky)
Video: [Arduino] Coffee table with Arduino LED 2024, Červenec
Anonim
Image
Image
Interaktivní LED konferenční stolek Arduino
Interaktivní LED konferenční stolek Arduino

Vytvořil jsem interaktivní konferenční stolek, který pod objektem rozsvítí LED světla, když je předmět umístěn nad stůl. Rozsvítí se pouze LED diody, které jsou pod tímto objektem. Dělá to efektivně pomocí senzorů přiblížení, a když senzor přiblížení zjistí, že je objekt dostatečně blízko, rozsvítí uzel pod tímto objektem. Používá také Arduino k vytváření animací, které nepotřebují senzory přiblížení, ale přidávají opravdu skvělý efekt, který prostě miluji.

Bezdotykové snímače jsou tvořeny fotodiodami a infračervenými zářiči. Zářiče používají infračervené světlo (které lidské oko nevidí), aby zazářilo světlo ze stolu, a fotodiody přijímají infračervené světlo odražené od předmětu. Čím více světla se odráží (čím blíže je předmět), tím více kolísá napětí přicházející z fotodiod. To se používá jako indikátor k určení, který uzel se má rozsvítit. Uzly jsou sbírkou LED diod ws2812b a senzoru přiblížení.

Přiložené video prochází celým procesem sestavení, zatímco níže nastíním další podrobnosti.

Zásoby

  1. ws2812b LED žárovky -
  2. 5V napájecí zdroj -
  3. Jakékoli Arduino jsem použil 2560 -
  4. Fotodiody
  5. IR vysílače
  6. Rezistory 10 ohmů
  7. 1 MOhms rezistory
  8. 47 pF kondenzátory
  9. Multiplexory CD4051B
  10. Posuvné registry SN74HC595
  11. Pole Darlington ULN2803A
  12. Jakýkoli substrát, který jsem použil jako velkou desku pro LED diody, použil jsem papírovou kompozitní desku z domácího skladu

Krok 1: Vytvořte desku a vložte LED diody

Vytvořte desku a vložte LED diody
Vytvořte desku a vložte LED diody
Vytvořte desku a vložte LED diody
Vytvořte desku a vložte LED diody
Vytvořte desku a vložte LED diody
Vytvořte desku a vložte LED diody
Vytvořte desku a vložte LED diody
Vytvořte desku a vložte LED diody

První věc, kterou jsem udělal, bylo vytvořit desku, která bude obsahovat LED diody, které vložíme do konferenčního stolku. Použil jsem kus papírové kompozitní desky z domácího skladu a nařezal ji na správné rozměry pro konferenční stolek, který jsem měl. Poté, co jsem prkénko rozřezal na požadovanou velikost, vyvrtal jsem všechny otvory, kam vedly ledky. Samotná deska měla 8 řad a 12 sloupců LED ws2812b oddělených 3 palce od sebe a byly připevněny hadovitým vzorem. Použil jsem horké lepidlo, abych je zajistil na místě.

Také jsem musel vyvrtat otvory ve středu toho, co se stane uzlem: 4 LED diody ws2812b, které tvoří čtverec, 2 fotodiody a 2 IR zářiče na menším čtverci uprostřed. Tyto 4 otvory ve středu uzlu by byly skvrnami pro fotodiody a ir zářiče (po 2 z nich). Střídal jsem je, abych zajistil maximální expozici, a umístil je asi 1 palec od sebe do středu každého uzlu. Nepotřeboval jsem je lepit za horka na místo, jen jsem ohnul vodiče na druhé straně, abych se ujistil, že nevyjdou z druhé strany. Také jsem zajistil ohnutí kladného a záporného konce v určitých směrech, aby byly v obvodu správně orientovány. Všechny kladné vodiče byly na levé straně zadní části desky, zatímco všechny negativní vodiče byly na pravé straně desky.

Krok 2: Pochopte obvod

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

Poznámka: Všechny animované kresby nejsou přesné pro implementaci (některé arduino piny jsou jiné a já je páruji, více o tom později). Konečný výsledek byl trochu odlišný kvůli složitosti obvodu, ale všechny animované obvody slouží jako skvělá základna pro pochopení prototypování každé části. Pravidelné schéma a schéma zapojení jsou stejné jako na desce plošných spojů použité v projektu.

Kód PCB, který obsahuje projekt KiCad a soubory Gerber, najdete zde: https://github.com/tmckay1/interactive_coffee_tabl…, v případě, že si chcete PCB objednat sami a vytvořit podobný projekt. K vytvoření desek jsem použil NextPCB.

V zásadě existují tři různé obvody, které tvoří tuto tabulku. První, kterou nebudeme podrobně procházet, je jednoduchý obvod, který napájí LED diody ws2812b. Datový signál PWM je odeslán z Arduina do žárovek LED ws2812b a řídí, jaké barvy se kde zobrazují. Používáme diody ws2812b, protože jsou individuálně adresovatelné, takže budeme moci ovládat, které z LED se mají zapnout a které vypnout. LED diody ws2812b jsou napájeny externím zdrojem 5 V, protože arduino samo nemá dostatek energie k zapnutí všech světel. V přiloženém animovaném diagramu používají stahovací odpor 330 Ohmů, ale ve své sestavě to nepoužívám.

Druhý obvod zapíná IR zářiče. Tento obvod používá posuvný registr k ovládání darlingtonského pole, které vysílá energii do IR vysílačů. Posuvný registr je integrovaný obvod, který je schopen odesílat VYSOKÉ a NÍZKÉ signály na více pinů pouze z malého množství pinů. V našem případě používáme posuvný registr SN74HC595, který je možné ovládat ze 3 vstupů, ale ovládá až 8 výstupů. Výhodou použití s arduinem je, že můžete řetězit až 8 posuvných registrů za sebou (arduino zvládne pouze 8 z nich). To znamená, že k zapnutí a vypnutí 64 IR vysílačů potřebujete pouze 3 piny z arduina. Pole darlington vám umožňuje napájet zařízení z externího zdroje, pokud je vstupní signál VYSOKÝ, nebo vypnout napájení tohoto zařízení, pokud je vstupní signál NÍZKÝ. V našem příkladu tedy používáme darlingtonské pole ULN2803A, které umožňuje 5V externímu zdroji napájení zapínat a vypínat až 8 IR vysílačů. Používáme odpor 10 Ohm s IR vysílači v sérii, abychom získali maximální proud z IR vysílačů.

Třetí obvod používá multiplexor k příjmu více vstupů z fotodiod a odesílá výstup v datovém signálu. Multiplexer je zařízení, které slouží k odebírání více vstupů, ze kterých chcete číst, a ke čtení z těchto vstupů potřebuje pouze několik pinů. Může to dělat i opačně (demultiplex), ale tady to pro tu aplikaci nepoužíváme. V našem případě tedy používáme multiplexor CD4051B k zachycení až 8 signálů z fotodiod a ke čtení z těchto signálů potřebujeme pouze 3 vstupy. Navíc můžeme řetězit až 8 multiplexerů (arduino jich zvládne jen 8). To znamená, že arduino může číst ze 64 signálů fotodiody pouze ze 3 digitálních pinů. Fotodiody jsou orientovány obráceně zkresleně, což znamená, že místo orientace v normálním směru s kladným vodičem připojeným ke zdroji kladného napětí přiřadíme záporný vodič ke zdroji kladného napětí. To účinně mění fotodiody na fotorezistory, které se mění v závislosti na množství světla, které přijímá. Poté vytvoříme dělič napětí pro čtení napětí závislého na měnícím se odporu fotodiod přidáním vysoce odolného odporu 1 MOhms k zemi. To nám umožňuje přijímat vyšší a nižší napětí na arduino v závislosti na tom, kolik IR světla fotodiody přijímají.

Sledoval jsem většinu tohoto návrhu od jiné osoby, která to udělala zde: https://www.instructables.com/Infrared-Proximity-S… V tomto designu také přidali kondenzátor 47pF, jak to děláme, naproti odporu 1 MOhm slouží k vytvoření děliče napětí s fotodiodami. Důvod, proč to přidal, byl proto, že kolísal a zapínal infračervené zářiče signálem PWM, a tím došlo k malému poklesu napětí z fotodiod, když byly infračervené zářiče okamžitě zapnuty. To způsobilo, že fotodiody změnily odpor, i když nepřijímalo více IR světla z objektu, protože IR zářiče sdílely stejný 5V zdroj energie jako fotodiody. Kondenzátor byl použit k zajištění, aby nedošlo k poklesu napětí při zapnutí a vypnutí infračervených zářičů. Původně jsem plánoval udělat stejnou strategii, ale na testování mi došel čas, takže jsem místo toho nechal IR vysílače vždy zapnuté. Chtěl bych to v budoucnu změnit, ale dokud nepředělám kód a obvod, právě teď je deska plošných spojů navržena tak, aby měla IR světla stále zapnutá, a kondenzátory jsem stejně nechal. Pokud používáte tento návrh DPS, nepotřebujete kondenzátor, ale představím jinou verzi DPS, která přijímá další vstup do posuvného registru, který vám umožní modulovat a zapínat IR zářiče. To hodně ušetří na spotřebě energie.

Můžete zkontrolovat animované diagramy připojené k nastavení prototypu pro testování na vašem arduinu. Pro každý obvod je také podrobnější barevné schéma, které popisuje nastavení a orientaci elektronických zařízení. V přiloženém schématu DPS máme celkem 4 obvody, 2 obvody sloužící k zapnutí IR zářičů a 2 obvody pro čtení z fotodiod. Jsou orientovány na PCB 2 skupiny vedle sebe se skupinou sestávající z 1 IR vysílačového obvodu a 1 fotodiodového obvodu, takže 2 sloupce po 8 uzlech lze vložit do jedné PCB. Také zapojíme dva obvody dohromady, takže tři piny z arduina mohou ovládat dva posuvné registry a 3 další piny mohou ovládat dva multiplexory na desce. Existuje další výstupní záhlaví, které umožňuje řetězit další PCB.

Zde je několik zdrojů, které jsem použil při prototypování:

  • 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: Pájecí dráty k uzlu

Pájecí dráty k uzlu
Pájecí dráty k uzlu
Pájecí dráty k uzlu
Pájecí dráty k uzlu
Pájecí dráty k uzlu
Pájecí dráty k uzlu
Pájecí dráty k uzlu
Pájecí dráty k uzlu

Nyní, když chápete, jak je obvod vytvořen, pokračujte a pájte vodiče do každého uzlu. Souběžně jsem připájel fotodiody (žluté a šedé vodiče) a ir zářiče do série (oranžový vodič). Poté jsem paralelně připájel delší žlutý vodič k fotodiodám, který bude připojen ke zdroji napájení 5V, a modrý vodič, který bude připojen ke vstupu fotodiody desky plošných spojů. K obvodu vysílače IR jsem připájel dlouhý červený vodič, který bude použit pro připojení ke zdroji napájení 5 V, a černý vodič, který se připojí ke vstupu vysílače IR na desce plošných spojů. Ve skutečnosti jsem trochu zkracoval dráty, aby došel čas, takže jsem nakonec mohl připojit pouze 5 uzlů v každém sloupci (místo 7). Mám v plánu to opravit později.

Krok 4: Pájejte součásti desky plošných spojů a připevněte je k desce

Pájejte součásti DPS a připevněte je k desce
Pájejte součásti DPS a připevněte je k desce
Pájejte součásti DPS a připevněte je k desce
Pájejte součásti DPS a připevněte je k desce
Pájejte součásti DPS a připevněte je k desce
Pájejte součásti DPS a připevněte je k desce

Poznámka: Deska plošných spojů na přiloženém obrázku je první verzí, kterou jsem vyrobil, která postrádala napájecí vstupy a výstupy a také řetězový výstup pro každý vnitřní obvod. Nový design DPS tuto chybu napravuje.

Zde stačí postupovat podle schématu desky plošných spojů k pájení součástek na desku plošných spojů a poté, co je hotovo, pájet desku plošných spojů s deskou. K připojení 5V napájecího signálu jsem použil externí obvodové desky, které jsem rozdělil na všechny žluté a červené vodiče. Při zpětném pohledu jsem nepotřeboval tak dlouhé červené a žluté vodiče a mohl jsem spojit uzly navzájem (místo toho, abych je připojil ke společnému externímu obvodu). To opravdu sníží množství nepořádku v zadní části desky.

Protože jsem měl 8 řádků LED diod ws2812b a 12 sloupců, skončil jsem se 7 řádky a 11 sloupci uzlů (celkem 77 uzlů). Cílem je použít jednu stranu DPS pro jeden sloupec uzlů a druhou stranu pro druhý sloupec. Protože jsem měl 11 sloupců, potřeboval jsem 6 desek plošných spojů (poslední potřeboval pouze jednu skupinu komponent). Protože jsem udělal dráty příliš krátké, mohl jsem připojit pouze 55 uzlů, 11 sloupců a 5 řad. Na obrázku vidíte, udělal jsem chybu a připájel surové dráty k desce, což by bylo v pořádku, kdyby byly dráty dostatečně tenké, ale v mém případě byly příliš silné. To znamenalo, že jsem měl roztřepené konce vodičů velmi blízko sebe pro každý vstup IR emitoru a vstup fotodiody, takže došlo ke spoustě ladění ze všech zkratů drátu. V budoucnu budu používat konektory pro připojení desky plošných spojů k vodičům na desce, abych se vyhnul zkratům a vyčistil věci.

Protože Arduino může řetězit pouze 8 posuvných registrů a multiplexerů, vytvořil jsem dva oddělené řetězce, jeden zabíral prvních 8 sloupců a druhý zabíral zbývající 3 sloupce. Poté jsem připojil každý řetězec k jinému plošnému spoji, který měl jen 2 multiplexory, takže jsem mohl přečíst každý řetězec datových signálů multiplexeru z těchto dvou multiplexorů do arduina. Tyto dva multiplexory byly také zapojeny do řetězce. To znamená, že v arduinu bylo použito celkem 16 výstupních signálů a 2 analogové vstupy: 1 výstupní signál pro ovládání LED diod ws2812b, 3 výstupní signály pro první řetězec posuvných registrů, 3 výstupní signály pro první řetězec multiplexorů, 3 výstupní signály pro druhý řetězec posuvných registrů, 3 výstupní signály pro druhý řetězec multiplexorů, 3 výstupní signály pro 2 multiplexory, které agregují každý datový signál PCB, a nakonec 2 analogové vstupy pro každý datový signál ze 2 agregačních multiplexorů.

Krok 5: Zkontrolujte kód

Poznámka: Kromě níže uvedeného interaktivního kódu jsem k vytvoření animací pro diody ws2812b použil knihovnu třetí strany. To najdete zde:

Kód, který jsem použil, najdete zde:

Nahoře definuji arduino piny, které se připojí ke každé části DPS. V metodě nastavení nastavím výstupní piny pro multiplexory, zapnu IR vysílače, nastavím pole baseVal, které sleduje čtení okolního světla pro každou fotodiodu, a inicializuje FastLED, který bude zapisovat na diody ws2812b. V metodě smyčky resetujeme seznam LED diod, které jsou přiřazeny k rozsvícení v pásu ws2812b. Poté odečteme hodnoty z fotodiod v řetězcích multiplexoru a nastavíme diody ws2812b, které mají být rozsvícené, pokud je čtení z fotodiody v uzlu nad určitou definovanou prahovou hodnotou ze základní hodnoty odečtů okolního světla. LED diody pak vykreslíme, pokud dojde k nějaké změně v uzlu, který by měl být zapnutý. V opačném případě pokračuje ve smyčce, dokud se něco nezmění, aby se věci urychlily.

Kód by se pravděpodobně dal vylepšit a já to zkouším, ale od zapnutí světel po položení předmětu na stůl je zpoždění asi 1–2 sekundy. Věřím, že základním problémem je, že FastLED potřebuje nějaký čas k vykreslení 96 diod na stole a kód musí projít a přečíst 77 vstupů z tabulky. Zkoušel jsem tento kód s 8 LED a zjistil jsem, že je téměř okamžitý, ale dívám se do sladkého místa LED, které bude pracovat s tímto kódem a bude téměř okamžité, stejně jako vylepšit kód.

Krok 6: Zapněte Arduino

Zapněte Arduino!
Zapněte Arduino!
Zapněte Arduino!
Zapněte Arduino!
Zapněte Arduino!
Zapněte Arduino!

Nyní stačí zapnout arduino a zobrazit funkci tabulky! Pomocí výše zmíněné knihovny animací můžete nasadit skvělé LED animace ws2812b, nebo můžete vložit kód konferenčního stolku a v každé sekci se rozsvítí. Neváhejte komentovat jakékoli dotazy nebo názory a já se pokusím ozvat se vám včas. Na zdraví!

Doporučuje: