Innholdsfortegnelse:

Opplys meg! en LED-stripekontroll i sanntid på tvers av plattformer: 5 trinn (med bilder)
Opplys meg! en LED-stripekontroll i sanntid på tvers av plattformer: 5 trinn (med bilder)

Video: Opplys meg! en LED-stripekontroll i sanntid på tvers av plattformer: 5 trinn (med bilder)

Video: Opplys meg! en LED-stripekontroll i sanntid på tvers av plattformer: 5 trinn (med bilder)
Video: Джереми Корбелл: Внутренняя история рейда Боба Лазара 2024, November
Anonim
Opplys meg! en LED-stripekontroll i tvers av plattformer i sanntid
Opplys meg! en LED-stripekontroll i tvers av plattformer i sanntid
Opplys meg! en LED-stripekontroll i tvers av plattformer i sanntid
Opplys meg! en LED-stripekontroll i tvers av plattformer i sanntid
Opplys meg! en LED-stripekontroll i tvers av plattformer i sanntid
Opplys meg! en LED-stripekontroll i tvers av plattformer i sanntid

Opplys meg! er et system jeg oppfant for å kontrollere en RGB LED-stripe i sanntid, samtidig som kostnadene er lave og ytelsen høy.

Serveren er skrevet i Node.js og derfor plattformplattformbar.

I mitt eksempel bruker jeg en Raspberry Pi 3B til langtidsbruk, men Windows -PC -en min for demonstrasjon og feilsøking.

4-pinners stripe styres av et Arduino Nano-typekort, som utfører seriekommandoer for å sende PWM-signaler til tre transistorer som bytter +12VDC til den tilsvarende fargepinnen på stripen.

The LightMeUp! systemet kontrollerer også sin egen temperatur, når den er over 60 ° C (140 ° F), slår den på to 12VDC datamaskinvifter som er innebygd i huset, for å kjøle seg ned for å forbedre kretsens levetid.

En annen funksjon i LightMeUp! er å belyse en Bombay-Sapphire Gin-flaske, men det er ikke fokuset for denne Instructable.

Liker å lese:)

Rekvisita

  • Arduino Nano (eller annen ATmega328 / høyere-basert mikrokontroller)
  • Raspberry Pi 3 Model B med Node.js installert (eller hvilken som helst annen datamaskin)
  • 12V RGB 4-pinners LED-stripe
  • 12V 3A Strømforsyning
  • Hoppekabler (mann-mann hvis du bruker et brødbrett, selvfølgelig)
  • Brødbrett (valgfritt)
  • 2 12V DC datamaskinvifter (valgfritt)
  • 3x TIP120 Darlington Transistor m/ heatsink (4 hvis du vil inkludere kjølevifter)
  • 2 statuslysdioder rød og grønn (valgfritt)
  • 6, 7K NTC temperaturbasert motstand + 6, 7K motstand (valgfritt)
  • USB-Mini til USB 2.0 datakabel (for Raspberry Pi å kommunisere med Arduino)
  • Ekstern drevet USB-hub (valgfritt, bare for Raspberry Pi)

Trinn 1: Forstå systemet

Forstå systemet
Forstå systemet

Opplys meg! er basert på veldig enkle elektroniske kretser.

Vi har en slags datamaskin (i dette tilfellet en Raspberry Pi) som kommuniserer serielt med mikrokortet vårt. Dette kortet utfører deretter spesifikke seriekommandoer som "RGB (255, 255, 255)" som ville gjøre LED-stripen hvit.

Når vi har fått våre tre verdier for RØD, GRØNN og BLÅ nødvendig for vår 4-pinners LED-stripe, kjører vi analogWrite (pin, verdi) for å forsyne vår TIP120-transistor med et PWM-signal.

Dette PWM -signalet tillater transistoren å bytte den tilsvarende fargepinnen som samleren er koblet til jord, til en bestemt grad eller helt på / av. Ja, mange "to" er:)

Ved å blande de tre transistorutgangene til LED -stripenes fargepinner kan vi i utgangspunktet lage hvilken som helst farge vi ønsker!

Med denne forståelsen kan vi angripe den største utfordringen med dette prosjektet, websocketserver og den serielle tilkoblingen til Arduino.

Trinn 2: Skrive WebSocketServer

Skriver WebSocketServer
Skriver WebSocketServer

Nå må vi lage en bestemt type webserver, som lar oss overføre data frem og tilbake uten å oppdatere en gang for å oppnå en sanntids LED -stripekontroll.

Vær oppmerksom på at kommunikasjon i sanntid selvfølgelig er umulig. Det vil alltid være minst noen få millisekunder forsinkelse involvert, men for det menneskelige øye er det betydelig som sanntid.

Dette kan enkelt oppnås ved å bruke socket.io -biblioteket hvis du bruker Node.js som jeg gjorde. Du kan imidlertid alltid holde deg til ditt favoritt programmeringsspråk, selvfølgelig.

Vi har å gjøre med en websocket-tilkobling som lar oss overføre inngangsdata, for eksempel hvilken farge du vil sette LED-stripen til, eller statusdata som "LED ON" toveis uten å oppdatere.

En annen veldig viktig funksjon serveren burde ha, men ikke trenger, er en enkel pålogging. Jeg baserte påloggingen på et enkelt brukernavn og passordfelt. Disse opplysningene blir deretter lagt ut på /påloggingsruten til serveren, som deretter sammenligner brukernavnet med en liste over brukere (.txt-fil) og tilhørende passord i sin SHA256-krypterte form. Du vil ikke at naboene skal rote med LED -stripen mens du nyter din favorittdrikk på det mest komfortable setet ditt, ikke sant?

Nå kommer hjertet til serveren, den serielle kommunikasjonen.

Serveren din må kunne kommunisere serielt - i Node.js kan dette oppnås ved å åpne en port ved hjelp av "serialport" -biblioteket. Men først bestem navnet på din arduino -port på datamaskinen som er vert for serveren. Avhengig av operativsystemet, vil portene ha forskjellige navn, dvs. på Windows heter disse portene "COMx" -porter, mens de på linux heter "/dev/ttyUSBx", der x er nummeret på USB -porten.

Trinn 3: Opprett en protokoll for seriekommandoer

Opprett en protokoll for seriekommandoer
Opprett en protokoll for seriekommandoer

På bildet ovenfor ser du den faktiske Arduino IDE -koden som er ansvarlig for RGB -kontrollen. Målet med dette trinnet er å få din selvskrevne server og Arduino-bord til å snakke med hverandre.

Når du har åpnet den serielle porten vellykket, må du kunne sende kommandoer til brettet som ivaretar dine ønsker. For eksempel, hvis vi trekker en finger over fargevelgeren på HTML -websiden, skal RGB -koden sendes til serveren som deretter sender den til Arduino slik at den behandler de angitte verdiene.

Jeg brukte jscolor, de har en flott implementering av et fargevalgselement av høy kvalitet, som eier en hendelse kalt "onFineChange" som lar prosessdataene dine fra fargevelgeren så snart verdiene endres.

Anbefalt: