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, Srpanj
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 sustav koji sam izumio za kontrolu RGB LED trake u stvarnom vremenu, uz održavanje niske cijene i visokih performansi.

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

U mom primjeru koristim Raspberry Pi 3B za dugotrajnu upotrebu, ali svoje Windows računalo radi demonstracije i ispravljanja pogrešaka.

4-polna traka kontrolirana je tipskom pločom Arduino Nano, koja izvršava serijski zadane naredbe za slanje PWM signala na tri tranzistora prebacujući +12VDC u odgovarajuću bojnu iglu trake.

LightMeUp! sustav 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 značajka LightMeUpa! je osvijetliti bocu Bombay-Sapphire Gin, ali to nije fokus ovog Instructable-a.

Uživaj čitajući:)

Pribor

  • Arduino Nano (ili bilo koji drugi mikrokontroler na bazi ATmega328 / više)
  • Raspberry Pi 3 Model B s instaliranim Node.js (ili bilo kojim drugim računalom)
  • 12V RGB 4-pinska LED traka
  • 12V 3A Napajanje
  • Kratki kabeli (muško-muški ako koristite ploču, naravno)
  • Oglasna ploča (izborno)
  • 2 12V DC ventilatora za računalo (opcionalno)
  • 3x TIP120 Darlington tranzistor s 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)
  • Podatkovni kabel USB-Mini na USB 2.0 (za komunikaciju Raspberry Pi s Arduinom)
  • USB-čvorište sa vanjskim napajanjem (opcionalno, samo za Raspberry Pi)

Korak 1: Shvatite sustav

Shvatite Sustav
Shvatite Sustav

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

Imamo neku vrstu računala (u ovom slučaju Raspberry Pi) koje 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 smo dobili 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ćuje tranzistoru da uključi odgovarajući pin boje na koji je kolektor spojen na masu, u određenom stupnju ili potpuno uključen / isključen. Da, puno "za":)

Miješanjem tri izlaza tranzistora na pinove 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 knjižnice 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ćuje prijenos dvosmjernih ulaznih podataka poput boje na koju želite postaviti LED traku ili podataka o statusu poput "LED ON" bez osvježavanja.

Još jedna vrlo važna značajka koju bi poslužitelj trebao imati, ali i ne mora, je jednostavna prijava. Svoju prijavu temeljio sam na jednostavnom polju za korisničko ime i zaporku. Ti se podaci zatim objavljuju na /login ruti poslužitelja, koji zatim uspoređuje korisničko ime s popisom korisnika (.txt datoteka) i odgovarajućom lozinkom u svom SHA256-šifriranom obliku. Ne želite da vam susjedi petljaju s LED trakom dok uživate u omiljenom piću na svom najudobnijem sjedalu, zar ne?

Sada dolazi srce poslužitelja, 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čunalu na kojem je poslužitelj. Ovisno o vašem operativnom sustavu, portovi će imati različita imena, npr. u sustavu Windows ti se portovi nazivaju "COMx" portovi, dok se u linuxu nazivaju "/dev/ttyUSBx", gdje je x broj USB priključka.

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 postići da vaš vlastiti pisač poslužitelj i Arduino ploča uspješno razgovaraju jedni s drugima.

Nakon što ste uspješno otvorili serijski port, morate moći 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 izvrsnu implementaciju visokokvalitetnog elementa za odabir boje, koji posjeduje događaj pod nazivom "onFineChange" koji omogućuje vaše podatke o procesu iz alata za odabir boje čim se promijene vrijednosti.

Preporučeni: