Mündəricat:

LightMeUp! Real vaxtda çapraz platformalı LED şeridi idarəetmə: 5 addım (şəkillərlə)
LightMeUp! Real vaxtda çapraz platformalı LED şeridi idarəetmə: 5 addım (şəkillərlə)

Video: LightMeUp! Real vaxtda çapraz platformalı LED şeridi idarəetmə: 5 addım (şəkillərlə)

Video: LightMeUp! Real vaxtda çapraz platformalı LED şeridi idarəetmə: 5 addım (şəkillərlə)
Video: 日本で最も新しい新幹線のファーストクラスに格安で乗車 東京-名古屋 2024, Noyabr
Anonim
LightMeUp! real vaxt rejimində çapraz platformalı LED şerit idarəetməsi
LightMeUp! real vaxt rejimində çapraz platformalı LED şerit idarəetməsi
LightMeUp! real vaxt rejimində çapraz platformalı LED şerit idarəetməsi
LightMeUp! real vaxt rejimində çapraz platformalı LED şerit idarəetməsi
LightMeUp! real vaxt rejimində çapraz platformalı LED şerit idarəetməsi
LightMeUp! real vaxt rejimində çapraz platformalı LED şerit idarəetməsi

LightMeUp! Qiyməti aşağı və performansını yüksək tutarkən, real vaxt rejimində bir RGB LED Şeridi idarə etmək üçün icad etdiyim bir sistemdir.

Server Node.js-də yazılmışdır və buna görə də platformalar arası dəyişir.

Nümunəmdə uzun müddətli istifadə üçün bir Raspberry Pi 3B istifadə edirəm, ancaq Windows PC -ni nümayiş və ayıklama üçün.

4 pinli zolaq, PWM siqnallarını +12VDC-ni zolağın müvafiq rəng pininə çevirən üç transistora göndərmək üçün ardıcıl verilən əmrləri yerinə yetirən bir Arduino Nano tipli lövhə tərəfindən idarə olunur.

LightMeUp! sistem də öz istiliyini yoxlayır, 60 ° C (140 ° F) üzərində olduqda, dövrə ömrünü yaxşılaşdırmaq üçün özünü soyutmaq üçün korpusa quraşdırılmış iki 12VDC kompüter fanatını işə salır.

LightMeUp -un başqa bir xüsusiyyəti! bir Bombay-Sapphire Gin şüşəsini işıqlandırmaqdır, lakin bu Təlimatçının diqqət mərkəzində deyil.

Oxumaqdan zövq alın:)

Təchizat

  • Arduino Nano (və ya hər hansı digər ATmega328 / daha yüksək səviyyəli mikro nəzarətçi)
  • Node.js quraşdırılmış Raspberry Pi 3 Model B (və ya başqa bir kompüter)
  • 12V RGB 4-pinli LED şeridi
  • 12V 3A enerji təchizatı
  • Jumper kabelləri (əlbəttə ki, çörək taxtasından istifadə edirsinizsə kişi-kişi)
  • Çörək paneli (isteğe bağlı)
  • 2 12V DC kompüter fanatı (isteğe bağlı)
  • 3x TIP120 Darlington Transistor, soyuducu ilə (soyutma fanatlarını daxil etmək istəyirsinizsə 4)
  • 2 status LED qırmızı və yaşıl (isteğe bağlı)
  • 6, 7K NTC temperatur əsaslı müqavimət + 6, 7K rezistor (isteğe bağlı)
  • USB-Mini-USB 2.0 məlumat kabeli (Raspberry Pi-nin Arduino ilə əlaqə qurması üçün)
  • Xaricdən işləyən USB Hub (isteğe bağlı, yalnız Raspberry Pi üçün)

Addım 1: Sistemi anlayın

Sistemi anlayın
Sistemi anlayın

LightMeUp! çox sadə elektron sxemlərə əsaslanır.

Bir növ kompüterimiz var (bu halda Raspberry Pi), mikrokontroller lövhəmizlə ardıcıl əlaqə qurur. Bu lövhə daha sonra LED-Stripimizi ağa çevirəcək "RGB (255, 255, 255)" kimi xüsusi seriyalı əmrləri yerinə yetirir.

4 pinli LED şeridimiz üçün lazım olan RED, GREEN və BLUE üçün üç dəyərimizi əldə etdikdən sonra, TIP120 transistorumuzu PWM siqnalı ilə təmin etmək üçün analogWrite (pin, dəyər) icra edirik.

Bu PWM siqnalı, tranzistorun kollektorunun yerə qoşulduğu müvafiq rəng pimini müəyyən bir dərəcəyə və ya tamamilə açmağa / söndürməsinə imkan verir. Bəli, çoxlu "to" lar:)

Üç tranzistorun çıxışını LED şeritlərinin rəng sancaqlarına qarışdıraraq, əsasən istədiyimiz rəng yarada bilərik!

İndi bu anlayışla bu layihənin ən böyük problemi olan webocketserver və Arduino ilə serial bağlantısına hücum edə bilərik.

Addım 2: WebSocketServer yazmaq

WebSocketServerin yazılması
WebSocketServerin yazılması

İndi, real vaxt LED şeridi nəzarətinə nail olmaq üçün məlumatları bir dəfə yeniləmədən irəli -geri ötürməyimizə imkan verən xüsusi bir veb serveri yaratmalıyıq.

Diqqət yetirin ki, əlbəttə ki, real vaxtda ünsiyyət mümkün deyil, hər zaman ən azı bir neçə milisaniyə gecikmə olacaq, ancaq insan gözü üçün real vaxt kimi xeyli əhəmiyyət kəsb edir.

Node.js -i mənim kimi istifadə edirsinizsə, buna socket.io kitabxanasından istifadə etməklə asanlıqla nail olmaq olar. Ancaq əlbəttə ki, həmişə sevdiyiniz proqramlaşdırma dilinə sadiq qala bilərsiniz.

LED şeridini hansı rəngə təyin etmək istədiyinizi və ya "LED ON" kimi vəziyyət məlumatlarını yeniləmədən iki tərəfli olaraq ötürməyimizə imkan verən bir veb yuvası bağlantısı ilə məşğul olacağıq.

Serverin sahib olması lazım olan digər vacib bir xüsusiyyəti isə sadə bir girişdir. Girişimi sadə bir istifadəçi adı və şifrə sahəsinə əsaslandım. Bu məlumatlar daha sonra serverin /giriş marşrutuna yerləşdirilir ki, bu da istifadəçi adını istifadəçilər siyahısına (.txt faylı) və ona uyğun şifrəni SHA256 şifrəli formasında müqayisə edir. Ən rahat oturacağınızda ən sevdiyiniz içki içərkən qonşularınızın LED şeridi ilə qarışmasını istəmirsiniz, elə deyilmi?

İndi serverin ürəyi, serial ünsiyyəti gəlir.

Serveriniz ardıcıl ünsiyyət qurmağı bacarmalıdır - Node.js -də "serialport" kitabxanasından istifadə edərək bir liman açmaqla buna nail olmaq olar. Ancaq əvvəlcə serveri yerləşdirən kompüterinizdəki arduino portunuzun adını təyin edin. Əməliyyat sisteminizdən asılı olaraq, limanların fərqli adları olacaq. Windows -da bu portlar "COMx" portları, linuxda isə "/dev/ttyUSBx" adlanır, burada x USB portunun sayıdır.

Addım 3: Serial əmrləri protokolu qurun

Serial əmrləri protokolu yaradın
Serial əmrləri protokolu yaradın

Yuxarıdakı şəkildə, RGB nəzarətindən məsul olan Arduino IDE kodunu görürsünüz. Bu addımın məqsədi özünüz yazan serverinizi və Arduino lövhəsini bir-birinizlə uğurla danışdırmaqdır.

Seriya portunuzu uğurla açdıqdan sonra istəklərinizi nəzərə alan lövhəyə əmrlər göndərə bilməlisiniz. Məsələn, HTML veb səhifəsindəki rəng seçicinin üstünə bir barmaq çəksək, RGB kodu sonra Arduino'ya göndərilən serverə göndərilməlidir ki, müəyyən edilmiş dəyərləri işləsin.

Jscolor istifadə etdim, dəyərləri dəyişən kimi proses məlumatlarınızı rəng seçicidən əldə etməyə imkan verən "onFineChange" adlı bir tədbirə sahib olan yüksək keyfiyyətli rəng toplama elementinin əla bir tətbiqinə sahibdirlər.

Tövsiyə: