Mundarija:
- Ta'minotlar
- 1 -qadam: Tizimni tushunish
- 2 -qadam: WebSocketServer -ni yozish
- 3 -qadam: ketma -ket buyruqlar protokoli
Video: LightMeUp! Haqiqiy vaqtda o'zaro faoliyat platformali LED chiziqli boshqaruv: 5 qadam (rasmlar bilan)
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:24
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
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
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
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:
Haqiqiy vaqtda suv sathining o'lchagichi: 6 qadam (rasmlar bilan)
Haqiqiy vaqtda quduqdagi suv sathini o'lchash moslamasi: Bu yo'riqnomada qazilgan quduqlarda foydalanish uchun arzon, real vaqtda suv sathini o'lchash moslamasi qanday qurilishi tasvirlangan. Suv sathi o'lchagichi qazilgan quduq ichida osib qo'yish, kuniga bir marta suv sathini o'lchash va ma'lumotlarni WiFi yoki uyali aloqa orqali yuborish uchun mo'ljallangan
Haqiqiy vaqtda quduq suvining harorati, o'tkazuvchanligi va suv sathi o'lchagichi: 6 qadam (rasmlar bilan)
Haqiqiy vaqtda quduq suvining harorati, o'tkazuvchanligi va suv sathi o'lchagichi: Bu yo'riqnomada harorati, elektr o'tkazuvchanligi (EC) va qazilgan quduqlardagi suv sathini kuzatish uchun arzon, real vaqtda suv hisoblagichini qanday qurish kerakligi tasvirlangan. Hisoblagich qazilgan quduq ichiga osib qo'yish, suvning haroratini o'lchash uchun mo'ljallangan, EC va
Elektron o'zaro faoliyat tikuv: 7 qadam (rasmlar bilan)
Elektron o'zaro faoliyat tikuv: Men bir necha kun oldin "Tez tikish" tanlovini ko'rdim va ilgari o'zaro to'qish bo'yicha tajribam bor edi, shuning uchun men buni Arduino haqidagi bilimim bilan birlashtirishga qaror qildim
Haqiqiy vaqtda MPU-6050/A0 Arduino va Android bilan ma'lumotlarni qayd qilish: 7 qadam (rasmlar bilan)
Arduino va Android bilan MPU-6050/A0 ma'lumotlarini real vaqt rejimida yozish: Men Arduino-ni mashinada o'rganish uchun ishlatishdan manfaatdorman. Birinchi qadam sifatida men Android qurilmasi bilan real vaqtda (yoki unga juda yaqin) ma'lumotlarni ko'rsatish va logger yaratmoqchiman. Men MPU-6050 dan akselerometr ma'lumotlarini olishni xohlayman, shuning uchun men
Haqiqiy vaqtda yuzni aniqlash: oxirigacha loyiha: 8 qadam (rasmlar bilan)
Haqiqiy vaqtda yuzni aniqlash: oxirigacha loyiha: OpenCV-ni o'rganish bo'yicha oxirgi darsimda biz Vizyonning avtomatik kuzatilishini o'rgandik. Endi biz PiCam-dan foydalanib, yuzlarni real vaqtda taniy olamiz, quyida ko'rib turganingizdek: Ushbu loyiha "Ochiq manbali kompyuter ko'rish kutubxonasi" yordamida amalga oshirildi