Tartalomjegyzék:

Világosíts fel! a Valós idejű, többplatformos LED szalagvezérlés: 5 lépés (képekkel)
Világosíts fel! a Valós idejű, többplatformos LED szalagvezérlés: 5 lépés (képekkel)

Videó: Világosíts fel! a Valós idejű, többplatformos LED szalagvezérlés: 5 lépés (képekkel)

Videó: Világosíts fel! a Valós idejű, többplatformos LED szalagvezérlés: 5 lépés (képekkel)
Videó: Trí tuệ bừng sáng khi tỏ ngộ: NHƯ LAI TÀNG là bản thể chơn như của vạn pháp. THỦ LĂNG NGHIÊM KINH T2 2024, Július
Anonim
Világosíts fel! egy valós idejű, többplatformos LED szalagvezérlő
Világosíts fel! egy valós idejű, többplatformos LED szalagvezérlő
Világosíts fel! egy valós idejű, többplatformos LED szalagvezérlő
Világosíts fel! egy valós idejű, többplatformos LED szalagvezérlő
Világosíts fel! egy valós idejű, többplatformos LED szalagvezérlő
Világosíts fel! egy valós idejű, többplatformos LED szalagvezérlő

Világosíts fel! egy olyan rendszer, amelyet az RGB LED-szalag valós idejű vezérlésére találtam ki, miközben alacsonyan tartom a költségeket és magas a teljesítmény.

A szerver Node.js formátumban van írva, és ezért platformon keresztüli.

Példámban Raspberry Pi 3B -t használok hosszú távú használatra, de a Windows PC -t a demonstráció és a hibakeresés érdekében.

A 4 tűs csíkot egy Arduino Nano típuslap vezérli, amely sorozatosan adott parancsokat hajt végre, hogy PWM jeleket küldjön három tranzisztornak, amelyek a +12VDC-t a szalag megfelelő színű tűjébe kapcsolják.

A LightMeUp! A rendszer ellenőrzi a saját hőmérsékletét is, ha 60 ° C fölött van, bekapcsol két, a házba épített 12 V egyenáramú számítógép -ventilátort, hogy lehűtse magát, hogy javítsa az áramkör élettartamát.

A LightMeUp másik jellemzője! célja egy Bombay-Sapphire Gin palack megvilágítása, de ez nem az útmutató része.

Élvezd az olvasást:)

Kellékek

  • Arduino Nano (vagy bármely más ATmega328 / magasabb szintű mikrokontroller)
  • Raspberry Pi 3 B modell Node.js telepítéssel (vagy bármely más számítógéppel)
  • 12V RGB 4 tűs LED szalag
  • 12V 3A tápegység
  • Jumper kábelek (természetesen férfi-férfi, ha kenyérlapot használ)
  • Kenyeretábla (opcionális)
  • 2 db 12V DC számítógép ventilátor (opcionális)
  • 3x TIP120 Darlington tranzisztor hűtőbordával (4, ha hűtőventilátorokat szeretne beépíteni)
  • 2 állapotjelző LED piros és zöld (opcionális)
  • 6, 7K NTC hőmérséklet-alapú ellenállás + 6, 7K ellenállás (opcionális)
  • USB-Mini-USB 2.0 adatkábel (a Raspberry Pi számára, hogy kommunikáljon az Arduino-val)
  • Külső tápellátású USB-hub (opcionális, csak a Raspberry Pi esetében)

1. lépés: Ismerje meg a rendszert

Ismerje meg a Rendszert
Ismerje meg a Rendszert

Világosíts fel! nagyon egyszerű elektronikus áramkörön alapul.

Van valamilyen számítógépünk (ebben az esetben egy Raspberry Pi), amely soros kommunikációt folytat a mikrokontroller táblánkkal. Ez a tábla ezután bizonyos soros parancsokat hajt végre, mint például az "RGB (255, 255, 255)", amelyek a LED-csíkot fehéredik.

Miután megkaptuk a 4-es LED-szalagunkhoz szükséges három értéket: PIROS, ZÖLD és KÉK, végrehajtjuk az analóg írást (tű, érték) annak érdekében, hogy a TIP120 tranzisztorunkat PWM jellel láthassuk el.

Ez a PWM jel lehetővé teszi a tranzisztornak, hogy a megfelelő színű tűt, amelyhez a gyűjtője a földhöz van csatlakoztatva, bizonyos fokig vagy teljesen be / ki kapcsolja. Igen, sok a "to":)

Ha összekeverjük a három tranzisztoros kimenetet a LED csíkok színű csapjaival, akkor alapvetően bármilyen színt hozhatunk létre!

Most ezzel a megértéssel támadhatjuk meg a projekt legnagyobb kihívását, a websocketservert és annak soros kapcsolatát az Arduino -val.

2. lépés: A WebSocketServer írása

A WebSocketServer írása
A WebSocketServer írása

Most létre kell hoznunk egy speciális webszervert, amely lehetővé teszi számunkra, hogy frissítés nélkül továbbítsuk az adatokat oda -vissza, hogy valós idejű LED szalagvezérlést érjünk el.

Kérjük, vegye figyelembe, hogy a valós idejű kommunikáció természetesen lehetetlen, legalább néhány ezredmásodperces késleltetéssel kell számolni, de emberi szemmel ez valós időben is jelentős.

Ezt könnyen elérheti a socket.io könyvtár használatával, ha a Node.js -t használja, mint én. Természetesen mindig ragaszkodhat kedvenc programozási nyelvéhez.

Websocket kapcsolattal lesz dolgunk, amely lehetővé teszi számunkra a bemeneti adatok, például a LED-szalag színének beállítását, vagy az állapotadatok, például a "LED ON" kétirányú átvitelét frissítés nélkül.

Egy másik nagyon fontos szolgáltatás, amellyel a szervernek rendelkeznie kell, de nem szükséges, az egyszerű bejelentkezés. A bejelentkezésemet egy egyszerű felhasználónév és jelszó mezőre alapozom. Ezeket az információkat ezután közzéteszik a szerver /bejelentkezési útvonalán, amely aztán összehasonlítja a felhasználónevet a felhasználók listájával (.txt fájl) és a megfelelő jelszóval az SHA256 titkosított formában. Nem akarod, hogy szomszédaid összezavarják a LED szalagodat, miközben kedvenc italodat a legkényelmesebb üléseden fogyasztod, igaz?

Most jön a szerver szíve, a soros kommunikáció.

A szervernek képesnek kell lennie soros kommunikációra - a Node.js fájlban ezt úgy érheti el, hogy megnyit egy portot a "serialport" könyvtár használatával. De először határozza meg az arduino port nevét a számítógépen, amely a szervert fogadja. Az operációs rendszertől függően a portok különböző neveket kapnak, pl. Windows rendszeren ezeket a portokat "COMx" portoknak nevezik, míg linuxon "/dev/ttyUSBx", ahol x az USB -port száma.

3. lépés: Készítse el a soros parancsok protokollját

Készítse el a soros parancsok protokollját
Készítse el a soros parancsok protokollját

A fenti képen az RGB vezérlésért felelős Arduino IDE kód látható. Ennek a lépésnek az a célja, hogy az ön által írt szerver és az Arduino tábla sikeresen beszéljen egymással.

Miután sikeresen megnyitotta a soros portot, képesnek kell lennie parancsok küldésére a táblára, amely gondoskodik a kívánságairól. Például, ha ujját húzzuk a színválasztó fölé a HTML weboldalon, akkor az RGB -kódot el kell küldeni a szervernek, amely elküldi azt az Arduino -nak, hogy feldolgozza a beállított értékeket.

Én a jscolor -t használtam, remekül megvalósítják a kiváló minőségű színfelvételi elemet, amelynek van egy "onFineChange" nevű eseménye, amely lehetővé teszi a színválasztóból származó feldolgozási adatok megadását, amint azok értékei megváltoznak.

Ajánlott: