Mundarija:

LightMeUp! Haqiqiy vaqtda o'zaro faoliyat platformali LED chiziqli boshqaruv: 5 qadam (rasmlar bilan)
LightMeUp! Haqiqiy vaqtda o'zaro faoliyat platformali LED chiziqli boshqaruv: 5 qadam (rasmlar bilan)

Video: LightMeUp! Haqiqiy vaqtda o'zaro faoliyat platformali LED chiziqli boshqaruv: 5 qadam (rasmlar bilan)

Video: LightMeUp! Haqiqiy vaqtda o'zaro faoliyat platformali LED chiziqli boshqaruv: 5 qadam (rasmlar bilan)
Video: ЭТА НОЧЬ МОГЛА СТАТЬ ПОСЛЕДНЕЙ! НОЧЬ В СТАРОМ ДОМЕ С ДЕМОНОМ! заброшки заброшка 2024, Noyabr
Anonim
LightMeUp! real vaqt rejimida o'zaro faoliyat platformali LED chiziqli boshqaruv
LightMeUp! real vaqt rejimida o'zaro faoliyat platformali LED chiziqli boshqaruv
LightMeUp! real vaqt rejimida o'zaro faoliyat platformali LED chiziqli boshqaruv
LightMeUp! real vaqt rejimida o'zaro faoliyat platformali LED chiziqli boshqaruv
LightMeUp! real vaqt rejimida o'zaro faoliyat platformali LED chiziqli boshqaruv
LightMeUp! real vaqt rejimida o'zaro faoliyat platformali LED chiziqli boshqaruv

LightMeUp! RGB LED-Strip-ni real vaqtda boshqarish uchun men ixtiro qilgan tizim, bu esa narxni past va ishlashni yuqori darajada ushlab turadi.

Server Node.js-da yozilgan va shuning uchun o'zaro almashish mumkin.

Mening misolimda, men uzoq muddatli foydalanish uchun Raspberry Pi 3B dan foydalanaman, lekin mening Windows kompyuterim namoyish va disk raskadrovka uchun.

4-pinli chiziq Arduino Nano tipidagi boshqaruv paneli tomonidan boshqariladi, u ketma-ket berilgan buyruqlarni bajaradi, PWM signallarini +12VDCni chiziqning mos keladigan rangli piniga o'tkazadigan uchta tranzistorga yuboradi.

LightMeUp! Tizim, shuningdek, o'z haroratini tekshiradi, agar u 60 ° C (140 ° F) dan yuqori bo'lsa, zanjirning ishlash muddatini yaxshilash uchun o'zini sovutish uchun korpusga o'rnatilgan 12VDC ikkita kompyuter fanatini yoqadi.

LightMeUp -ning yana bir xususiyati! Bombay-Sapphire Gin shishasini yoritadi, lekin bu ko'rsatmaga e'tibor qaratmaydi.

O'qishdan zavqlaning:)

Ta'minotlar

  • Arduino Nano (yoki boshqa ATmega328 / yuqori darajali mikrokontroller)
  • Node.js o'rnatilgan Raspberry Pi 3 Model B (yoki boshqa kompyuter)
  • 12V RGB 4-pinli LED tasmasi
  • 12V 3A quvvat manbai
  • Jumper kabellari (agar siz non taxtasidan foydalansangiz, erkak-erkak)
  • Non paneli (ixtiyoriy)
  • 2 ta 12V shahar kompyuter fanatlari (ixtiyoriy)
  • 3x TIP120 Darlington tranzistorli sovutgichli (agar siz sovutish ventilyatorlarini kiritmoqchi bo'lsangiz 4)
  • 2 holatli qizil va yashil LEDlar (ixtiyoriy)
  • 6, 7K NTC haroratga asoslangan qarshilik + 6, 7K qarshilik (ixtiyoriy)
  • USB-Mini-USB 2.0 ma'lumot kabeli (Raspberry Pi Arduino bilan aloqa o'rnatishi uchun)
  • Tashqi quvvatli USB-uyasi (ixtiyoriy, faqat Raspberry Pi uchun)

1 -qadam: Tizimni tushunish

Tizimni tushunish
Tizimni tushunish

LightMeUp! juda oddiy elektron sxemalarga asoslangan.

Bizda qandaydir kompyuter bor (bu holda Raspberry Pi), u bizning mikrokontroller platamiz bilan ketma -ket aloqa o'rnatadi. Keyin bu taxta "RGB (255, 255, 255)" kabi maxsus ketma-ket buyruqlarni bajaradi, bu bizning LED chizig'imizni oq rangga aylantiradi.

4-pinli LED-Strip uchun zarur bo'lgan RED, Yashil va Ko'k uchun uchta qiymatni olgandan so'ng, biz TIP120 tranzistorimizni PWM signali bilan ta'minlash uchun analogWrite (pin, qiymat) bajaramiz.

Ushbu PWM signali tranzistorga kollektorni erga ulangan mos keladigan rangli pinni ma'lum darajaga yoki to'liq yoqish / o'chirishga imkon beradi. Ha, ko'p "ga" lar:)

Uchta tranzistorli chiqishlarni LED tasmalarining rangli pimlariga aralashtirib, biz asosan xohlagan rangni yaratishimiz mumkin!

Endi bu tushuncha yordamida biz ushbu loyihaning eng katta muammosi - veb -server va uning Arduino -ga ketma -ket ulanishiga hujum qila olamiz.

2 -qadam: WebSocketServer -ni yozish

WebSocketServer yozish
WebSocketServer yozish

Endi biz LED tasmasini boshqarishni real vaqt rejimida amalga oshirish uchun ma'lumotlarni bir marta yangilanmasdan oldinga va orqaga uzatishga imkon beradigan o'ziga xos veb -serverni yaratishimiz kerak.

E'tibor bering, real vaqt rejimida aloqa qilishning iloji yo'q, har doim kamida bir necha milisaniya kechikish bo'ladi, lekin inson nazarida bu real vaqtga o'xshaydi.

Agar siz men kabi Node.js dan foydalansangiz, bunga socket.io kutubxonasi yordamida erishish mumkin. Biroq, siz har doim sevimli dasturlash tiliga sodiq qolishingiz mumkin, albatta.

Biz tarmoqli tarmoqli ulanish bilan shug'ullanamiz, bu bizga LED tasmasini qaysi rangga o'rnatishni xohlayotganingizni yoki "LED ON" kabi holat ma'lumotlarini yangilanmasdan ikki tomonlama uzatishga imkon beradi.

Serverda bo'lishi kerak bo'lgan, lekin kerak bo'lmagan yana bir muhim xususiyat - bu oddiy kirish. Men kirishni oddiy foydalanuvchi nomi va parol maydoniga asosladim. Bu ma'lumotlar keyinchalik serverning /login marshrutiga joylashtiriladi va u foydalanuvchi nomini foydalanuvchilar ro'yxati (.txt fayli) va unga tegishli parolni SHA256-shifrlangan shaklda solishtiradi. Siz o'zingiz yoqtirgan ichimlikni eng qulay o'rindiqda yoqtirganingizda, qo'shnilaringizning LED tasmasini buzib tashlashini xohlamaysiz, to'g'rimi?

Endi serverning yuragi, ketma -ket aloqa keladi.

Sizning serveringiz ketma -ket muloqot qila olishi kerak - Node.js -da bunga "serialport" kutubxonasi yordamida port ochish orqali erishish mumkin. Lekin birinchi navbatda, server joylashgan kompyuteringizdagi arduino portingiz nomini aniqlang. Operatsion tizimingizga qarab, portlar har xil nomlarga ega bo'ladi, masalan. Windowsda bu portlar "COMx" portlari, linuxda esa "/dev/ttyUSBx" deb nomlanadi, bu erda x - USB portining raqami.

3 -qadam: ketma -ket buyruqlar protokoli

Ketma -ket buyruqlar bayonnomasini tuzing
Ketma -ket buyruqlar bayonnomasini tuzing

Yuqoridagi rasmda siz RGB boshqaruvi uchun mas'ul bo'lgan haqiqiy Arduino IDE kodini ko'rasiz. Ushbu qadamning maqsadi-o'z-o'zidan yozilgan server va Arduino kartasini bir-biri bilan muvaffaqiyatli suhbatlashish.

Siz ketma -ket portni muvaffaqiyatli ochganingizdan so'ng, sizning xohishingizga javob beradigan boshqaruv paneliga buyruqlar yuborishingiz kerak. Misol uchun, agar biz HTML veb -sahifasidagi rang tanlagich ustidan barmog'imizni tortadigan bo'lsak, RGB kodi serverga yuborilishi kerak, keyin uni Arduino -ga yuboradi, shunda u belgilangan qiymatlarni qayta ishlaydi.

Men jscolor -dan foydalandim, ularda "onFineChange" deb nomlangan tadbirga ega bo'lgan rang tanlash elementining ajoyib qo'llanilishi mavjud, bu sizning jarayon ma'lumotlarini rang tanlagichidan qiymatlari o'zgarishi bilan beradi.

Tavsiya: