Tartalomjegyzék:

Arduino interaktív LED dohányzóasztal: 6 lépés (képekkel)
Arduino interaktív LED dohányzóasztal: 6 lépés (képekkel)

Videó: Arduino interaktív LED dohányzóasztal: 6 lépés (képekkel)

Videó: Arduino interaktív LED dohányzóasztal: 6 lépés (képekkel)
Videó: Hogyan lehet a Windows 10 számítógéped letisztult/pro megjelenésű - Nincs szükség letöltésre 2024, Július
Anonim
Image
Image
Arduino interaktív LED dohányzóasztal
Arduino interaktív LED dohányzóasztal

Készítettem egy interaktív dohányzóasztalt, amely felgyújtja a ledlámpákat egy tárgy alatt, amikor a tárgyat az asztal fölé helyezik. Csak azok a LED -ek világítanak, amelyek az adott tárgy alatt vannak. Ezt úgy teszi, hogy hatékonyan használ közelségérzékelőket, és amikor a közelségérzékelő érzékeli, hogy egy objektum elég közel van, akkor megvilágít egy csomópontot az objektum alatt. Arduino segítségével animációkat is készít, amelyekhez nincs szükségük a közelségérzékelőkre, de hozzáadnak egy igazán jó hatást, amelyet egyszerűen imádok.

A közelségérzékelők fotodiódákból és infravörös sugárzókból állnak. A sugárzók infravörös fényt használnak (amelyet az emberi szem nem lát), hogy kivilágítsák az asztalt, és a fotodiódák megkapják az objektumról visszaverődő infravörös fényt. Minél több fény tükröződik (minél közelebb van az objektum), annál inkább ingadozik a feszültség a fotodiódákból. Ezt jelzőként használják annak jelzésére, hogy melyik csomópont világít. A csomópontok a ws2812b ledek és a közelségérzékelő gyűjteménye.

A mellékelt videó átfogja a teljes építési folyamatot, míg az alábbiakban további részleteket vázolok fel.

Kellékek

  1. ws2812b LED izzók -
  2. 5 V -os tápegység -
  3. Bármelyik Arduino -t használtam, a 2560 -at -
  4. Fénydiódák
  5. IR -kibocsátók
  6. 10 ohmos ellenállások
  7. 1 MOhm ellenállás
  8. 47 pF kondenzátor
  9. CD4051B multiplexerek
  10. SN74HC595 váltóregiszterek
  11. ULN2803A Darlington tömbök
  12. Bármilyen hordozót, amelyet nagy táblaként használhat a LED -ekhez, papír kompozit táblát használtam az otthoni raktárból

1. lépés: Hozza létre a táblát és helyezze be a LED -eket

Hozza létre a táblát és helyezze be a LED -eket
Hozza létre a táblát és helyezze be a LED -eket
Hozza létre a táblát és helyezze be a LED -eket
Hozza létre a táblát és helyezze be a LED -eket
Hozza létre a táblát és helyezze be a LED -eket
Hozza létre a táblát és helyezze be a LED -eket
Hozza létre a táblát és helyezze be a LED -eket
Hozza létre a táblát és helyezze be a LED -eket

Az első dolgom az volt, hogy létrehoztam a táblát, amely tartalmazza a dohányzóasztalba helyezett ledeket. Az otthoni raktárból használtam egy darab papír kompozit táblát, és a dohányzóasztalhoz megfelelő méretekre vágtam. A tábla méretre vágása után kifúrtam minden lyukat, ahová a ledek mentek. A táblán 8 sor és 12 oszlop ws2812b led volt, amelyek 3 hüvelyk távolságra voltak egymástól, és kígyózó mintázatban voltak rögzítve. Forró ragasztóval rögzítettem őket a helyükön.

Szintén lyukakat kellett fúrnom a csomópont középpontjába: 4 db négyzetet alkotó ws2812b led, 2 fotódióda és 2 infravörös sugárzó egy kisebb négyzeten ennek közepén. Ez a 4 lyuk a csomópont közepén a fotodiodák és az ir sugárzók foltjai (mindegyikből 2). Változtattam őket a maximális expozíció biztosítása érdekében, és körülbelül 1 hüvelyk távolságra helyeztem őket minden csomópont közepére. Ezeket nem kellett forró ragasztóval a helyükre ragasztani, csak meghajlítottam a vezetékeket a másik oldalon, hogy ne jöjjenek ki a másik oldalról. Gondoskodtam arról is, hogy a pozitív és negatív végeket bizonyos irányokba hajlítsam, hogy azok megfelelően legyenek beállítva az áramkörben. Minden pozitív vezeték a tábla hátoldalának bal oldalán volt, míg minden negatív vezeték a tábla jobb oldalán volt.

2. lépés: Ismerje meg az áramkört

Értsd meg az áramkört
Értsd meg az áramkört
Értsd meg az áramkört
Értsd meg az áramkört
Értsd meg az áramkört
Értsd meg az áramkört

Megjegyzés: Minden animált rajz nem pontos a megvalósításhoz (egyes arduino tűk különbözőek, és néhányat láncra fűzök, erről később). A végeredmény egy kicsit más volt az áramkör összetettsége miatt, de minden animált áramkör remek alapként szolgál az egyes részek prototípusának elkészítéséhez. A szokásos vázlat és kapcsolási rajz olyan, mint a projektben használt NYÁK -on.

A KiCad projektet és a gerber fájlokat tartalmazó PCB kód megtalálható itt: https://github.com/tmckay1/interactive_coffee_tabl…, ha Ön szeretné megrendelni a nyomtatott áramköri lapokat és létrehozni egy hasonló projektet. A táblák létrehozásához a NextPCB -t használtam.

A táblázat alapvetően három különböző áramkörből áll. Az első, amelyet nem részletezünk, és egy egyszerű áramkör, amely táplálja a ws2812b LED -eket. PWM adatjelet küld az Arduino a ws2812b led izzókra, és szabályozza, hogy milyen színek jelennek meg hol. A ws2812b LED -eket használjuk, mivel egyedileg címezhetők, így képesek leszünk szabályozni, hogy mely LED -eket kapcsoljuk be, és melyeket kapcsoljuk ki. A ws2812b LED -eket 5 V -os külső áramforrás táplálja, mivel az arduino önmagában nem rendelkezik elegendő energiával az összes lámpa bekapcsolásához. A mellékelt animált diagramon 330 ohmos felhúzó ellenállást használnak, azonban ezt nem használom fel az építésben.

A második áramkör bekapcsolja az infravörös sugárzókat. Ez az áramkör egy shift regisztert használ egy darlington tömb vezérlésére, amely áramot küld az infravörös sugárzóknak. A váltóregiszter egy integrált áramkör, amely képes kis és magas jelek küldésére több érintkezőre csak kis számú csapból. Esetünkben egy SN74HC595 shift regisztert használunk, amely 3 bemenetről vezérelhető, de akár 8 kimenetet is vezérelhet. Ennek az arduino -val való használatának az az előnye, hogy sorban akár 8 műszakregisztert is láncolhat (az arduino legfeljebb 8 -at tud kezelni). Ez azt jelenti, hogy mindössze 3 érintkezőre van szüksége az arduino -tól a 64 infravörös sugárzó be- és kikapcsolásához. A darlington tömb lehetővé teszi egy eszköz külső forrásból történő áramellátását, ha a bemeneti jel MAGAS, vagy kikapcsolhatja az eszközt, ha a bemeneti jel alacsony. Példánkban tehát egy ULN2803A darlington tömböt használunk, amely lehetővé teszi, hogy egy 5 V -os külső áramforrás akár 8 infravörös sugárzót is be- és kikapcsoljon. 10 ohmos ellenállást használunk sorban az infravörös sugárzókkal, hogy maximális áramot kapjunk az infravörös sugárzókból.

A harmadik áramkör multiplexert használ, hogy több bemenetet fogadjon a fotodiodáktól, és a kimenetet adatjelben küldi el. A multiplexer olyan eszköz, amely több bemenet beolvasására szolgál, és amelyekből csak ki kell olvasni, és csak néhány tűre van szükség. Az ellenkezőjét is megteheti (demultiplex), de ezt az alkalmazást itt nem használjuk. Esetünkben tehát CD4051B multiplexert használunk, hogy akár 8 jelet is felvegyünk a fotodiodákból, és csak 3 bemenetre van szükségünk ahhoz, hogy leolvassuk ezeket a jeleket. Ezenkívül akár 8 multiplexert is láncolhatunk (az arduino legfeljebb 8 -at tud kezelni). Ez azt jelenti, hogy az arduino 64 fotodióda -jelből tud olvasni mindössze 3 digitális tűről. A fotodiódák fordított elfogultságúak, ami azt jelenti, hogy ahelyett, hogy a pozitív feszültségforráshoz csatlakoztatott pozitív vezetékkel a normál irányba irányulnánk, a negatív vezetéket a pozitív feszültségforráshoz rendeljük. Ez ténylegesen a fotodiódákat fotóellenállásokká alakítja, amelyek ellenállása a beérkező fény mennyiségétől függően változik. Ezután létrehozunk egy feszültségosztót a fotodióda változó ellenállásától függő feszültség leolvasásához, egy rendkívül ellenálló 1 MOhm ellenállás hozzáadásával a földhöz. Ez lehetővé teszi számunkra, hogy magasabb és alacsonyabb feszültségeket kapjunk az arduino felé attól függően, hogy mennyi IR fényt kapnak a fotodiodák.

Ennek a kialakításnak a nagy részét egy másik személytől követtem, aki ezt tette itt: https://www.instructables.com/Infrared-Proximity-S… Ebben a kialakításban 47pF kondenzátort is adtak hozzá, ahogy mi is, az 1 MOhm ellenállással szemben a feszültségosztó létrehozására szolgál a fotodiodákkal. Ezt azért tette hozzá, mert PWM jelzéssel be- és kikapcsolta az infravörös sugárzókat, és ezzel kis feszültségcsökkenést vont le a fotodiodákból, amikor az infravörös sugárzókat azonnal bekapcsolták. Ez a fotódiódák ellenállását is megváltoztatta, még akkor is, ha nem kapott több infravörös fényt egy tárgytól, mivel az infravörös sugárzók ugyanazt az 5 V -os áramforrást használták, mint a fotodiodák. A kondenzátort arra használták, hogy az infravörös sugárzók be- és kikapcsolásakor ne legyen feszültségcsökkenés. Eredetileg ugyanezt a stratégiát terveztem végrehajtani, de kifutottam az időből a tesztelésre, ezért inkább az infravörös sugárzókat hagytam mindig bekapcsolva. A jövőben szeretnék ezen változtatni, de amíg át nem tervezem a kódot és az áramkört, jelenleg a NYÁK -ot úgy tervezték, hogy az infravörös lámpák mindig világítsanak, és mindenesetre megtartottam a kondenzátorokat. Nem kell a kondenzátor, ha ezt a NYÁK -konstrukciót használja, de bemutatom a NYÁK egy másik verzióját, amely további bemenetet fogad el a műszakregiszterben, amely lehetővé teszi az infravörös sugárzók be- és kikapcsolását. Ezzel sokat spórolhat az energiafogyasztáson.

A csatolt animált diagramokon ellenőrizheti a prototípus beállítását az arduino teszteléséhez. Minden áramkörhöz tartozik egy részletesebb színes vázlat is, amely felvázolja az elektronikus eszközök beállítását és tájolását. A mellékelt NYÁK -vázlatban 4 összáramkörünk van, 2 áramkör az infravörös sugárzók bekapcsolásához, és 2 áramkör a fotodiodák leolvasásához. A két PCB csoportot egymás mellett, 1 IR -emitter áramkörből és 1 fotodióda -áramkörből állítják, így 2 oszlop 8 csomópontból egyetlen PCB -be helyezhető. Ezenkívül a két áramkört összekapcsoljuk, így az arduino három csapja vezérelheti a két műszakregisztert, és további 3 csap a két multiplexert a táblán. Van egy további kimeneti fejléc, amely lehetővé teszi a lánc további PCB -khez való kapcsolását.

Íme néhány erőforrás, amelyet a prototípusok elkészítéséhez követtem:

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

3. lépés: Forrasztó vezetékek a csomóponthoz

Forrasztó vezetékek a csomóponthoz
Forrasztó vezetékek a csomóponthoz
Forrasztó vezetékek a csomóponthoz
Forrasztó vezetékek a csomóponthoz
Forrasztó vezetékek a csomóponthoz
Forrasztó vezetékek a csomóponthoz
Forrasztó vezetékek a csomóponthoz
Forrasztó vezetékek a csomóponthoz

Most, hogy megértette, hogyan készül az áramkör, menjen előre és forrasztja a vezetékeket minden csomóponthoz. A fotodiodákat párhuzamosan forrasztottam (sárga és szürke vezetékek), az ir sugárzókat pedig sorban (narancssárga huzal). Ezután párhuzamosan forrasztottam egy hosszabb sárga vezetéket a fotodiodákhoz, amelyeket az 5 V -os áramforráshoz csatlakoztatnak, és egy kék vezetéket, amelyet a NYÁK fotodiódás bemenetéhez csatlakoztatnak. Forrasztottam egy hosszú piros vezetéket az infravörös sugárzó áramkörhöz, amelyet az 5 V -os áramforráshoz való csatlakoztatáshoz használnak, és egy fekete vezetéket, amely a NYÁK IR -emitter bemenetéhez csatlakozik. Valójában a vezetékeket kissé rövidre húztam, elfogyott az idő, így végül csak 5 csomópontot tudtam összekötni minden oszlopban (7 helyett). Ezt tervezem később kijavítani.

4. lépés: Forrasztja a NYÁK -alkatrészeket és rögzítse a táblához

Forrasztja a NYÁK -alkatrészeket és rögzítse a táblához
Forrasztja a NYÁK -alkatrészeket és rögzítse a táblához
Forrasztja a NYÁK -alkatrészeket és rögzítse a táblához
Forrasztja a NYÁK -alkatrészeket és rögzítse a táblához
Forrasztja a NYÁK -alkatrészeket és rögzítse a táblához
Forrasztja a NYÁK -alkatrészeket és rögzítse a táblához

Megjegyzés: A mellékelt képen található NYÁK az első olyan verzió, amelyet nem készítettem be és ki, és mindegyik belső áramkörhöz egy láncolat. Az új NYÁK -konstrukció kijavítja ezt a hibát.

Itt csak a PCB vázlatát kell követnie az alkatrészek forrasztásához a PCB -hez, majd ha ez megtörtént, forrasztja a NYÁK -t a táblához. Külső áramköri lapokat használtam az 5 V -os tápjel csatlakoztatásához, amelyet minden sárga és piros vezetékre elosztottam. Utólag nem volt szükségem ilyen hosszú piros és sárga vezetékekre, és összeköthettem volna egymással a csomópontokat (ahelyett, hogy közös külső áramköri laphoz csatlakoztatnám őket). Ez valóban csökkenteni fogja a rendetlenség mennyiségét a tábla hátoldalán.

Mivel 8 sor ws2812b ledem és 12 oszlopom volt, végül 7 sor és 11 oszlopnyi csomópont állt rendelkezésemre (összesen 77 csomópont). Az ötlet az, hogy a NYÁK egyik oldalát használja a csomópontok egyik oszlopához, a másik oldalát pedig a másik oszlophoz. Mivel 11 oszlopom volt, 6 PCB -re volt szükségem (az utolsóhoz csak egy komponenscsoport szükséges). Mivel túl rövidre tettem a vezetékeket, csak 55 csomópontot, 11 oszlopot és 5 sort tudtam összekapcsolni. Látható a képen, hibáztam, és forrasztottam a nyers vezetékeket a táblához, ami jó lenne, ha a vezetékek elég vékonyak lennének, de az én esetemben túl vastagok. Ez azt jelentette, hogy minden IR -emitter bemenethez és fotodióda -bemenethez nagyon közel voltak a kopó huzalvégeim, így sok hibakeresés történt az összes vezetékzárlat miatt. A jövőben csatlakozókat fogok használni a PCB csatlakoztatásához a fedélzeti vezetékekhez, hogy elkerülje a rövidzárlatot és tisztítsa meg a dolgokat.

Mivel az Arduino csak 8 műszakregisztert és multiplexert képes láncolni, két külön láncot hoztam létre, az egyik az első 8 oszlopot, a másik pedig a fennmaradó 3 oszlopot. Ezután minden egyes láncot egy másik PCB -hez csatoltam, amely mindössze 2 multiplexerrel rendelkezett, így ki tudtam olvasni a multiplexer adatjelek minden láncát a két multiplexertől az arduino -ba. Ez a két multiplexer szintén láncra volt kötve. Ez azt jelenti, hogy összesen 16 kimeneti jelet és 2 analóg bemenetet használtak az arduino -ban: 1 kimeneti jelet a ws2812b LED -ek vezérléséhez, 3 kimeneti jelet a váltóregiszterek első láncához, 3 kimeneti jelet a multiplexerek első láncához, 3 kimeneti jel a váltóregiszterek második láncához, 3 kimeneti jel a multiplexerek második láncához, 3 kimeneti jel a 2 multiplexerhez, amelyek összesítik a PCB adatjeleket, és végül 2 analóg bemenet minden adatjelhez a 2 összesített multiplexerből.

5. lépés: Tekintse át a kódot

Megjegyzés: Az alábbi interaktív kódon kívül egy harmadik féltől származó könyvtárat használtam a ws2812b LED -ek animációinak elkészítéséhez. Itt megtalálod:

Az általam használt kódot itt találod:

Felül definiálom az arduino csapokat, amelyek a NYÁK minden részéhez csatlakoznak. A beállítási módban beállítom a multiplexerek kimeneti csapjait, bekapcsolom az infravörös sugárzókat, beállítok egy baseVal tömböt, amely nyomon követi az egyes fotodiódák környezeti fényét, és inicializálja a FastLED -et, amely írni fog a ws2812b LED -ekre. A ciklus módszerben visszaállítjuk a ws2812b szalagon bekapcsolásra kijelölt ledek listáját. Ezután kiolvassuk az értékeket a multiplexer láncok fotodiodáiból, és bekapcsoljuk azokat a ws2812b LED -eket, amelyeknek akkor kell világítaniuk, ha a csomópontban lévő fotodióda leolvasása meghalad egy meghatározott küszöbértéket a környezeti fény leolvasásának alapértékétől. Ezután megjelenítjük a LED -eket, ha bármilyen változás történik a bekapcsolandó csomópontban. Ellenkező esetben addig folytatódik, amíg valami megváltozik a dolgok felgyorsítása érdekében.

Valószínűleg a kódon lehetne javítani, és ezt meg is vizsgálom, de körülbelül 1-2 másodperc késés van attól, hogy a lámpák felgyulladnak, miután egy tárgyat letettek az asztalra. Úgy gondolom, hogy a mögöttes probléma az, hogy a FastLED némi időt vesz igénybe az asztalon lévő 96 led megjelenítéséhez, és a kódnak végig kell hurkolnia és ki kell olvasnia a táblázat 77 bemenetét. Kipróbáltam ezt a kódot 8 LED -del, és azt találtam, hogy szinte azonnali, de a LED -ek édes pontját keresem, amelyek működnek ezzel a kóddal, és szinte azonnal, valamint javítják a kódot.

6. lépés: Kapcsolja be az Arduino -t

Kapcsolja be az Arduino -t!
Kapcsolja be az Arduino -t!
Kapcsolja be az Arduino -t!
Kapcsolja be az Arduino -t!
Kapcsolja be az Arduino -t!
Kapcsolja be az Arduino -t!

Most már csak be kell kapcsolnia az arduino -t, és meg kell néznie a táblázat funkciót! A korábban említett animációs könyvtár használatával felvihet néhány fantasztikus ws2812b led animációt, vagy felveheti a dohányzóasztal kódját, és láthatja, hogy világít az egyes szakaszokban. Bármilyen kérdéssel vagy véleménysel forduljon hozzánk bizalommal, és megpróbálok időben válaszolni. Egészségére!

Ajánlott: