Kazalo:

Prižgi me! nadzor v realnem času z navzkrižno ploščatimi LED trakovi: 5 korakov (s slikami)
Prižgi me! nadzor v realnem času z navzkrižno ploščatimi LED trakovi: 5 korakov (s slikami)

Video: Prižgi me! nadzor v realnem času z navzkrižno ploščatimi LED trakovi: 5 korakov (s slikami)

Video: Prižgi me! nadzor v realnem času z navzkrižno ploščatimi LED trakovi: 5 korakov (s slikami)
Video: Росс Култхарт: НЛО, записки Уилсона, проект SAFIRE [Часть 1] 2024, Julij
Anonim
Prižgi me! nadzor LED trakov z navzkrižno platformami v realnem času
Prižgi me! nadzor LED trakov z navzkrižno platformami v realnem času
Prižgi me! nadzor LED trakov z navzkrižno platformami v realnem času
Prižgi me! nadzor LED trakov z navzkrižno platformami v realnem času
Prižgi me! nadzor LED trakov z navzkrižno platformami v realnem času
Prižgi me! nadzor LED trakov z navzkrižno platformami v realnem času

Prižgi me! je sistem, ki sem ga izumil za nadzor RGB LED traku v realnem času, hkrati pa ohranja nizke stroške in visoko zmogljivost.

Strežnik je napisan v Node.js in ga je zato mogoče medoblikovati.

V mojem primeru uporabljam Raspberry Pi 3B za dolgotrajno uporabo, računalnik z operacijskim sistemom Windows pa zaradi demonstracije in odpravljanja napak.

4-pinski trak nadzira tipska plošča Arduino Nano, ki izvaja zaporedno podane ukaze za pošiljanje PWM signalov na tri tranzistorje, ki preklopijo +12VDC v ustrezno barvno iglo traku.

LightMeUp! sistem preveri tudi svojo temperaturo, ko je nad 60 ° C (140 ° F), vklopi dva računalniška ventilatorja 12VDC, vgrajena v ohišje, da se ohladi in tako izboljša življenjsko dobo vezja.

Druga značilnost programa LightMeUp! je osvetliti steklenico Bombay-Sapphire Gin, vendar to ni v središču tega navodila.

Uživajte v branju:)

Zaloge

  • Arduino Nano (ali kateri koli drug mikrokrmilnik na osnovi ATmega328 / višje)
  • Raspberry Pi 3 Model B z nameščenim Node.js (ali katerim koli drugim računalnikom)
  • 12V RGB 4-pinski LED trak
  • 12V 3A Napajanje
  • Mostični kabli (moški-moški, če uporabljate mizo, seveda)
  • Ogledna plošča (neobvezno)
  • 2 računalniška ventilatorja 12V DC (neobvezno)
  • 3x TIP120 Darlington tranzistor s hladilnikom (4, če želite vključiti hladilne ventilatorje)
  • 2 LED -lučki stanja rdeča in zelena (neobvezno)
  • 6, 7K temperaturni upor NTC + 6, 7K upor (neobvezno)
  • Podatkovni kabel USB-Mini do USB 2.0 (za komunikacijo Raspberry Pi z Arduinom)
  • USB-zvezdišče z zunanjim napajanjem (neobvezno, samo za Raspberry Pi)

1. korak: Razumeti sistem

Razumeti sistem
Razumeti sistem

Prižgi me! temelji na zelo preprostem elektronskem vezju.

Imamo nekakšen računalnik (v tem primeru Raspberry Pi), ki serijsko komunicira z našo mikrokrmilno ploščo. Ta plošča nato izvede posebne serijske ukaze, kot je "RGB (255, 255, 255)", ki bi naš trak LED obarvali belo.

Ko dobimo tri vrednosti za RDEČO, ZELENO in MODRO, ki so potrebne za naš 4pin LED-trak, izvedemo analogWrite (pin, vrednost), da napajamo naš tranzistor TIP120 s PWM signalom.

Ta signal PWM omogoča tranzistorju, da v določeni meri ali popolnoma vklopi / izklopi ustrezen barvni pin, na katerega je kolektor priključen. Ja, veliko "za":)

Z mešanjem treh izhodov tranzistorjev na barvne zatiče LED trakov lahko v bistvu ustvarimo poljubno barvo!

S tem razumevanjem lahko napadnemo največji izziv tega projekta, spletni strežnik in njegovo serijsko povezavo z našim Arduinom.

2. korak: Pisanje WebSocketServerja

Pisanje WebSocketServerja
Pisanje WebSocketServerja

Zdaj moramo ustvariti posebno vrsto spletnega strežnika, ki nam omogoča prenos podatkov naprej in nazaj brez enkratnega osveževanja, da dosežemo nadzor LED traku v realnem času.

Upoštevajte, da komunikacija v realnem času seveda ni mogoča, vedno bo prišlo vsaj do nekaj milisekund zamude, a za človeško oko je to precej kot v realnem času.

To lahko preprosto dosežete z uporabo knjižnice socket.io, če uporabljate Node.js tako kot jaz. Seveda pa se lahko vedno držite svojega najljubšega programskega jezika.

Ukvarjali se bomo s povezavo websocket, ki nam omogoča dvosmerno prenašanje vhodnih podatkov, na primer za katero barvo želite nastaviti LED-trak, ali podatkov o stanju, kot je »LED ON«, brez osveževanja.

Druga zelo pomembna lastnost, ki bi jo moral imeti strežnik, ni pa nujna, je preprosta prijava. Svojo prijavo sem temeljil na preprostem polju za uporabniško ime in geslo. Ti podatki se nato objavijo na poti /login strežnika, ki nato primerja uporabniško ime s seznamom uporabnikov (datoteka.txt) in ustreznim geslom v šifrirani obliki SHA256. Ne želite, da se vaši sosedje zapletajo z vašim LED trakom, medtem ko uživate v svoji najljubši pijači na svojem najbolj udobnem sedežu, kajne?

Zdaj prihaja srce strežnika, serijska komunikacija.

Vaš strežnik mora imeti možnost serijske komunikacije - v Node.js je to mogoče doseči z odpiranjem vrat z uporabo knjižnice "serialport". Najprej pa določite ime svojih vrat arduino v računalniku, ki gosti strežnik. Odvisno od vašega operacijskega sistema bodo vrata imela različna imena, npr. v operacijskem sistemu Windows se ta vrata imenujejo "COMx" vrata, v linuxu pa "/dev/ttyUSBx", kjer je x številka vrat USB.

3. korak: Vzpostavite protokol zaporednih ukazov

Vzpostavite protokol zaporednih ukazov
Vzpostavite protokol zaporednih ukazov

Na zgornji sliki vidite dejansko kodo Arduino IDE, odgovorno za nadzor RGB. Cilj tega koraka je, da se vaš samostojno napisani strežnik in plošča Arduino uspešno pogovarjata.

Ko uspešno odprete serijska vrata, morate biti sposobni pošiljati ukaze na ploščo, ki skrbi za vaše želje. Če na primer potegnemo prst nad izbirnikom barv na spletni strani HTML, je treba kodo RGB poslati strežniku, ki jo nato pošlje v vaš Arduino, da obdeluje nastavljene vrednosti.

Uporabil sem jscolor, imajo odlično izvedbo visokokakovostnega elementa izbire barv, ki ima v lasti dogodek, imenovan "onFineChange", ki omogoča, da se vaši podatki o postopku izbirnika barv takoj, ko se spremenijo vrednosti.

Priporočena: