Съдържание:

Запали ме! Контрол на LED ленти с кръстосана платформа в реално време: 5 стъпки (със снимки)
Запали ме! Контрол на LED ленти с кръстосана платформа в реално време: 5 стъпки (със снимки)

Видео: Запали ме! Контрол на LED ленти с кръстосана платформа в реално време: 5 стъпки (със снимки)

Видео: Запали ме! Контрол на LED ленти с кръстосана платформа в реално време: 5 стъпки (със снимки)
Видео: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Юли
Anonim
Запали ме! управление в реално време с кръстосана LED лента
Запали ме! управление в реално време с кръстосана LED лента
Запали ме! управление в реално време с кръстосана LED лента
Запали ме! управление в реално време с кръстосана LED лента
Запали ме! управление в реално време с кръстосана LED лента
Запали ме! управление в реално време с кръстосана LED лента

Запали ме! е система, която аз измислих за управление на RGB LED лента в реално време, като същевременно поддържа ниска цена и висока производителност.

Сървърът е написан на Node.js и затова може да се използва за различни платформи.

В моя пример използвам Raspberry Pi 3B за дългосрочна употреба, но моя компютър с Windows за демонстрация и отстраняване на грешки.

4-пиновата лента се управлява от платка тип Arduino Nano, която изпълнява последователно дадени команди за изпращане на ШИМ сигнали до три транзистора, превключващи +12VDC в съответния цветен щифт на лентата.

LightMeUp! системата също така проверява собствената си температура, след като е над 60 ° C (140 ° F), тя включва два 12VDC компютърни вентилатора, вградени в корпуса, за да се охлади, за да подобри живота на веригата.

Друга характеристика на LightMeUp! е да осветява бутилка от Бомбай-Сапфир Джин, но това не е фокусът на тази инструкция.

Наслади се на четенето:)

Консумативи

  • Arduino Nano (или друг ATmega328 / по-висок микроконтролер)
  • Raspberry Pi 3 Модел B с инсталиран Node.js (или друг компютър)
  • 12V RGB 4-пинова LED лента
  • 12V 3A Захранване
  • Джъмперни кабели (мъжки-мъжки, ако използвате макет, разбира се)
  • Платка (по избор)
  • 2 12V DC вентилатора за компютър (по избор)
  • 3x TIP120 Darlington Transistor с радиатор (4, ако искате да включите охлаждащи вентилатори)
  • 2 светодиода за състоянието червен и зелен (по избор)
  • 6, 7K NTC резистор, базиран на температура + 6, 7K резистор (по избор)
  • USB-Mini към USB 2.0 кабел за данни (за Raspberry Pi да комуникира с Arduino)
  • USB-хъб с външно захранване (по избор, само за Raspberry Pi)

Стъпка 1: Разберете системата

Разберете системата
Разберете системата

Запали ме! се основава на много проста електронна схема.

Имаме някакъв компютър (в този случай Raspberry Pi), който комуникира последователно с нашата платка за микроконтролер. Тази платка след това изпълнява специфични серийни команди като "RGB (255, 255, 255)", които биха превърнали нашата LED лента в бяло.

След като получим трите си стойности за ЧЕРВЕНО, ЗЕЛЕНО и СИНО, необходими за нашата 4-пинова LED лента, ние изпълняваме analogWrite (пин, стойност), за да доставим нашия TIP120 транзистор с PWM сигнал.

Този ШИМ сигнал позволява на транзистора да превключи съответния цветен щифт, към който колекторът е свързан към земята, до определена степен или напълно да се включи / изключи. Да, много "до":)

Чрез смесване на трите транзисторни изхода към цветните щифтове на LED лентите можем да създадем практически всеки цвят, който желаем!

Сега с това разбиране можем да атакуваме най -голямото предизвикателство на този проект, websocketserver и неговата серийна връзка с нашия Arduino.

Стъпка 2: Писане на WebSocketServer

Писане на WebSocketServer
Писане на WebSocketServer

Сега трябва да създадем специфичен вид уеб сървър, който ни позволява да прехвърляме данни напред и назад, без да се опресняваме веднъж, за да постигнем контрол на LED лентата в реално време.

Моля, обърнете внимание, че комуникацията в реално време, разбира се, е невъзможна, винаги ще има поне няколко милисекунди забавяне, но за човешкото око това е значително като в реално време.

Това може лесно да се постигне с помощта на библиотеката socket.io, ако използвате Node.js както аз. Разбира се, винаги можете да се придържате към любимия си език за програмиране.

Ще се занимаваме с връзка с websocket, която ни позволява да прехвърляме входни данни, например на кой цвят искате да настроите LED лентата, или данни за състоянието като „LED ON“двупосочно, без да се опресняват.

Друга много важна функция, която сървърът трябва да има, но не е необходимо, е просто влизане. Базирах влизането си от просто поле за потребителско име и парола. Тези части от информацията след това се публикуват в /login маршрута на сървъра, който след това сравнява потребителското име със списък с потребители (.txt файл) и съответната му парола в нейната SHA256-криптирана форма. Не искате съседите ви да се забъркват с вашата LED лента, докато се наслаждавате на любимата си напитка на най -удобната си седалка, нали?

Сега идва сърцето на сървъра, серийната комуникация.

Вашият сървър трябва да може да комуникира серийно - в Node.js това може да се постигне чрез отваряне на порт с помощта на библиотеката "serialport". Но първо определете името на вашия arduino порт на вашия компютър, хостващ сървъра. В зависимост от вашата операционна система, портовете ще имат различни имена, напр. в Windows тези портове се наричат "COMx" портове, докато в Linux те се наричат "/dev/ttyUSBx", където x е номерът на USB порта.

Стъпка 3: Създайте протокол от серийни команди

Създайте протокол от серийни команди
Създайте протокол от серийни команди

На горната снимка виждате действителния IDE код на Arduino, отговорен за RGB контрола. Целта на тази стъпка е да накарате вашия самостоятелно написан сървър и дъската на Arduino да говорят помежду си успешно.

След като успешно отворите серийния порт, трябва да можете да изпращате команди до дъската, която се грижи за вашите желания. Например, ако нарисуваме пръст над инструмента за избор на цвят на уеб страницата HTML, RGB кодът трябва да бъде изпратен до сървъра, който след това да го изпрати до вашия Arduino, за да обработи зададените стойности.

Използвах jscolor, те имат страхотна реализация на висококачествен елемент за избор на цвят, който притежава събитие, наречено "onFineChange", което позволява вашите данни за процеса от инструмента за избор на цвят, веднага щом стойностите му се променят.

Препоръчано: