Sadržaj:

LightMeUp! kontrola LED traka s unakrsnom platformom u stvarnom vremenu: 5 koraka (sa slikama)
LightMeUp! kontrola LED traka s unakrsnom platformom u stvarnom vremenu: 5 koraka (sa slikama)

Video: LightMeUp! kontrola LED traka s unakrsnom platformom u stvarnom vremenu: 5 koraka (sa slikama)

Video: LightMeUp! kontrola LED traka s unakrsnom platformom u stvarnom vremenu: 5 koraka (sa slikama)
Video: Мировая премьера совершенно нового Hyundai TUCSON 2024, Juli
Anonim
LightMeUp! kontrola LED traka s unakrsnom platformom u stvarnom vremenu
LightMeUp! kontrola LED traka s unakrsnom platformom u stvarnom vremenu
LightMeUp! kontrola LED traka s unakrsnom platformom u stvarnom vremenu
LightMeUp! kontrola LED traka s unakrsnom platformom u stvarnom vremenu
LightMeUp! kontrola LED traka s unakrsnom platformom u stvarnom vremenu
LightMeUp! kontrola LED traka s unakrsnom platformom u stvarnom vremenu

LightMeUp! je sistem koji sam izumio za kontrolu RGB LED trake u stvarnom vremenu, uz održavanje niske cijene i visokih performansi.

Poslužitelj je napisan na Node.js i stoga se može cross-platformatirati.

U mom primjeru, ja koristim Raspberry Pi 3B za dugotrajnu upotrebu, ali moj Windows PC radi demonstracije i otklanjanja grešaka.

4pin-trakom upravlja Arduino Nano tipska ploča koja izvršava serijski zadane naredbe za slanje PWM signala na tri tranzistora prebacujući +12VDC u odgovarajuću bojnu iglu trake.

LightMeUp! sistem također provjerava vlastitu temperaturu, nakon što je iznad 60 ° C (140 ° F), uključuje dva računarska ventilatora od 12VDC ugrađena u kućište, kako bi se ohladila kako bi poboljšala vijek trajanja kruga.

Još jedna karakteristika LightMeUp -a! treba osvijetliti bocu bombajsko-safirnog džina, ali to nije fokus ovog uputstva.

Uživajte u čitanju:)

Supplies

  • Arduino Nano (ili bilo koji drugi ATmega328 / viši mikrokontroler)
  • Raspberry Pi 3 model B sa instaliranim Node.js (ili bilo kojim drugim računarom)
  • 12V RGB 4-pinska LED traka
  • 12V 3A Napajanje
  • Premosni kablovi (muško-muški ako koristite ploču, naravno)
  • Oglasna ploča (nije obavezno)
  • 2 12V DC ventilatora za računare (opcionalno)
  • 3x TIP120 Darlington tranzistor sa hladnjakom (4 ako želite uključiti ventilatore za hlađenje)
  • 2 LED diode statusa crvena i zelena (opcionalno)
  • 6, 7K NTC otpornik temeljen na temperaturi + 6,7K otpornik (opcionalno)
  • USB-Mini na USB 2.0 podatkovni kabel (da Raspberry Pi komunicira s Arduinom)
  • USB-čvorište sa vanjskim napajanjem (opcionalno, samo za Raspberry Pi)

Korak 1: Shvatite sistem

Razumeti sistem
Razumeti sistem

LightMeUp! temelji se na vrlo jednostavnim elektroničkim kolima.

Imamo neku vrstu računara (u ovom slučaju Raspberry Pi) koji serijski komunicira s našom pločom mikrokontrolera. Ova ploča tada izvršava posebne serijske naredbe poput "RGB (255, 255, 255)" koje bi našu LED traku postale bijele.

Nakon što dobijemo tri vrijednosti za CRVENU, ZELENU i PLAVU potrebnu za našu 4-polnu LED traku, izvršavamo analogWrite (pin, vrijednost) kako bismo opskrbili naš TIP120 tranzistor PWM signalom.

Ovaj PWM signal omogućava tranzistoru da prebaci odgovarajuću pin boje na koju je kolektor spojen na masu, u određenom stepenu ili potpuno uključivanje / isključivanje. Da, puno "za":)

Miješanjem tri izlaza tranzistora s pinovima u boji LED traka možemo stvoriti u osnovi bilo koju boju koju želimo!

S ovim razumijevanjem možemo napasti najveći izazov ovog projekta, websocketserver i njegovu serijsku vezu s našim Arduinom.

Korak 2: Pisanje WebSocketServera

Pisanje WebSocketServera
Pisanje WebSocketServera

Sada moramo stvoriti određenu vrstu web poslužitelja koji nam omogućuje prijenos podataka naprijed -natrag bez osvježavanja jednom kako bismo postigli kontrolu LED trake u stvarnom vremenu.

Imajte na umu da je komunikacija u stvarnom vremenu naravno nemoguća, uvijek će doći do kašnjenja od barem nekoliko milisekundi, ali za ljudsko oko to je značajno kao u stvarnom vremenu.

To se lako može postići korištenjem socket.io biblioteke ako koristite Node.js kao i ja. Naravno, uvijek se možete držati svog omiljenog programskog jezika.

Bavit ćemo se websocket vezom koja nam omogućava dvosmjerni prijenos ulaznih podataka, na koju boju želite postaviti LED traku, ili podatke o statusu poput "LED ON" bez osvježavanja.

Još jedna vrlo važna karakteristika koju server treba imati, ali i ne mora, je jednostavno prijavljivanje. Prijavu sam zasnovao na jednostavnom polju za korisničko ime i lozinku. Ti se podaci zatim objavljuju na /login ruti poslužitelja, koja zatim uspoređuje korisničko ime s popisom korisnika (.txt datoteka) i odgovarajućom lozinkom u svom SHA256 šifriranom obliku. Ne želite da se vaši susjedi petljaju sa vašom LED trakom dok uživate u omiljenom piću na svom najudobnijem sjedalu, zar ne?

Sada dolazi srce servera, serijska komunikacija.

Vaš poslužitelj mora imati mogućnost serijske komunikacije - u Node.js to se može postići otvaranjem porta pomoću biblioteke "serialport". Ali prvo odredite naziv svog arduino porta na računaru na kojem se nalazi server. Ovisno o vašem operativnom sistemu, portovi će imati različita imena, npr. na Windowsima se ti portovi nazivaju "COMx" portovi, dok se na linux -u zovu "/dev/ttyUSBx", gdje je x broj USB porta.

Korak 3: Uspostavite protokol serijskih naredbi

Uspostavite protokol serijskih naredbi
Uspostavite protokol serijskih naredbi

Na gornjoj slici vidite stvarni Arduino IDE kod odgovoran za RGB kontrolu. Cilj ovog koraka je da vaš server i Arduino ploča sa vlastitim pismom uspješno razgovaraju jedni s drugima.

Nakon što ste uspješno otvorili serijski port, morate biti u mogućnosti slati naredbe na ploču koja vodi računa o vašim željama. Na primjer, ako povučemo prst iznad birača boja na HTML web stranici, RGB kôd treba poslati poslužitelju koji ga zatim šalje vašem Arduinu kako bi obradio postavljene vrijednosti.

Koristio sam jscolor, oni imaju odličnu implementaciju visokokvalitetnog elementa za odabir boje, koji posjeduje događaj pod nazivom "onFineChange" koji dozvoljava vašim procesnim podacima iz birača boja čim se promijene vrijednosti.

Preporučuje se: