Talaan ng mga Nilalaman:

LightMeUp! isang Realtime Cross-platformed LED Strip Control: 5 Hakbang (na may Mga Larawan)
LightMeUp! isang Realtime Cross-platformed LED Strip Control: 5 Hakbang (na may Mga Larawan)

Video: LightMeUp! isang Realtime Cross-platformed LED Strip Control: 5 Hakbang (na may Mga Larawan)

Video: LightMeUp! isang Realtime Cross-platformed LED Strip Control: 5 Hakbang (na may Mga Larawan)
Video: ATEM MasterClass v2 — FIVE HOURS of ATEM Goodness! 2024, Hulyo
Anonim
LightMeUp! isang Realtime Cross-platform na LED Strip Control
LightMeUp! isang Realtime Cross-platform na LED Strip Control
LightMeUp! isang Realtime Cross-platform na LED Strip Control
LightMeUp! isang Realtime Cross-platform na LED Strip Control
LightMeUp! isang Realtime Cross-platform na LED Strip Control
LightMeUp! isang Realtime Cross-platform na LED Strip Control

LightMeUp! ay isang sistema na naimbento ko para sa pagkontrol ng isang RGB LED-Strip sa realtime, habang pinapanatili ang gastos na mababa at mataas ang pagganap.

Ang server ay nakasulat sa Node.js at dahil doon ay cross-platformable.

Sa aking halimbawa, gumagamit ako ng isang Raspberry Pi 3B para sa pangmatagalang paggamit, ngunit ang aking Windows PC para sa sakes ng pagpapakita at pag-debug.

Ang 4pin-strip ay kinokontrol ng isang Arduino Nano type-board, na nagpapatupad ng mga seryal na binigyan ng mga utos upang magpadala ng mga signal ng PWM sa tatlong transistors na pinalilipat ang + 12VDC sa kaukulang color-pin ng strip.

Ang LightMeUp! Sinusuri din ng system ang sarili nitong temperatura, sa sandaling nasa itaas ng 60 ° C (140 ° F) lumiliko ito sa dalawang 12VDC computer fan na itinayo sa pambalot, upang palamigin ang sarili nito upang mapagbuti ang buhay ng circuit.

Isa pang tampok ng LightMeUp! ay upang magaan ang ilaw ng isang Bombay-Sapphire Gin na bote, ngunit hindi iyon ang pokus ng Instructable na ito.

Masayang magbasa:)

Mga gamit

  • Arduino Nano (o anumang iba pang ATmega328 / mas mataas na nakabatay sa microcontroller)
  • Raspberry Pi 3 Model B na may naka-install na Node.js (o anumang iba pang computer)
  • 12V RGB 4-Pin LED strip
  • 12V 3A Power supply
  • Mga jumper cable (lalaki-lalaki kung gumagamit ka ng isang pisara, syempre)
  • Breadboard (opsyonal)
  • 2 12V DC computer fan (opsyonal)
  • 3x TIP120 Darlington Transistor w / heatsink (4 kung nais mong isama ang mga cool na tagahanga)
  • 2 katayuan LEDs pula at berde (opsyonal)
  • 6, 7K NTC temperatura-based risistor + 6, 7K risistor (opsyonal)
  • USB-Mini hanggang USB 2.0 data cable (para sa Raspberry Pi upang makipag-usap sa Arduino)
  • Pinapagagana ng USB-Hub na panlabas (opsyonal, para lamang sa Raspberry Pi)

Hakbang 1: Maunawaan ang Sistema

Maunawaan ang Sistema
Maunawaan ang Sistema

LightMeUp! ay batay sa napaka-simpleng electronic circuitry.

Mayroon kaming ilang uri ng computer (sa kasong ito isang Raspberry Pi) na nakikipag-usap nang serial sa aming board ng microcontroller. Ang board na ito pagkatapos ay nagpapatupad ng mga tiyak na serial command tulad ng "RGB (255, 255, 255)" na magpaputi ng aming LED-Strip.

Sa sandaling nakuha namin ang aming tatlong mga halaga para sa RED, GREEN at BLUE kinakailangan para sa aming 4pin LED-Strip ay isinasagawa namin ang analogWrite (pin, halaga) upang maibigay ang aming TIP120 transistor na may isang signal na PWM.

Pinapayagan ng signal ng PWM na ito ang transistor na ilipat ang kaukulang pin na kulay ng kolektor na ito ay konektado sa lupa, sa isang tukoy na degree o ganap na on / off. Oo, maraming "to" s:)

Sa pamamagitan ng paghahalo ng tatlong mga output ng transistors sa mga pin na kulay ng mga LED strips maaari kaming lumikha ng anumang anumang kulay na gusto namin!

Ngayon sa pag-unawang ito, maaari naming atake ang pinakamalaking hamon ng proyektong ito, ang websocketserver at ang serial na koneksyon sa aming Arduino.

Hakbang 2: Pagsulat ng WebSocketServer

Pagsusulat ng WebSocketServer
Pagsusulat ng WebSocketServer

Ngayon, kailangan naming lumikha ng isang tukoy na uri ng webserver, na nagbibigay-daan sa amin upang ilipat ang data nang pabalik-balik nang hindi nagre-refresh ng isang beses upang makamit ang isang realtime LED strip control.

Mangyaring tandaan, na ang realtime na komunikasyon ng kurso ay imposible, palaging may hindi makakakuha ng ilang miliseconds ng pagkaantala na kasangkot, ngunit sa mata ng tao ito ay malaki bilang realtime.

Madali itong makakamtan sa pamamagitan ng paggamit ng socket.io library kung gagamitin mo ang Node.js tulad ng ginawa ko. Gayunpaman, maaari kang laging manatili sa iyong paboritong wika sa pagprograma, syempre.

Makikipag-usap kami sa isang koneksyon sa websocket na nagbibigay-daan sa amin upang maglipat ng data ng pag-input tulad ng kung aling kulay ang nais mong itakda ang LED-strip, o ang data ng katayuan tulad ng "LED ON" na bidirectionally nang hindi nagre-refresh.

Ang isa pang napakahalagang tampok na dapat magkaroon ang server ngunit hindi kailangan ay isang simpleng pag-login. Ibinatay ko ang aking pag-login sa isang simpleng patlang ng username at password. Ang mga piraso ng impormasyon na ito ay nai-post sa / ruta ng pag-login ng server, na ihinahambing ang username sa isang listahan ng mga gumagamit (.txt file) at ang kaukulang password sa SHA256 na naka-encrypt na form. Hindi mo nais na guluhin ng iyong mga kapitbahay ang iyong LED strip habang nasisiyahan ka sa iyong paboritong inumin sa iyong pinaka komportableng upuan, tama ba?

Dumarating ngayon ang puso ng server, ang serial na komunikasyon.

Dapat na makapag-usap ng serial ang iyong server - sa Node.js maaari itong makamit sa pamamagitan ng pagbubukas ng isang port gamit ang "serialport" na aklatan. Ngunit tukuyin muna ang pangalan ng iyong arduino port sa iyong computer na nagho-host sa server. Nakasalalay sa iyong operating system, ang mga port ay magkakaiba ang mga pangalan, a.e. sa Windows ang mga port na ito ay pinangalanang "COMx" port, habang sa linux pinangalanan silang "/ dev / ttyUSBx", kung saan x ang bilang ng USB port.

Hakbang 3: Magtaguyod ng isang Protocol ng Mga Serial Command

Magtatag ng isang Protocol ng Serial Command
Magtatag ng isang Protocol ng Serial Command

Sa larawan sa itaas, nakikita mo ang aktwal na Arduino IDE code na responsable para sa kontrol ng RGB. Layunin ng hakbang na ito ay, upang matagumpay na makausap ang bawat nakasulat na server at Arduino board.

Kapag nabuksan mo nang matagumpay ang iyong serial port, kailangan mong makapagpadala ng mga utos sa board na nangangalaga sa iyong mga kagustuhan. Halimbawa, kung gumuhit kami ng isang daliri sa itaas ng tagapili ng kulay sa HTML webpage, dapat ipadala ang RGB code sa server na pagkatapos ay ipadala ito sa iyong Arduino kaya pinoproseso nito ang mga itinakdang halaga.

Gumamit ako ng jscolor, mayroon silang mahusay na pagpapatupad ng isang de-kalidad na elemento ng pagpili ng kulay, na nagmamay-ari ng isang kaganapan na tinatawag na "onFineChange" na hinahayaan ang iyong proseso ng data mula sa tagapili ng kulay sa sandaling ito ay nagbago ng halaga.

Inirerekumendang: