Indholdsfortegnelse:

Lys mig op! en LED-stripkontrol i realtid på tværs af platforme: 5 trin (med billeder)
Lys mig op! en LED-stripkontrol i realtid på tværs af platforme: 5 trin (med billeder)

Video: Lys mig op! en LED-stripkontrol i realtid på tværs af platforme: 5 trin (med billeder)

Video: Lys mig op! en LED-stripkontrol i realtid på tværs af platforme: 5 trin (med billeder)
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Juli
Anonim
Lys mig op! en LED-stripkontrol i realtid på tværs af platforme
Lys mig op! en LED-stripkontrol i realtid på tværs af platforme
Lys mig op! en LED-stripkontrol i realtid på tværs af platforme
Lys mig op! en LED-stripkontrol i realtid på tværs af platforme
Lys mig op! en LED-stripkontrol i realtid på tværs af platforme
Lys mig op! en LED-stripkontrol i realtid på tværs af platforme

Lys mig op! er et system, jeg opfandt til styring af en RGB LED-strip i realtid, samtidig med at omkostningerne blev holdt lave og ydeevnen høj.

Serveren er skrevet i Node.js og derfor på tværs af platforme.

I mit eksempel bruger jeg en Raspberry Pi 3B til langtidsbrug, men min Windows -pc til demonstration og fejlfinding.

4pin-strimlen styres af et Arduino Nano-typeskilt, der udfører kommandoer i serie for at sende PWM-signaler til tre transistorer, der skifter +12VDC til den tilsvarende farvepind på strimlen.

LightMeUp! systemet kontrollerer også sin egen temperatur, når den først er over 60 ° C (140 ° F), tænder den to 12VDC computerblæsere indbygget i kabinettet for at afkøle sig selv for at forbedre kredsløbets levetid.

En anden funktion i LightMeUp! er at belyse en Bombay-Sapphire Gin-flaske, men det er ikke fokus for denne Instructable.

God fornøjelse med at læse:)

Forbrugsvarer

  • Arduino Nano (eller enhver anden ATmega328 / højere-baseret mikrokontroller)
  • Raspberry Pi 3 Model B med Node.js installeret (eller enhver anden computer)
  • 12V RGB 4-benet LED-strimmel
  • 12V 3A Strømforsyning
  • Jumperkabler (han-han, hvis du selvfølgelig bruger et brødbræt)
  • Brødbræt (valgfrit)
  • 2 12V DC computerblæsere (valgfrit)
  • 3x TIP120 Darlington Transistor m/ heatsink (4 hvis du vil inkludere køleblæsere)
  • 2 status -LED'er røde og grønne (valgfrit)
  • 6, 7K NTC temperaturbaseret modstand + 6, 7K modstand (valgfri)
  • USB-Mini til USB 2.0 datakabel (for at Raspberry Pi kan kommunikere med Arduino)
  • Ekstern strømforsynet USB-hub (valgfri, kun til Raspberry Pi)

Trin 1: Forstå systemet

Forstå systemet
Forstå systemet

Lys mig op! er baseret på meget enkle elektroniske kredsløb.

Vi har en form for computer (i dette tilfælde en Raspberry Pi), der kommunikerer serielt med vores mikrokontrolkort. Dette kort udfører derefter specifikke serielle kommandoer som "RGB (255, 255, 255)", som ville gøre vores LED-strip hvid.

Når vi har fået vores tre værdier for RØD, GRØN og BLÅ, der er nødvendige for vores 4-pins LED-strip, udfører vi analogWrite (pin, værdi) for at forsyne vores TIP120-transistor med et PWM-signal.

Dette PWM -signal gør det muligt for transistoren at skifte den tilsvarende farvepind, den er kollektor tilsluttet til jorden, i en bestemt grad eller helt til / fra. Ja, mange "to" s:)

Ved at blande de tre transistors output til LED -stripsens farvepinde kan vi stort set skabe enhver farve, vi ønsker!

Nu med denne forståelse kan vi angribe den største udfordring ved dette projekt, websocketserveren og dens serielle forbindelse til vores Arduino.

Trin 2: Skrivning af WebSocketServer

Skrivning af WebSocketServer
Skrivning af WebSocketServer

Nu skal vi oprette en bestemt slags webserver, der giver os mulighed for at overføre data frem og tilbage uden at opdatere en gang for at opnå en realtime LED -stripkontrol.

Bemærk, at kommunikation i realtid naturligvis er umulig, der vil altid være mindst et par milisekunder forsinkelse involveret, men for det menneskelige øje er det betydeligt som realtid.

Dette kan let opnås ved at bruge socket.io -biblioteket, hvis du bruger Node.js som jeg gjorde. Men du kan selvfølgelig altid holde dig til dit foretrukne programmeringssprog.

Vi har at gøre med en websocket-forbindelse, som giver os mulighed for at overføre inputdata, f.eks. Hvilken farve du vil indstille LED-stripen til, eller statusdata som "LED ON" tovejs uden at blive opdateret.

En anden meget vigtig funktion, serveren skal have, men ikke behøver, er et simpelt login. Jeg baserede mit login på et simpelt felt for brugernavn og adgangskode. Disse oplysninger sendes derefter til serverens /login-rute, som derefter sammenligner brugernavnet med en liste over brugere (.txt-fil) og den tilhørende adgangskode i sin SHA256-krypterede form. Du vil ikke have, at dine naboer skal rode med din LED -strip, mens du nyder din yndlingsdrik på dit mest behagelige sæde, ikke?

Nu kommer serverens hjerte, den serielle kommunikation.

Din server skal være i stand til at kommunikere serielt - i Node.js kan dette opnås ved at åbne en port ved hjælp af "serialport" -biblioteket. Men først bestem navnet på din arduino -port på din computer, der er vært for serveren. Afhængigt af dit operativsystem vil portene have forskellige navne, dvs. i Windows hedder disse porte "COMx" -porte, mens de på linux hedder "/dev/ttyUSBx", hvor x er nummeret på USB -porten.

Trin 3: Opret en protokol for serielle kommandoer

Opret en protokol for serielle kommandoer
Opret en protokol for serielle kommandoer

På billedet ovenfor ser du den faktiske Arduino IDE -kode, der er ansvarlig for RGB -kontrollen. Målet med dette trin er at få din selvskrevne server og Arduino-bord til at tale med succes.

Når du har åbnet din serielle port med succes, skal du kunne sende kommandoer til tavlen, der tager sig af dine ønsker. For eksempel, hvis vi trækker en finger over farvevælgeren på HTML -websiden, skal RGB -koden sendes til serveren, som derefter sender den til din Arduino, så den behandler de indstillede værdier.

Jeg brugte jscolor, de har en fantastisk implementering af et farveplukkelement af høj kvalitet, som ejer en begivenhed kaldet "onFineChange", som lader dine procesdata fra farvevælgeren, så snart dens værdier ændres.

Anbefalede: