Բովանդակություն:

LightMeUp! a Realtime Cross-platformed LED Strip Control: 5 քայլ (նկարներով)
LightMeUp! a Realtime Cross-platformed LED Strip Control: 5 քայլ (նկարներով)

Video: LightMeUp! a Realtime Cross-platformed LED Strip Control: 5 քայլ (նկարներով)

Video: LightMeUp! a Realtime Cross-platformed LED Strip Control: 5 քայլ (նկարներով)
Video: Շրջայց Ժամանակակից ԱՄՐՈՑ 2 հարկանի պահարանով: 2024, Հուլիսի
Anonim
LightMeUp! a Realtime Cross-platformed LED Strip Control
LightMeUp! a Realtime Cross-platformed LED Strip Control
LightMeUp! a Realtime Cross-platformed LED Strip Control
LightMeUp! a Realtime Cross-platformed LED Strip Control
LightMeUp! a Realtime Cross-platformed LED Strip Control
LightMeUp! a Realtime Cross-platformed LED Strip Control

LightMeUp! սա մի համակարգ է, որը ես հորինել եմ RGB LED-Strip- ը իրական ժամանակում վերահսկելու համար ՝ միևնույն ժամանակ ծախսերը ցածր պահելով և կատարողականը բարձր:

Սերվերը գրված է Node.js- ում և, հետևաբար, խաչաձև ծրագրավորվող:

Իմ օրինակում ես օգտագործում եմ Raspberry Pi 3B- ը երկարաժամկետ օգտագործման համար, բայց իմ Windows PC- ն `ցուցադրության և կարգաբերման համար:

4 պին-շերտը կառավարվում է Arduino Nano տիպի տախտակի միջոցով, որը կատարում է հաջորդաբար տրված հրամաններ ՝ PWM ազդանշաններ ուղարկելու երեք տրանզիստորներին, որոնք +12VDC- ն փոխարկում են շերտի համապատասխան գույնի-քորոցը:

The LightMeUp! համակարգը նաև ստուգում է իր սեփական ջերմաստիճանը, երբ այն 60 ° C- ից բարձր է (140 ° F) այն միացնում է պատյանում ներկառուցված երկու 12VDC համակարգչային երկրպագուներ, որպեսզի ինքն իրեն սառչի `միացման տևողությունը բարելավելու համար:

LightMeUp- ի մեկ այլ առանձնահատկություն: պետք է լուսավորել Bombay-Sapphire Gin շիշը, բայց դա այս Ուղեցույցի ուշադրության կենտրոնում չէ:

Վայելեք կարդալը:)

Պարագաներ

  • Arduino Nano (կամ ցանկացած այլ ATmega328 / ավելի բարձր հիմնված միկրոկոնտրոլեր)
  • Raspberry Pi 3 Model B ՝ տեղադրված Node.js- ով (կամ որևէ այլ համակարգիչով)
  • 12V RGB 4-փին LED ժապավեն
  • 12V 3A Էներգամատակարարում
  • Թռիչքային մալուխներ (իհարկե, արական սեռի ներկայացուցիչ, եթե հացաթխում եք օգտագործում)
  • Հացաթուղթ (ըստ ցանկության)
  • 2 12V DC համակարգչի երկրպագու (ըստ ցանկության)
  • 3x TIP120 Darlington Transistor ՝ տաքացուցիչով (4, եթե ցանկանում եք ներառել հովացման օդափոխիչներ)
  • 2 կարգավիճակ LED և կարմիր (կանաչ) (ըստ ցանկության)
  • 6, 7K NTC ջերմաստիճանի վրա հիմնված դիմադրություն + 6, 7K դիմադրություն (ըստ ցանկության)
  • USB-Mini- ից USB 2.0 տվյալների մալուխ (Raspberry Pi- ի համար Arduino- ի հետ հաղորդակցվելու համար)
  • Արտաքին սնուցման USB-հանգույց (ըստ ցանկության, միայն Raspberry Pi- ի համար)

Քայլ 1: Հասկացեք համակարգը

Հասկացեք Համակարգը
Հասկացեք Համակարգը

LightMeUp! հիմնված է շատ պարզ էլեկտրոնային սխեմաների վրա:

Մենք ունենք ինչ -որ համակարգիչ (այս դեպքում Raspberry Pi), որը սերիականորեն շփվում է մեր միկրոկոնտրոլերի տախտակի հետ: Այնուհետև այս տախտակը կատարում է հատուկ սերիական հրամաններ, ինչպիսիք են «RGB (255, 255, 255)», որոնք մեր LED-Strip- ը կդարձնեն սպիտակ:

Երբ մենք ստացանք մեր երեք արժեքները RED, GREEN և BLUE- ի համար, որոնք անհրաժեշտ են մեր 4pin LED-Strip- ի համար, մենք կատարում ենք analogWrite (քորոց, արժեք) `մեր TIP120 տրանզիստորը PWM ազդանշանով ապահովելու համար:

Այս PWM ազդանշանը թույլ է տալիս տրանզիստորին անցնել համապատասխան գույնի քորոց, որի կոլեկտորը միացված է գետնին, որոշակի աստիճանի կամ ամբողջությամբ միացնել / անջատելուն: Այո, շատ «դեպի» ներ:)

Երեք տրանզիստորների ելքերը LED շերտերի գունային կապում խառնելով ՝ մենք կարող ենք ստեղծել հիմնականում ցանկացած գույն, որը ցանկանում ենք:

Այժմ այս ըմբռնումով մենք կարող ենք հարձակվել այս նախագծի ամենամեծ մարտահրավերի վրա ՝ վեբ ցանցի սերվերի և դրա սերիական կապի մեր Arduino- ի հետ:

Քայլ 2: Գրեք WebSocketServer- ը

WebSocketServer- ի գրառում
WebSocketServer- ի գրառում

Այժմ, մենք պետք է ստեղծենք վեբ սերվերների որոշակի տեսակ, որը թույլ է տալիս մեզ տվյալների փոխանցում այս ու այն / u200b / u200b առանց թարմացման մեկ անգամ `իրական ժամանակի LED ժապավենի վերահսկողության հասնելու համար:

Խնդրում ենք նկատի ունենալ, որ իրական ժամանակի հաղորդակցությունն, իհարկե, անհնար է, միշտ կներգրավվի առնվազն մի քանի վայրկյան ուշացում, բայց մարդկային աչքի համար դա նշանակալի է որպես իրական ժամանակ:

Դա հեշտությամբ կարելի է ձեռք բերել ՝ օգտագործելով socket.io գրադարանը, եթե դուք օգտագործում եք Node.js, ինչպես ես: Այնուամենայնիվ, դուք միշտ կարող եք հավատարիմ մնալ ձեր նախընտրած ծրագրավորման լեզվին, իհարկե:

Մենք գործ կունենանք վեբ ցանցի միացման հետ, որը թույլ է տալիս մեզ փոխանցել մուտքային տվյալներ, ինչպիսին է այն գույնը, որի վրա ցանկանում եք տեղադրել LED- ժապավենը կամ «LED ON» կարգավիճակի տվյալներ ՝ երկկողմանի ՝ առանց թարմացման:

Մեկ այլ շատ կարևոր հատկություն, որը սերվերը պետք է ունենա, բայց դրա կարիքը չունի, պարզ մուտքն է: Ես մուտքագրեցի իմ մուտքի և գաղտնաբառի պարզ դաշտը: Այս տեղեկությունները այնուհետև տեղադրվում են սերվերի /մուտքի երթուղու վրա, որն այնուհետև օգտվողի անունը համեմատում է օգտվողների ցուցակի հետ (.txt ֆայլ) և դրա համապատասխան գաղտնաբառը `SHA256 կոդավորված ձևով: Դուք չեք ցանկանում, որ ձեր հարևանները խառնվեն ձեր LED շերտի հետ, մինչ դուք վայելում եք ձեր նախընտրած ըմպելիքը ձեր ամենահարմարավետ նստատեղի վրա, այնպես չէ՞:

Այժմ գալիս է սերվերի սիրտը, սերիական հաղորդակցությունը:

Ձեր սերվերը պետք է կարողանա սերիականորեն հաղորդակցվել. Node.js- ում դրան կարելի է հասնել `« սերիական պորտ »գրադարանի միջոցով նավահանգիստ բացելով: Բայց նախ որոշեք ձեր arduino պորտի անունը սերվերը հյուրընկալող համակարգչում: Կախված ձեր օպերացիոն համակարգից, նավահանգիստները կունենան տարբեր անուններ, ա. Windows- ում այս նավահանգիստները կոչվում են «COMx» նավահանգիստներ, իսկ Linux- ում ՝ «/dev/ttyUSBx», որտեղ x- ը USB պորտի համարն է:

Քայլ 3. Ստեղծեք սերիական հրամանների արձանագրություն

Ստեղծել սերիական հրամանների արձանագրություն
Ստեղծել սերիական հրամանների արձանագրություն

Վերևի նկարում դուք տեսնում եք Arduino IDE- ի իրական կոդը, որը պատասխանատու է RGB կառավարման համար: Այս քայլի նպատակն է ՝ ստիպել ձեր ինքնուրույն գրված սերվերին և Arduino տախտակին հաջողությամբ խոսել միմյանց հետ:

Ձեր սերիական նավահանգիստը հաջողությամբ բացելուց հետո դուք պետք է կարողանաք հրամաններ ուղարկել այն տախտակին, որը հոգում է ձեր ցանկությունները: Օրինակ, եթե մատը գծենք HTML վեբ էջի գույնի ընտրիչի վերևում, RGB ծածկագիրը պետք է ուղարկվի սերվերին, որն այն կուղարկի ձեր Arduino- ին, որպեսզի մշակի սահմանված արժեքները:

Ես օգտագործել եմ jscolor- ը, դրանք ունեն բարձրորակ գույնի ընտրող տարրի հիանալի կիրառում, որին պատկանում է «onFineChange» կոչվող իրադարձությունը, որը թույլ է տալիս ձեր ընթացակարգի տվյալները գույնի ընտրիչից, երբ արժեքները փոխվեն:

Խորհուրդ ենք տալիս: