INHOUDSOPGAWE:

LightMeUp! 'n Realtime Cross-platformed LED Strip Control: 5 stappe (met foto's)
LightMeUp! 'n Realtime Cross-platformed LED Strip Control: 5 stappe (met foto's)

Video: LightMeUp! 'n Realtime Cross-platformed LED Strip Control: 5 stappe (met foto's)

Video: LightMeUp! 'n Realtime Cross-platformed LED Strip Control: 5 stappe (met foto's)
Video: Removing Ureteral Stent in 15 Seconds #shorts 2024, Julie
Anonim
LightMeUp! 'n Realtime Cross-platformed LED Strip Control
LightMeUp! 'n Realtime Cross-platformed LED Strip Control
LightMeUp! 'n Realtime Cross-platformed LED Strip Control
LightMeUp! 'n Realtime Cross-platformed LED Strip Control
LightMeUp! 'n Realtime Cross-platformed LED Strip Control
LightMeUp! 'n Realtime Cross-platformed LED Strip Control

LightMeUp! is 'n stelsel wat ek uitgevind het om 'n RGB LED-strook intyds te beheer, terwyl die koste laag en die prestasie hoog gehou word.

Die bediener is in Node.js geskryf en daarom kruisplatformeerbaar.

In my voorbeeld gebruik ek 'n Raspberry Pi 3B vir langtermyn gebruik, maar my Windows -rekenaar om demonstrasie en ontfouting.

Die 4-pins-strook word beheer deur 'n Arduino Nano-tipe bord, wat opdragte in serie uitvoer om PWM-seine na drie transistors te stuur, wat die +12VDC in die ooreenstemmende kleurpen van die strook skakel.

Die LightMeUp! Die stelsel kontroleer ook sy eie temperatuur, sodra dit bo 60 ° C (140 ° F) is, skakel dit twee 12VDC -rekenaarwaaiers aan wat in die omhulsel ingebou is om homself af te koel om die lewensduur van die kring te verbeter.

Nog 'n kenmerk van LightMeUp! is om 'n Bombay-Sapphire Gin-bottel te verlig, maar dit is nie die fokus van hierdie Instructable nie.

Lees lekker:)

Voorrade

  • Arduino Nano (of enige ander ATmega328 / hoër-gebaseerde mikrobeheerder)
  • Raspberry Pi 3 Model B met Node.js geïnstalleer (of enige ander rekenaar)
  • 12V RGB 4-pins LED-strook
  • 12V 3A Kragtoevoer
  • Springkabels (manlik-manlik as u natuurlik 'n broodbord gebruik)
  • Broodbord (opsioneel)
  • 2 12V DC rekenaarwaaiers (opsioneel)
  • 3x TIP120 Darlington Transistor w/ heatsink (4 as u koelwaaiers wil insluit)
  • 2 status -LED's rooi en groen (opsioneel)
  • 6, 7K NTC temperatuurgebaseerde weerstand + 6, 7K weerstand (opsioneel)
  • USB-Mini na USB 2.0 datakabel (vir die Raspberry Pi om met die Arduino te kommunikeer)
  • Ekstern aangedrewe USB-hub (opsioneel, slegs vir Raspberry Pi)

Stap 1: Verstaan die stelsel

Verstaan die stelsel
Verstaan die stelsel

LightMeUp! is gebaseer op 'n baie eenvoudige elektroniese stroombaan.

Ons het 'n soort rekenaar (in hierdie geval 'n Raspberry Pi) wat in serie met ons mikrokontrollerbord kommunikeer. Hierdie bord voer dan spesifieke reeksopdragte uit, soos 'RGB (255, 255, 255)', wat ons LED-strook wit sal maak.

Nadat ons ons drie waardes vir ROOI, GROEN en BLOU nodig gehad het vir ons 4-pins LED-strook, voer ons analogWrite (pen, waarde) uit om ons TIP120-transistor van 'n PWM-sein te voorsien.

Met hierdie PWM -sein kan die transistor die ooreenstemmende kleurpen waarmee die versamelaar gekoppel is, in 'n spesifieke mate of heeltemal aan / uit skakel. Ja, baie "to" s:)

Deur die drie transistors -uitsette te meng met die kleurpenne van die LED -stroke, kan ons basies enige kleur skep wat ons wil!

Met hierdie begrip kan ons die grootste uitdaging van hierdie projek, die websocketserver en die seriële verbinding met ons Arduino, aanval.

Stap 2: Skryf die WebSocketServer

Skryf die WebSocketServer
Skryf die WebSocketServer

Nou moet ons 'n spesifieke soort webbediener skep waarmee ons data heen en weer kan oordra sonder om een keer te verfris om 'n realtime LED -strookbeheer te verkry.

Let daarop dat kommunikasie intyds natuurlik onmoontlik is; daar sal altyd ten minste 'n paar millisekondes vertraging betrokke wees, maar vir die menslike oog is dit aansienlik meer as intyds.

Dit kan maklik bereik word deur die socket.io -biblioteek te gebruik as u Node.js gebruik soos ek. U kan egter altyd by u gunsteling programmeertaal bly.

Ons het te doen met 'n websocket-verbinding wat ons toelaat om invoerdata soos die kleur waarop u die LED-strook wil stel, of statusdata soos "LED ON" in twee rigtings oor te dra sonder om te verfris.

'N Ander baie belangrike funksie wat die bediener behoort te hê, maar nie nodig het nie, is 'n eenvoudige aanmelding. Ek het my aanmelding gebaseer op 'n eenvoudige gebruikersnaam en wagwoordveld. Hierdie inligting word dan op die /login-roete van die bediener geplaas, wat die gebruikersnaam dan vergelyk met 'n lys gebruikers (.txt-lêer) en die ooreenstemmende wagwoord in die SHA256-geïnkripteer vorm. U wil nie hê dat u bure met u LED -strook moet mors nie, terwyl u van u gunsteling drankie op u gemaklikste sitplek geniet?

Nou kom die hart van die bediener, die seriële kommunikasie.

U bediener moet in staat wees om serieel te kommunikeer - in Node.js kan dit bereik word deur 'n poort oop te maak met die 'serialport' -biblioteek. Maar bepaal eers die naam van u arduino -poort op u rekenaar wat die bediener huisves. Afhangende van u bedryfstelsel, sal die poorte verskillende name hê, bv. Op Windows word hierdie poorte 'COMx' -poorte genoem, terwyl hulle op Linux'/dev/ttyUSBx 'genoem word, waar x die nommer van die USB -poort is.

Stap 3: Stel 'n protokol vir reeksopdragte op

Stel 'n protokol vir reeksopdragte op
Stel 'n protokol vir reeksopdragte op

Op die foto hierbo sien u die werklike Arduino IDE -kode wat verantwoordelik is vir die RGB -beheer. Die doel van hierdie stap is om u selfgeskrewe bediener en Arduino-bord suksesvol met mekaar te laat praat.

Sodra u u seriële poort suksesvol oopgemaak het, moet u opdragte na die bord kan stuur wat aan u wense voldoen. As ons byvoorbeeld 'n vinger bo die kleurkieser op die HTML -webblad trek, moet die RGB -kode na die bediener gestuur word, wat dit dan na u Arduino stuur sodat dit die ingestelde waardes verwerk.

Ek het jscolor gebruik; hulle het 'n uitstekende implementering van 'n kleurkeuse -element van hoë gehalte, wat 'n gebeurtenis besit met die naam 'onFineChange', waarmee u die verwerkingsdata van die kleurkieser kan toelaat sodra die waardes daarvan verander.

Aanbeveel: