Turinys:

Apšviesk mane! realaus laiko kelių platformų LED juostos valdymas: 5 žingsniai (su paveikslėliais)
Apšviesk mane! realaus laiko kelių platformų LED juostos valdymas: 5 žingsniai (su paveikslėliais)

Video: Apšviesk mane! realaus laiko kelių platformų LED juostos valdymas: 5 žingsniai (su paveikslėliais)

Video: Apšviesk mane! realaus laiko kelių platformų LED juostos valdymas: 5 žingsniai (su paveikslėliais)
Video: 10 НАСТОЯЩИХ СТРАШНЫХ ПАРАНОРМАЛЬНЫХ ИСТОРИЙ ИЗ ЯПОНИИ... 2024, Birželis
Anonim
Apšviesk mane! realaus laiko kelių platformų LED juostos valdiklis
Apšviesk mane! realaus laiko kelių platformų LED juostos valdiklis
Apšviesk mane! realaus laiko kelių platformų LED juostos valdiklis
Apšviesk mane! realaus laiko kelių platformų LED juostos valdiklis
Apšviesk mane! realaus laiko kelių platformų LED juostos valdiklis
Apšviesk mane! realaus laiko kelių platformų LED juostos valdiklis

Apšviesk mane! yra mano sugalvota sistema, skirta realiu laiku valdyti RGB LED juostelę, tuo pačiu išlaikant mažas išlaidas ir aukštą našumą.

Serveris yra parašytas „Node.js“ir todėl yra platforminis.

Mano pavyzdyje aš naudoju „Raspberry Pi 3B“ilgalaikiam naudojimui, bet savo „Windows“kompiuterį demonstravimui ir derinimui.

4 kontaktų juostą valdo „Arduino Nano“tipo plokštė, kuri vykdo nuosekliai duotas komandas siųsti PWM signalus į tris tranzistorius, perjungiančius +12 V nuolatinę srovę į atitinkamą juostos spalvos kaištį.

„LightMeUp“! sistema taip pat tikrina savo temperatūrą, kai ji yra aukštesnė nei 60 ° C (140 ° F), ji įjungia du korpuse įmontuotus 12 V nuolatinės srovės kompiuterio ventiliatorius, kad atvėstų ir pagerintų grandinės tarnavimo laiką.

Kitas „LightMeUp“bruožas! yra apšviesti „Bombay-Sapphire Gin“butelį, tačiau tai nėra šios instrukcijos tikslas.

Smagu skaityti:)

Prekės

  • „Arduino Nano“(arba bet kuris kitas ATmega328 / aukštesnės klasės mikrovaldiklis)
  • „Raspberry Pi 3 Model B“su įdiegtu „Node.js“(arba bet kuriuo kitu kompiuteriu)
  • 12 V RGB 4 kontaktų LED juostelė
  • 12V 3A maitinimo šaltinis
  • Trumpieji kabeliai (žinoma, vyrai ir vyrai, jei naudojate duonos lentą)
  • Duonos lenta (neprivaloma)
  • 2 12 V nuolatinės srovės kompiuterio ventiliatoriai (neprivaloma)
  • 3x TIP120 Darlingtono tranzistorius su radiatoriumi (4, jei norite įtraukti aušinimo ventiliatorius)
  • 2 būsenos šviesos diodai raudona ir žalia (neprivaloma)
  • 6, 7K NTC temperatūros rezistorius + 6, 7K rezistorius (neprivaloma)
  • USB-Mini į USB 2.0 duomenų kabelis (kad „Raspberry Pi“galėtų bendrauti su „Arduino“)
  • Išoriškai maitinamas USB šakotuvas (neprivaloma, tik „Raspberry Pi“)

1 žingsnis: supraskite sistemą

Suprasti Sistemą
Suprasti Sistemą

Apšviesk mane! yra pagrįstas labai paprasta elektronine grandine.

Mes turime tam tikrą kompiuterį (šiuo atveju „Raspberry Pi“), kuris nuosekliai bendrauja su mūsų mikrovaldiklio plokšte. Tada ši plokštė vykdo konkrečias nuoseklias komandas, tokias kaip „RGB (255, 255, 255)“, kurios mūsų LED juostelę pavers baltos spalvos.

Gavę tris RED, GREEN ir BLUE reikšmes, būtinas mūsų 4 kontaktų LED juostelėms, vykdome analogWrite (kaištį, vertę), kad mūsų TIP120 tranzistorius būtų aprūpintas PWM signalu.

Šis PWM signalas leidžia tranzistoriui perjungti atitinkamą spalvų kaištį, prie kurio jo kolektorius yra prijungtas prie žemės, tam tikru laipsniu arba visiškai įjungti / išjungti. Taip, daug "į":)

Sumaišius tris tranzistorių išėjimus su LED juostų spalvotais kaiščiais, mes galime sukurti iš esmės bet kokią norimą spalvą!

Turėdami šį supratimą, galime užpulti didžiausią šio projekto iššūkį, žiniatinklio serverį ir jo nuoseklųjį ryšį su mūsų „Arduino“.

2 veiksmas: „WebSocketServer“rašymas

„WebSocketServer“rašymas
„WebSocketServer“rašymas

Dabar turime sukurti tam tikros rūšies žiniatinklio serverį, kuris leistų mums nepertraukiamai perkelti duomenis pirmyn ir atgal, kad būtų pasiektas LED juostos valdymas realiuoju laiku.

Atminkite, kad komunikacija realiuoju laiku, žinoma, neįmanoma, visada bus bent kelių milisekundžių vėlavimas, tačiau žmogaus akimis tai yra nemaža kaip realiuoju laiku.

Tai galima lengvai pasiekti naudojant „socket.io“biblioteką, jei naudojate „Node.js“, kaip aš. Tačiau, žinoma, visada galite laikytis mėgstamos programavimo kalbos.

Mes susidursime su žiniatinklio lizdo ryšiu, kuris leis mums atnaujinti įvesties duomenis, pvz., Kokios spalvos norite nustatyti LED juostą, arba būsenos duomenis, pvz., „LED ON“, be atnaujinimo.

Kita labai svarbi funkcija, kurią serveris turėtų turėti, bet neprivalo, yra paprastas prisijungimas. Savo prisijungimą grindžiau paprastu vartotojo vardo ir slaptažodžio lauku. Tada ši informacija skelbiama serverio /prisijungimo maršrute, kuris palygina vartotojo vardą su vartotojų sąrašu (.txt failu) ir atitinkamu slaptažodžiu SHA256 užšifruota forma. Jūs nenorite, kad jūsų kaimynai maišytųsi su jūsų LED juostele, kol mėgausitės mėgstamu gėrimu patogiausioje sėdynėje, tiesa?

Dabar ateina serverio širdis, nuoseklusis ryšys.

Jūsų serveris turi sugebėti bendrauti nuosekliai - „Node.js“tai galima pasiekti atidarius prievadą naudojant „serialport“biblioteką. Bet pirmiausia nustatykite savo arduino prievado pavadinimą kompiuteryje, kuriame yra serveris. Priklausomai nuo jūsų operacinės sistemos, prievadai turės skirtingus pavadinimus, pvz. „Windows“sistemoje šie prievadai pavadinti „COMx“prievadais, o „Linux“- „/dev/ttyUSBx“, kur x yra USB prievado numeris.

3 žingsnis: nustatykite serijinių komandų protokolą

Sudarykite serijinių komandų protokolą
Sudarykite serijinių komandų protokolą

Aukščiau esančiame paveikslėlyje matote tikrąjį „Arduino IDE“kodą, atsakingą už RGB valdymą. Šio žingsnio tikslas yra priversti jūsų pačių parašytą serverį ir „Arduino“plokštę sėkmingai susikalbėti.

Sėkmingai atidarę nuoseklųjį prievadą, turite sugebėti siųsti komandas valdybai, kuri rūpinasi jūsų norais. Pvz., Jei HTML tinklalapyje ištrauksime pirštą virš spalvų parinkiklio, RGB kodas turėtų būti išsiųstas į serverį, kuris nusiųs jį į jūsų „Arduino“, kad jis apdorotų nustatytas reikšmes.

Aš naudojau „jscolor“, jie puikiai įgyvendina aukštos kokybės spalvų rinkimo elementą, kuriam priklauso įvykis, vadinamas „onFineChange“, kuris leidžia apdoroti spalvų rinkiklio duomenis, kai tik pasikeičia jų vertės.

Rekomenduojamas: